WCF醫院管理系統技術解析(四)體檢登記(三)

WCF醫院管理系統技術解析(四)體檢登記(三)

體檢登記中的新增歷史病人(需要注意的是:該病人不經過掛號和處方,只是到醫院進行體檢)與醫院中的前臺登記病人不同。

對於這種情況:我的思路是:該病人先到醫院進行登記體檢,然後設置好體檢的項目,再到前臺進行收費,最後拿着收費單到體檢執行處,執行體檢處將體檢的結果以紙質形式返回給病人。

選擇好歷史病人後,歷史病人的病歷就會顯示出來效果圖爲:


2.9.8(25)

該界面用到的控件有:

   控件

          說明

從工具箱中找到對應的控件,拖動到界面,右鍵屬性可以設置控件的一些屬性樣式和事件。如顯示的文本,命名是規範

 

文本框 (TextBox)

下拉框 (ComBobox)

數據表格  (DataGridView)

按鈕(Button)

標籤 (Label)

容器(Panel)

選項卡(TabContral)


涉及到的表和關係有:


2.9.8(26)


2.9.8(27)

1門診病歷模板表(BT_OutpatientMedicalRecordsTemplateTable)

 用於記錄掛號病人的病歷和其他信息

列名

數據類型

主鍵/外鍵

說明

OutpatientMedicalRecordsTemplateID

int

      主鍵

門診病歷模板ID

TemplateNumber

nchar (50)

 

模板編號

TemplateName

nchar (50)

 

模板名稱

WriteDoctor_StaffID

int

      外鍵

撰寫醫生_員工ID

WriteTechnicalOfficesID

int

      外鍵

撰寫科室_科室ID

AS_TemplateTypeID

int

      外鍵

模板類型ID

AS_InvokingJurisdictionID

int

      外鍵

調用權限ID

WhetherOperation

bit

 

是否手術

TemplateRemarks

nchar (200)

 

模板備註

SuitCase

nchar (200)

 

適合情況

PatientActionInChief

nchar (300)

 

病人主訴

PatientMedicalHistory

nchar (300)

 

病人病史

PhysicalExaminationCase

nchar (300)

 

體檢情況

InitialDiagnosis

nchar (300)

 

初步診斷

DisposeIdea

nchar (300)

 

處理意見

WhetherEffective

bit

((1))

有效否

RegisterID

int

      外鍵

掛號ID


2:掛號表(RegisterTable)

用於對病人進行掛號候等醫生看病人的情況

列名

數據類型

主鍵/外鍵

說明

RegisterID

int

      主鍵

掛號ID

RegisterNumber

nchar (50)

 

掛號單號

PatientID

int

      外鍵

病人ID

AS_SettleAccountsWayID

int

      外鍵

結算方式ID

TechnicalOfficesID

int

      外鍵

科室ID

Doctor_StaffID

int

      外鍵

醫生_員工ID

RegisterSum

decimal (18, 2)

 

掛號金額

DiagnosisFee

decimal (18, 2)

 

診察費

CaseHistorySum

decimal (18, 2)

 

病歷金額

RegisterRemarks

nchar (50)

 

掛號備註

RegisterTime

datetime

 

掛號時間

AS_RegisterStatusID

int

      外鍵

掛號狀態ID

ClassesID

int

      外鍵

班次ID

InvoiceNumber

nchar (50)

 

發票號

RegisterOperator_StaffID

int

      外鍵

掛號人員(操作員)_員工ID

WhetherEffective

bit

((1))

有效否

NullifyRemarks

nchar (100)

 

作廢備註

NullifyOperator_StaffID

int

      外鍵

作廢操作員_員工ID



3.病人表(BT_PatientTable)

用於新增病人

      列名

數據類型

主鍵/外鍵

說明

PatientID

int

     主鍵

病人ID

PatientCardNumber

nchar (50)

 

病人卡號

PatientName

nchar (30)

 

病人名稱

RegisterCategoryID

int

    外鍵

掛號類別 ID

AS_SexID

int

    外鍵

性別ID

Birthday

datetime

 

出生年月

IDCardNo

nchar (50)

 

身份證號

AS_MaritalStatusID

int

    外鍵

婚姻情況ID

Profession

nchar (50)

 

所在職業

MemberTypeID

int

    外鍵

會員類型ID

MedicareCardNumber

nchar (50)

 

醫保卡號

AS_InsuredTypeID

int

    外鍵

參保類型ID

ContactTelephone

nchar (30)

 

聯繫電話

ContactAddress

nchar (100)

 

聯繫地址

DrugAllergyHistory

nchar (100)

 

藥物過敏史

PatientCategoryID

int

    外鍵

病人類別ID

Age

nchar (30)

 

年齡

AlphabeticBrevityCode

nchar (20)

 

拼音簡碼

WubiInCode

nchar (20)

 

五筆簡碼

ContactMobilePhone

nchar (30)

 

聯繫手機

Email

nchar (30)

 

電子郵件

Introducer

nchar (30)

 

介紹人員

PersonalTaboo

nchar (70)

 

個人忌諱

HighestReputation

nchar (70)

 

信譽上限

NowIntegral

nchar (50)

 

當前積分

Debt

decimal (18, 2)

 

尚欠金額

ExpenseSum

decimal (18, 2)

 

消費金額

LastTime

datetime

 

上次時間

LastDoctor_StaffID

int

    外鍵

上次醫生

Prescriptions

nchar (50)

 

總處方數

PatientPhotos

char (200)

 

病人照片

WhetherEffective

bit

((1))

有效否

WhetherFromPhysicalExamination

Bit

 

是否體檢



4:屬性明細表(BT_AttributeDetailsTable)

用於普通常用字段錄入

         列名

數據類型

主鍵/外鍵

說明

AttributeDetailsID

int

    主鍵

屬性明細ID

AttributeDetailsID_F

int

    外鍵

屬性明細ID_F

AttributeSetID

int

    外鍵

屬性明細ID

AttributeDetailsName

nchar (30)

 

屬性明細名稱

Number

nchar (30)

 

編號

RetrievalInCode

nchar (30)

 

檢索簡碼

BuiltInIdentifiers

bit

((0))

內置標識

Remarks

nchar (100)

 

備註

WhetherEffective

bit

((1))

有效否


5:收費單表(PW_ChargeBillID)

用於對病人的處方單或者其他收費單進行收費的憑證

        列名

數據類型

主鍵/外鍵

說明

ChargeBillID

int

       主鍵

收費單ID

ReceiptNumber

nchar (30)

 

收據號

BillNumber

nchar (30)

 

發票號

AS_ChargeStatusID

int

       外鍵

收費狀態ID

OrdonnanceID

int

       外鍵

處方單ID

Discount

decimal (18, 2)

 

折扣

CashPaySum

decimal (18, 2)

 

現金支付金額

MedicarePaySum

decimal (18, 2)

 

醫保支付金額

BlockPaySum

decimal (18, 2)

 

卡付金額

TallyPaySum

decimal (18, 2)

 

記賬支付金額

Operator_StaffID

int

       外鍵

操作員_員工ID

OperateTime

datetime

 

操作時間

WhetherCancel

bit

 

作廢否

WhetherEffective

bit

((1))

有效否

WhetherOrdonnance

Bit

 

是否經過處方


6:體檢登記病人表(PW_PhysicalExaminationChargeBillPatientTable)

用於記錄不經過處方只是體檢的病人的收費情況

            列名

數據類型

主鍵/外鍵

說明

PhysicalExaminationChargeBillPatientID

Int

    主鍵

  體檢登記病人ID

PatientID

Int

    外鍵

  病人ID

ChargeBillID

Int

    外鍵

  收費單ID

AuxiliaryItemDetailID

Int

    外鍵

   輔助項目明細ID

WhetherChargeBill

Bit

 

  是否收費


7:處方單表(PW_OrdonnanceTable

用於對體檢病人進行開處方

      列名

數據類型

主鍵/外鍵

說明

OrdonnanceID

int

    主鍵

處方單ID

OrdonnanceNumber

nchar (30)

 

處方單號

PatientID

int

    外鍵

病人ID

PrescriptionDate

datetime

 

處方時間

ClinicTechnicalOffices_TechnicalOfficesID

int

    外鍵

就診科室_科室ID

TreatmentDoctor_StaffID

int

    外鍵

就診醫生_員工ID

AS_ChargeStatusID

int

    外鍵

收費狀態ID

ChargeForPersonnel_StaffID

int

    外鍵

收費人員_員工ID

ChargeTime

datetime

 

收費時間

AS_TakeMedicineStatusID

int

    外鍵

發藥狀態ID

TakeMedicinePersonnel_StaffID

int

    外鍵

發藥人員_員工ID

TakeMedicineTime

datetime

 

發藥時間

BedID

int

    外鍵

牀位ID

WhetherEffective

bit

((1))

有效否



8:藥品表【DrugTable】

用於存放藥品

     列名

數據類型

主鍵/外鍵

說明

DrugID

int

    主鍵

藥品ID

DrugName

nchar (70)

 

藥品名稱

ChargeCategoryID

int

    外鍵

收費類別 ID

DrugEncoding

nchar (30)

 

藥品編碼

StripShapeEncoding

nchar (50)

 

條形碼

MedicineEncoding

nchar (30)

 

醫學編碼

EnglishName

nchar (50)

 

英文名稱

RatifyWritingNumber

nchar (70)

 

批准文號

AlphabeticBrevityCode

nchar (20)

 

拼音簡碼

WubiInCode

nchar (20)

 

五筆簡碼

AS_DrugAgentTypeID

int

    外鍵

藥品類型ID

AS_DoseUnitID

int

    外鍵

劑量單位ID

UnitDose

nchar (30)

 

單位劑量

DrugSpecification

nchar (50)

 

藥品規格

AS_ScatteredUnitID

int

    外鍵

散裝單位I

AS_PieceUnitID

int

    外鍵

件裝單位ID

AS_DrugTypeID

int

    外鍵

藥品類型ID

DrugPicture

char (200)

 

藥品圖片

WhetherMedicare

bit

 

是否醫保

MedicareEncoding

nchar (50)

 

醫保編碼

WhetherMedicalRecord

bit

 

在病歷中否

WhetherAddWater

bit

 

是否加水

WhetherSkinTest

bit

 

是否皮試

WhetherSpecialDrugs

bit

 

特殊藥品否

AS_DistributionWayID

int

    外鍵

經銷方式ID

AS_UserStatusID

int

    外鍵

使用狀態ID

AS_MedicareCategoryID

int

    外鍵

醫保類別 ID

ApplicableSymptoms

nchar (100)

 

適用症狀

PromotionalLogo

nchar (50)

 

促銷標識

MainEfficacy

nchar (100)

 

主要功效

WhetherIntegral

bit

 

積分否

IntegralProportion

decimal (18, 2)

 

積分比例

IntegralScores

decimal (18, 2)

 

積分分數

WhetherParticipateInInventoryAccountingManagement

bit

 

參與庫存覈算管理否

WhetherAllowTheFrontDeskToChangePriceSales

bit

 

允許前臺改價銷售否

WhetherAllowTheFrontDeskDiscountSales

bit

 

允許前臺折扣銷售否

AS_ValuationWayID

int

    外鍵

計價方式ID

EntryStaff_StaffID

int

    外鍵

錄入人員_員工ID

EntryDate

datetime

 

錄入日期

UpdateStaff_StaffID

int

    外鍵

更新人員_員工ID

UpdateDate

datetime

 

更新日期

WhetherEffective

bit

((1))

有效否

AS_DrugAgentTypeID

Int

    外鍵

藥品劑型ID

ScatteredStockPrice

decimal (18, 2

 

散裝進價

PieceStockPrice

decimal (18, 2

 

件裝進價

ScatteredPrice

decimal (18, 2)

 

散裝售價

PiecePrice

decimal (18, 2)

 

件裝售價

ScatteredMemberPrice

decimal (18, 2)

 

散會員價


 表9:藥品價格表(DrugPriceTable)

       列名

數據類型

主鍵/外鍵

說明

DrugPriceID

int - Identity

    主鍵

藥品價格ID

DrugID

int

    外鍵

藥品ID

ScatteredPrice

decimal (18, 2)

 

散裝售價

ScatteredMemberPrice

decimal (18, 2)

 

散會員價

PiecePrice

decimal (18, 2)

 

件裝售價

MedicarePrice

decimal (18, 2)

 

醫保價格

SupplierID

int

    外鍵

供貨商ID

ManufacturerName

nchar (100)

 

廠商名稱

ProductionField

nchar (100)

 

生產產地

ProductionBatchNumber

nchar (50)

 

生產批號

ProductionDate

datetime

 

生產日期

ValidityPeriod

datetime

 

有效期

WhetherEffective

bit

((1))

有效否

DataOperateRecordID

int

 

數據操作記錄ID



數據庫中涉及的儲存過程有:

--根據病人IF查找病人的病歷
	IF @Type = 'FRM_TiJianDengJi_Insert_Load_SelectBingLi'
	BEGIN
		SELECT     BT_PatientTable.PatientID, BT_PatientTable.PatientName, BT_PatientTable.AS_SexID, BT_AttributeDetailsTable.AttributeDetailsName  <span style="white-space:pre">			</span>  AS Sex, BT_OutpatientMedicalRecordsTemplateTable.PatientActionInChief, BT_OutpatientMedicalRecordsTemplateTable.PatientMedicalHi<span style="white-space:pre">			</span>, PW_RegisterTable.RegisterTime, PW_RegisterTable.RegisterID
		FROM         BT_OutpatientMedicalRecordsTemplateTable INNER JOIN
                      PW_RegisterTable ON BT_OutpatientMedicalRecordsTemplateTable.RegisterID = PW_RegisterTable.RegisterID INNER JOIN
                      BT_PatientTable ON PW_RegisterTable.PatientID = BT_PatientTable.PatientID INNER JOIN
                      BT_AttributeDetailsTable ON BT_PatientTable.AS_SexID = BT_AttributeDetailsTable.AttributeDetailsID   
        WHERE        BT_PatientTable.PatientID = @PatientID             
	END

BLL中涉及到的對應方法有:

#region 查詢病人的病歷
        [OperationContract]
        public DataSet FRM_TiJianDengJi_Insert_Load_SelectBingLi(int intPatientID)//獲取界面中選擇的歷史病人
        {
            SqlParameter[] mySqlParameters = {
                                             new SqlParameter("@Type",SqlDbType .Char ),
                                             new SqlParameter ("@PatientID",SqlDbType.Char),//根據病人ID查找數據庫中的病人病史
                                             };
            mySqlParameters[0].Value = "FRM_TiJianDengJi_Insert_Load_SelectBingLi";
            mySqlParameters[1].Value = intPatientID;
            DataTable dt = myDALMethod.QueryDataTable("TiJianZhongXin_TiJianDengJi_Patient_Main", mySqlParameters);
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            return ds;
        }
        #endregion

UIL中涉及到的代碼有:

// 根據病人ID把查詢到的病人信息綁定到對應的控件中
                DataTable dtMedicalHistory = myFRM_TiJianDengJi_Patient_MainClient.FRM_TiJianDengJi_Insert_Load_SelectBingLi(intPatienID).Tables[0];
                if (dtMedicalHistory.Rows.Count == 0)
                { }
                else
                {
                    string[] strMedicalHistory = new string[dtMedicalHistory.Rows.Count];//聲明一個字符串的數組,長度爲dtMedicalHistory中行的集合
                    string strBingLi = ""; int intCount = 0;
                    for (int i = 0; i < dtMedicalHistory.Rows.Count; i++)//遍歷查詢出來的病人病歷信息表
                    {
                        intCount = i + 1;//累加病人看病的次數
                        //數組成員獲取病人的看病次數和病歷
                        strMedicalHistory[i] = "第" + intCount + "次到醫院病史情況:" + "\t" + dtMedicalHistory.Rows[i]["PatientMedicalHistory"].ToString().Trim() + "\r\n";
                        strBingLi +=  strMedicalHistory[i] + "\r\n";//累加數組成員
                    }
                    txt_CaseHistory.Text =  strBingLi;//把病人的看病情況進行賦值給病歷文本框
                }

歷史病人的賬戶流水效果圖如下: 


2.9.8(28)

圖解:通過圖像可以看出處方單號中的第一條數據的單號爲“無”,那麼這是怎麼回事?那是因爲該條單據是病人到醫院只是做了體檢項目的收費,並不經過處方涉及到其他的收費項目,所以她的處方單號爲“無”,但是第二條數據就不同了,那條數據她是經過處方單開的收費項目,

涉及到的表和關係有:

經過處方單的


2.9.8(29)

2.9.8(圖30)

不經過處方單的:


2.9.8(31)


2.9.8(32)

涉及到的儲存過程有:

-根據病人ID查找處方ID
	IF @Type = 'FRM_TiJianBingRen_Insert_SelectOrdonnanceIDOnPatientID'
	BEGIN
	--經過處方
		SELECT     PW_OrdonnanceTable.PatientID, PW_OrdonnanceTable.OrdonnanceID, RTRIM(PW_OrdonnanceTable.OrdonnanceNumber) AS OrdonnanceNumber, RTRIM(BT_PatientTable.PatientName) 
                      AS PatientName, PW_OrdonnanceTable.PrescriptionDate, BT_PatientTable.AS_SexID, rtrim(BT_AttributeDetailsTable.AttributeDetailsName) as AttributeDetailsName ,
                      rtrim(BT_PatientTable.PatientCardNumber ) as PatientCardNumber,RTRIM(0) AS ChargeBillID
		FROM         BT_PatientTable INNER JOIN
                      PW_OrdonnanceTable ON BT_PatientTable.PatientID = PW_OrdonnanceTable.PatientID INNER JOIN
                      BT_AttributeDetailsTable ON BT_PatientTable.AS_SexID = BT_AttributeDetailsTable.AttributeDetailsID
        where  BT_PatientTable.PatientID = @PatientID
        UNION 
        --不經過處方
		 SELECT DISTINCT 
                      BT_PatientTable.PatientID, RTRIM(0) AS OrdonnanceID, RTRIM('無') AS OrdonnanceNumber, BT_PatientTable.PatientName, PW_ChargeBillTable.OperateTime AS PrescriptionDate, 
                      BT_PatientTable.AS_SexID, RTRIM(BT_AttributeDetailsTable.AttributeDetailsName) AS AttributeDetailsName, RTRIM(BT_PatientTable.PatientCardNumber) AS PatientCardNumber, 
                      PW_PhysicalExaminationChargeBillPatientTable.ChargeBillID
		FROM         PW_ChargeBillTable INNER JOIN
                      PW_PhysicalExaminationChargeBillPatientTable ON PW_ChargeBillTable.ChargeBillID = PW_PhysicalExaminationChargeBillPatientTable.ChargeBillID INNER JOIN
                      BT_PatientTable ON PW_PhysicalExaminationChargeBillPatientTable.PatientID = BT_PatientTable.PatientID INNER JOIN
                      BT_AttributeDetailsTable ON BT_PatientTable.AS_SexID = BT_AttributeDetailsTable.AttributeDetailsID 
         WHERE  BT_PatientTable.PatientID = @PatientID
     END

BLL中涉及的方法有:

#region 根據病人ID查找處方ID
        [OperationContract]
        public DataSet FRM_TiJianBingRen_Insert_SelectOrdonnanceIDOnPatientID(int intPatientID)//獲取界面中傳入的病人ID
        {
            SqlParameter[] mySqlParameters = {
                                             new SqlParameter("@Type",SqlDbType .Char ),
                                             new SqlParameter ("@PatientID",SqlDbType.Char),//根據界面中傳入的病人ID 查詢數據庫病人的信息
                                             };
            mySqlParameters[0].Value = "FRM_TiJianBingRen_Insert_SelectOrdonnanceIDOnPatientID";
            mySqlParameters[1].Value = intPatientID;
            DataTable dt = myDALMethod.QueryDataTable("TiJianZhongXin_TiJianDengJi_Patient_Main", mySqlParameters);
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            return ds;
        }
        #endregion

UIL中涉及到的代碼有:

dgv_PatientOrdonnance.AutoGenerateColumns = false;//設置dgv_PatientOrdonnance中的列不可改變性
                dgv_PatientOrdonnance.DataSource = myFRM_TiJianDengJi_Patient_MainClient.FRM_TiJianBingRen_Insert_SelectOrdonnanceIDOnPatientID(intPatienID).Tables[0];//把從數據庫中查詢出來的病人信息綁定到數據表格上
          

點擊收費詳細信息 能查看該病人的詳細收費項目:

效果如圖所示:


2.9.8(33)

涉及到的表和關係有:


2.9.8(34

涉及到的儲存過程有:

進過處方的體檢、化驗、治療等收費信息

-查詢病人每個處方以前的各種收費項目
	IF @Type = 'FRM_TiJianDengJi_Insert_Load_SelectGeZhongShouFeiXiangMu'
	BEGIN
		SELECT     LTRIM(RTRIM(PW_OrdonnanceDetailTable.TotalDrug)) AS TotalDrug, 
				   LTRIM(RTRIM(BT_DrugTable.DrugSpecification)) AS DrugSpecification, 
			LTRIM(RTRIM(1))AS IssueMedicineUnit, --用藥單位                      
			LTRIM(RTRIM(BT_DrugTable.WhetherMedicare)) AS WhetherMedicare, 
			LTRIM(RTRIM(BT_DrugPriceTable.MedicarePrice)) AS MedicarePrice, 
			LTRIM(RTRIM(PW_OrdonnanceDetailTable.DrugID)) AS AllItemID, 
			LTRIM(RTRIM(PW_OrdonnanceDetailTable.OrdonnanceDetailEncoding)) AS AllICoding, 
			LTRIM(RTRIM(BT_DrugTable.DrugName)) AS AllIName,
			isnull(BT_DrugPriceTable.ScatteredPrice , 0) AS  AllIPrice
		FROM         BT_DrugPriceTable RIGHT OUTER JOIN
				  BT_DrugTable ON BT_DrugPriceTable.DrugID = BT_DrugTable.DrugID RIGHT OUTER JOIN
				  PW_OrdonnanceDetailTable ON BT_DrugTable.DrugID = PW_OrdonnanceDetailTable.DrugID
		WHERE    PW_OrdonnanceDetailTable.OrdonnanceID =@OrdonnanceID
	union
--查詢輔助檢查項目(體檢項目)	
		SELECT
			LTRIM(RTRIM(1)) AS TotalDrug, 
			LTRIM(RTRIM(0)) AS DrugSpecification, 
			LTRIM(RTRIM(0)) AS IssueMedicineUnit, 
			LTRIM(RTRIM(0))  AS WhetherMedicare,		
			LTRIM(RTRIM(0))  AS MedicarePrice,
			LTRIM(RTRIM(PW_AuxiliaryItemDetailTable.AllItemID)) AS AllItemID,
			LTRIM(RTRIM(BT_ItemTable.ItemCoding)) AS AllICoding,  
			LTRIM(RTRIM(BT_ItemTable.ItemName)) AS AllIName,
			isnull(BT_ItemTable.ProjectPrice,0) AS AllIPrice
		FROM         PW_AuxiliaryItemDetailTable INNER JOIN
			  BT_ItemTable ON PW_AuxiliaryItemDetailTable.AllItemID = BT_ItemTable.ItemID
			  WHERE PW_AuxiliaryItemDetailTable.OrdonnanceID =@OrdonnanceID AND PW_AuxiliaryItemDetailTable.ItemCategoryID =1 
	
	union
--化驗項目
		SELECT 
			LTRIM(RTRIM(1)) AS TotalDrug, 
			LTRIM(RTRIM(0)) AS DrugSpecification, 
			LTRIM(RTRIM(0)) AS IssueMedicineUnit, 
			LTRIM(RTRIM(0))  AS WhetherMedicare,		
			LTRIM(RTRIM(0))  AS MedicarePrice,
			LTRIM(RTRIM(PW_AuxiliaryItemDetailTable.AllItemID)) AS AllItemID, 
			LTRIM(RTRIM(BT_AssayItemsTable.AssayItemsNumber)) AS AllICoding, 
			LTRIM(RTRIM(BT_AssayItemsTable.ChineseName)) AS AllIName, 
			isnull(BT_AssayItemsTable.AssayItemsPrice,0) AS AllIPrice
		FROM         PW_AuxiliaryItemDetailTable INNER JOIN
				  BT_AssayItemsTable ON PW_AuxiliaryItemDetailTable.AllItemID = BT_AssayItemsTable.AssayItemsID
		WHERE     PW_AuxiliaryItemDetailTable.OrdonnanceID = @OrdonnanceID AND PW_AuxiliaryItemDetailTable.ItemCategoryID =2 
	
--治療項目
	union
		SELECT     LTRIM(RTRIM(BT_TreatmentItemsTable.TotalInvestment)) AS TotalDrug, 
			LTRIM(RTRIM(0)) AS DrugSpecification, 
			LTRIM(RTRIM(0)) AS IssueMedicineUnit, 
			  LTRIM(RTRIM(BT_TreatmentItemsTable.WhetherMedicare)) AS WhetherMedicare, 
			  LTRIM(RTRIM(BT_TreatmentItemsTable.MedicarePricing)) AS MedicarePrice, 
			  LTRIM(RTRIM(PW_AuxiliaryItemDetailTable.AllItemID)) AS AllItemID, 
			  LTRIM(RTRIM(BT_TreatmentItemsTable.ItemNumber)) AS AllICoding, 
			  LTRIM(RTRIM(BT_TreatmentItemsTable.TreatmentItemName)) AS AllIName, 
			  LTRIM(RTRIM(BT_TreatmentItemsTable.GeneralPricing)) AS AllIPrice
		FROM         PW_AuxiliaryItemDetailTable LEFT OUTER JOIN
			  BT_TreatmentItemsTable ON PW_AuxiliaryItemDetailTable.AllItemID = BT_TreatmentItemsTable.TreatmentItemID	
      WHERE     PW_AuxiliaryItemDetailTable.OrdonnanceID = @OrdonnanceID AND PW_AuxiliaryItemDetailTable.ItemCategoryID =3
	
--體檢套餐
	union
		SELECT 
			LTRIM(RTRIM(1)) AS TotalDrug, 
			LTRIM(RTRIM(0)) AS DrugSpecification, 
			LTRIM(RTRIM(0)) AS IssueMedicineUnit, 
			LTRIM(RTRIM(0))  AS WhetherMedicare,		
			LTRIM(RTRIM(0))  AS MedicarePrice,
			LTRIM(RTRIM(PW_AuxiliaryItemDetailTable.AllItemID)) AS AllItemID, 
			LTRIM(RTRIM(BT_PhysicalExaminationSetMealTable.SetMealNumber)) AS AllICoding, 
			LTRIM(RTRIM(BT_PhysicalExaminationSetMealTable.PhysicalExaminationSetMealName)) AS AllIName, 
			isnull(BT_PhysicalExaminationSetMealTable.CashPrice,0) AS AllIPrice
		FROM         PW_AuxiliaryItemDetailTable INNER JOIN
						  BT_PhysicalExaminationSetMealTable ON PW_AuxiliaryItemDetailTable.AllItemID = 
						  BT_PhysicalExaminationSetMealTable.PhysicalExaminationSetMealID
		WHERE     PW_AuxiliaryItemDetailTable.OrdonnanceID = @OrdonnanceID AND PW_AuxiliaryItemDetailTable.ItemCategoryID =4
	
--化驗組合
	union
		SELECT 
			LTRIM(RTRIM(1)) AS TotalDrug, 
			LTRIM(RTRIM(0)) AS DrugSpecification, 
			LTRIM(RTRIM(0)) AS IssueMedicineUnit, 
			LTRIM(RTRIM(0))  AS WhetherMedicare,		
			LTRIM(RTRIM(0))  AS MedicarePrice,
			LTRIM(RTRIM(PW_AuxiliaryItemDetailTable.AllItemID)) AS AllItemID, 
			LTRIM(RTRIM(BT_AssayInspectCombinationTable.CombinationNumber)) AS AllICoding, 
			LTRIM(RTRIM(BT_AssayInspectCombinationTable.CombinationName)) AS AllIName, 
			isnull(BT_AssayInspectCombinationTable.Price,0) AS AllIPrice
		FROM         PW_AuxiliaryItemDetailTable INNER JOIN
			  BT_AssayInspectCombinationTable ON PW_AuxiliaryItemDetailTable.AllItemID = BT_AssayInspectCombinationTable.AssayInspectCombinationID
		WHERE     PW_AuxiliaryItemDetailTable.OrdonnanceID = @OrdonnanceID AND PW_AuxiliaryItemDetailTable.ItemCategoryID =5 
	END

不經過處方的體檢項目:

--不經過處方的體檢項目
	IF @Type = 'FRM_TiJianDengJi_Insert_Load_SelectGeZhongShouFeiXiangMuNotOrdonnance'
	BEGIN
		SELECT     LTRIM(RTRIM(1)) AS TotalDrug, LTRIM(RTRIM(0)) AS DrugSpecification, LTRIM(RTRIM(0)) AS IssueMedicineUnit, LTRIM(RTRIM(0)) AS WhetherMedicare, LTRIM(RTRIM(0)) AS MedicarePrice, 
                      LTRIM(RTRIM(PW_AuxiliaryItemDetailTable.AllItemID)) AS AllItemID, LTRIM(RTRIM(BT_ItemTable.ItemCoding)) AS AllICoding, LTRIM(RTRIM(BT_ItemTable.ItemName)) AS AllIName, 
                      ISNULL(BT_ItemTable.ProjectPrice, 0) AS AllIPrice, PW_ChargeBillTable.ChargeBillID
		FROM         PW_AuxiliaryItemDetailTable INNER JOIN
                      BT_ItemTable ON PW_AuxiliaryItemDetailTable.AllItemID = BT_ItemTable.ItemID INNER JOIN
                      PW_PhysicalExaminationChargeBillPatientTable ON PW_AuxiliaryItemDetailTable.AuxiliaryItemDetailID = PW_PhysicalExaminationChargeBillPatientTable.AuxiliaryItemDetailID INNER JOIN
                      PW_ChargeBillTable ON PW_PhysicalExaminationChargeBillPatientTable.ChargeBillID = PW_ChargeBillTable.ChargeBillID
		WHERE     PW_ChargeBillTable.ChargeBillID = @ChargeBillID AND PW_AuxiliaryItemDetailTable.ItemCategoryID = 1 AND PW_AuxiliaryItemDetailTable.WhetherOrdonnance = 0
	END

BLL中涉及到的方法有:

經過處方的:

#region 查詢病人每個處方以前的各種收費項目
        [OperationContract]
        public DataSet FRM_TiJianDengJi_Insert_Load_SelectGeZhongShouFeiXiangMu(int intOrdonnanceID)//獲取界面點擊收費詳細信息中傳入的處方ID
        {
            SqlParameter[] mySqlParameters = {
                                             new SqlParameter("@Type",SqlDbType .Char ),
                                             new SqlParameter ("@OrdonnanceID",SqlDbType.Char),///根據界面點擊收費詳細信息中傳入的處方ID查詢數據庫中對應的收費項目

                                             };
            mySqlParameters[0].Value = "FRM_TiJianDengJi_Insert_Load_SelectGeZhongShouFeiXiangMu";
            mySqlParameters[1].Value = intOrdonnanceID;
            DataTable dt = myDALMethod.QueryDataTable("TiJianZhongXin_TiJianDengJi_Patient_Main", mySqlParameters);
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            return ds;
        }
        #endregion

不經過處方的:

#region 不經過處方的體檢項目
        [OperationContract]
        public DataSet FRM_TiJianDengJi_Insert_Load_SelectGeZhongShouFeiXiangMuNotOrdonnance(int intChargeBillID)//獲取點擊界面詳細收費項目傳入的收費單ID
        {
            SqlParameter[] mySqlParameters = {
                                             new SqlParameter("@Type",SqlDbType .Char ),
                                             new SqlParameter ("@ChargeBillID",SqlDbType.Char),//根據收費單ID查詢數據庫中某病人的詳細收費項目
                                             };
            mySqlParameters[0].Value = "FRM_TiJianDengJi_Insert_Load_SelectGeZhongShouFeiXiangMuNotOrdonnance";
            mySqlParameters[1].Value = intChargeBillID;
            DataTable dt = myDALMethod.QueryDataTable("TiJianZhongXin_TiJianDengJi_Patient_Main", mySqlParameters);
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            return ds;
        }
        #endregion

UIL中涉及到的方法有

 private void dgv_PatientOrdonnance_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            //獲取處方ID
             int intOrdonnanceID =Convert .ToInt32 ( dgv_PatientOrdonnance.CurrentRow .Cells["OrdonnanceID"].Value .ToString()); 
            if (e.ColumnIndex == 9)//點擊收費詳細信息
            {
                pnl_ShouFeiXiangMu.Visible = true;//Panle容器顯示出來
                if (intOrdonnanceID == 0)//如何處方ID爲0
                {
                    //獲取收費單ID
                    int intChargeBillID = Convert.ToInt32(dgv_PatientOrdonnance.CurrentRow.Cells["收費單ID"].Value);
                    //根據收費單ID查詢收費項目信息
                    dgv_ChargeBillItem.DataSource = myFRM_TiJianDengJi_Patient_MainClient.FRM_TiJianDengJi_Insert_Load_SelectGeZhongShouFeiXiangMuNotOrdonnance(intChargeBillID).Tables[0];
                }
                else
                {
                    //根據處方單查詢收費項目信息
                    dgv_ChargeBillItem.DataSource = myFRM_TiJianDengJi_Patient_MainClient.FRM_TiJianDengJi_Insert_Load_SelectGeZhongShouFeiXiangMu(intOrdonnanceID).Tables[0];
                }
            }
        }

選擇歷史病人進行點擊選擇歷史病人後,其界面效果圖如下:


2.9.8(35)

點擊保存,即讓該歷史病人進入體檢中心。


2.9.8(36)

解析:因爲該病人在醫院上有過看病記錄,所以不會新增該病人,只是在原有基礎上把數據庫中的“WhetherFromPhysicalExamination”的值改爲“false”,就可以了

數據庫中的儲存過程:

--修改病人中的是否體檢
	IF @Type = 'FRM_TiJianBingRen_Main_Load_UpdateWhetherFromPhysicalExamination'
	BEGIN
		UPDATE BT_PatientTable
		SET WhetherFromPhysicalExamination = 0
		WHERE PatientID = @PatientID
	END

BLL中涉及到的方法有:

#region 修改病人中的是否體檢
        [OperationContract]
        public int FRM_TiJianBingRen_Main_Load_UpdateWhetherFromPhysicalExamination(int intPatientID)//獲取界面傳入的病人ID 
        {
            SqlParameter[] mySqlParameters = {
                                             new SqlParameter("@Type",SqlDbType .Char ),
                                             new SqlParameter ("@PatientID",SqlDbType.Char),//根據界面中傳入的病人ID查詢數據庫中的病人信息
                                             };
            mySqlParameters[0].Value = "FRM_TiJianBingRen_Main_Load_UpdateWhetherFromPhysicalExamination";
            mySqlParameters[1].Value = intPatientID;
           return  myDALMethod.UpdateData ("TiJianZhongXin_TiJianDengJi_Patient_Main", mySqlParameters); 
        }
        #endregion

UIL中涉及到的代碼:

 if (myFRM_TiJianDengJi_Patient_MainClient.FRM_TiJianBingRen_Main_Load_UpdateWhetherFromPhysicalExamination(intPatientID) > 0)//如果病人的是否體檢爲0,就///保存成功,否則保存失敗
                {
                    MessageBox.Show("保存成功!");
                }
                else
                {
                    MessageBox.Show("保存失敗!");
                }
這樣就可以對歷史病人再次體檢進行設置體檢項目了。


注:此文章只供學習參考,禁止用於商業用途。否則後果自負

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章