实现医生工作站的处方模板功能的代码(十一)
实现医生工作站的处方模板功能的代码(十一)
3.2.7处方模板
处方模板这个模块实现医生根据病人病历来开药方的功能,点击3.2.2.1(图1)”新增“按钮弹出医生开取药方的界面,供医生开药;同样点击3.2.2.1(图2)” 修改“按钮弹出医生修改处方的界面,供医生对错误的处方单进行修改;还可以根据处方编号、病人名称等进行多条件查询处方单。点击每一条处方单多可以在处方明细中查询相对应的药品信息。
3.2.7.1处方模板主界面
主界面截图:
3.2.7.1(图1)
从界面上可以看到我们这里用到的控件有:
控件名称 |
说明 |
组装箱控件groupBox |
第一要设置每个控件的Text,第二设置控件Name;不同的是dataGridView右键进行编辑列。 |
文本框控件textBox |
|
下拉框控件comboBox |
|
按钮控件button |
|
表格控件dataGridView |
查询功能实现:
第一步:数据库
1、 表与关系
3.2.7.1(图2)
表1:处方模板表(BT_PrescriptionTemplateTable)
列名 |
数据类型 |
主键/外键 |
说明 |
PrescriptionTemplateID |
int - Identity |
主键 |
处方模板ID |
TemplateName |
nchar (50) |
模板名称 |
|
Doctor_StaffID |
int |
外键 |
医生名称_员工ID |
AS_TemplateTypeID |
int |
外键 |
模板类型ID |
AS_PrescriptionTypeID |
int |
外键 |
处方类型ID |
TechnicalOfficesID |
int |
外键 |
科室名称_科室ID |
AS_TemplateSortID |
int |
外键 |
模板分类ID |
PrescriptionRemarks |
nchar (300) |
处方备注 |
|
PrescriptionDiagnosis |
nchar (300) |
处方诊断 |
|
WhetherEffective |
bit |
有效否 |
表2:处方模板明细表(BT_PrescriptionTemplateDetailTable)
列名 |
数据类型 |
主键/外键 |
说明 |
PrescriptionTemplateDetailID |
int - Identity |
主键 |
处方模板明细ID |
PrescriptionTemplateID |
int |
外键 |
处方模板ID |
DrugID |
int |
外键 |
药品ID |
ChineseMedicineNumberOfAgent |
nchar (30) |
中药剂数 |
|
EachAgentDosage |
nchar (20) |
每剂用量 |
|
AS_DrugUseMannerID |
int |
外键 |
用药方式ID |
AS_DDDSID |
int |
外键 |
用药频率 |
DispensingVolume |
nchar (50) |
发药总量 |
|
Remarks |
nchar (200) |
备注 |
|
WhetherEffective |
bit |
有效否 |
表3:药品表(BT_OutpatientMedicalRecordsTemplateTable)
列名 |
数据类型 |
主键/外键 |
说明 |
OutpatientMedicalRecordsTemplateID |
int - Identity |
主键 |
门诊病历模板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 |
有效否 |
|
RegisterID |
int |
外键 |
挂号ID |
表4:员工表(BT_StaffTable)
列名 |
数据类型 |
主键/外键 |
说明 |
StaffID |
int - Identity |
主键 |
员工ID |
TechnicalOfficesID |
int |
外键 |
科室ID |
StaffNumber |
nchar (20) |
员工编号 |
|
StaffName |
nchar (20) |
员工名称 |
|
WhetherOperator |
bit |
操作员否 |
|
AlphabeticBrevityCode |
nchar (20) |
拼音简码 |
|
WubiInCode |
nchar (20) |
五笔简码 |
|
AS_StaffPositionID |
int |
外键 |
员工职务ID |
AS_MedicalTitlesID |
int |
外键 |
医务职称ID |
AS_WorkingStatusID |
int |
外键 |
工作状态ID |
AS_SexID |
int |
外键 |
性别ID |
ContactTelephone |
nchar (50) |
联系电话 |
|
WhetherBuiltIn |
bit |
内置否 |
|
RegisteredSum |
decimal (18, 2) |
挂号金额 |
|
AS_IntoTheHobbyID |
int |
外键 |
录入爱好ID |
StaffPhotos |
char (200) |
员工照片 |
|
|
nchar (70) |
电子邮件 |
|
IDCardNo |
nchar (100) |
身份证号 |
|
ContactAddress |
nchar (100) |
联系地址 |
|
Birthday |
datetime |
出生日期 |
|
WhetherBirthdayRemind |
bit |
生日提醒否 |
|
WorkDate |
datetime |
工作日期 |
|
TerminationDate |
datetime |
离职日期 |
|
AS_OfficialAcademicCredentialsID |
int |
外键 |
最高学历ID |
StudySubject |
nchar (70) |
学习专业 |
|
AS_PoliticsStatusID |
int |
外键 |
政治面貌ID |
Remarks |
nchar (100) |
员工备注 |
|
WhetherEffective |
bit |
有效否 |
表5:科室表(BT_TechnicalOfficesTable)
列名 |
数据类型 |
主键/外键 |
说明 |
TechnicalOfficesID |
int - Identity |
主键 |
科室ID |
DepartmentID |
int |
外键 |
部门ID |
TechnicalOfficesNumber |
nchar (20) |
科室编号 |
|
TechnicalOfficesName |
nchar (20) |
科室名称 |
|
RegisterSum |
decimal (18, 2) |
挂号金额 |
|
WhetherAllowRegister |
bit |
允许挂号否 |
|
AlphabeticBrevityCode |
nchar (20) |
拼音简码 |
|
WubiInCode |
nchar (20) |
五笔简码 |
|
TechnicalOfficesLocation |
nchar (100) |
科室位置 |
|
Remarks |
nchar (200) |
备注 |
|
WhetherEffective |
bit |
有效否 |
表6:属性明细表(BT_AttributeDetailsTable)
列名 |
数据类型 |
主键/外键 |
说明 |
AttributeDetailsID |
int - Identity |
主键 |
属性明细ID |
AttributeDetailsID_F |
int |
外键 |
属性明细ID_父 |
AttributeSetID |
int |
外键 |
属性集合ID |
AttributeDetailsName |
nchar (30) |
属性明细名称 |
|
Number |
nchar (30) |
编号 |
|
RetrievalInCode |
nchar (30) |
检索简码 |
|
BuiltInIdentifiers |
bit |
内置标识 |
|
Remarks |
nchar (100) |
备注 |
|
WhetherEffective |
bit |
有效否 |
功能代码
查询处方模板
(1)、存储过程代码:
--查询处方信息
IF(@Type='FRM_ChuFangMuBan_Load_ChaXunChuFangXinXi')BEGINSELECT LTRIM(RTRIM(BT_PrescriptionTemplateTable.PrescriptionTemplateID)) AS PrescriptionTemplateID, LTRIM(RTRIM(BT_PrescriptionTemplateTable.TemplateName)) AS TemplateName, LTRIM(RTRIM(BT_StaffTable.StaffName)) AS StaffName, LTRIM(RTRIM(BT_TechnicalOfficesTable.TechnicalOfficesName)) AS TechnicalOfficesName, LTRIM(RTRIM(BT_PrescriptionTemplateTable.PrescriptionRemarks)) AS PrescriptionRemarks, LTRIM(RTRIM(BT_PrescriptionTemplateTable.PrescriptionDiagnosis)) AS PrescriptionDiagnosis, LTRIM(RTRIM(BT_PrescriptionTemplateTable.AS_TemplateTypeID)) AS AS_TemplateTypeID, LTRIM(RTRIM(BT_PrescriptionTemplateTable.AS_PrescriptionTypeID)) AS AS_PrescriptionTypeID, LTRIM(RTRIM(BT_PrescriptionTemplateTable.TechnicalOfficesID)) AS TechnicalOfficesID, LTRIM(RTRIM(BT_AttributeDetailsTable.AttributeDetailsName)) AS AttributeDetailsName, LTRIM(RTRIM(BT_AttributeDetailsTable_1.AttributeDetailsName)) AS PrescriptionType, LTRIM(RTRIM(BT_AttributeDetailsTable_2.AttributeDetailsName)) AS TemplateSort, LTRIM(RTRIM(BT_PrescriptionTemplateTable.Doctor_StaffID)) AS Doctor_StaffID, LTRIM(RTRIM(BT_PrescriptionTemplateTable.AS_TemplateSortID))AS AS_TemplateSortIDFROM BT_AttributeDetailsTable AS BT_AttributeDetailsTable_2 INNER JOINBT_AttributeDetailsTable INNER JOINBT_StaffTable INNER JOINBT_PrescriptionTemplateTable ON BT_StaffTable.StaffID = BT_PrescriptionTemplateTable.Doctor_StaffID ON BT_AttributeDetailsTable.AttributeDetailsID = BT_PrescriptionTemplateTable.AS_TemplateTypeID INNER JOINBT_AttributeDetailsTable AS BT_AttributeDetailsTable_1 ON BT_PrescriptionTemplateTable.AS_PrescriptionTypeID = BT_AttributeDetailsTable_1.AttributeDetailsID INNER JOINBT_TechnicalOfficesTable ON BT_PrescriptionTemplateTable.TechnicalOfficesID = BT_TechnicalOfficesTable.TechnicalOfficesID ON BT_AttributeDetailsTable_2.AttributeDetailsID = BT_PrescriptionTemplateTable.AS_TemplateSortIDEND
--查询处方明细
IF(@Type='FRM_ChuFangMuBan_Load_ChaXunChuFangMingXi')BEGINSELECT LTRIM(RTRIM(BT_PrescriptionTemplateDetailTable.PrescriptionTemplateDetailID)) AS PrescriptionTemplateDetailID, LTRIM(RTRIM(BT_PrescriptionTemplateDetailTable.PrescriptionTemplateID)) AS PrescriptionTemplateID, LTRIM(RTRIM(BT_DrugTable.DrugEncoding)) AS DrugEncoding, LTRIM(RTRIM(BT_DrugTable.DrugName)) AS DrugName, LTRIM(RTRIM(BT_DrugTable.DrugSpecification))AS DrugSpecification, LTRIM(RTRIM(BT_AttributeDetailsTable.AttributeDetailsName)) AS DrugUseManner, LTRIM(RTRIM(BT_AttributeDetailsTable_1.AttributeDetailsName)) AS DDDS, LTRIM(RTRIM(BT_PrescriptionTemplateDetailTable.Remarks)) AS Remarks, LTRIM(RTRIM(BT_PrescriptionTemplateDetailTable.ChineseMedicineNumberOfAgent))AS ChineseMedicineNumberOfAgent, LTRIM(RTRIM(BT_PrescriptionTemplateDetailTable.EachAgentDosage)) AS EachAgentDosage, LTRIM(RTRIM(BT_PrescriptionTemplateDetailTable.DispensingVolume)) AS DispensingVolume, LTRIM(RTRIM(BT_PrescriptionTemplateDetailTable.AS_DrugUseMannerID))AS AS_DrugUseMannerID, LTRIM(RTRIM(BT_PrescriptionTemplateDetailTable.AS_DDDSID)) AS AS_DDDSID, LTRIM(RTRIM(BT_PrescriptionTemplateDetailTable.DrugID)) AS DrugID, LTRIM(RTRIM(BT_DrugTable.DrugTaboo)) AS DrugTabooFROM BT_AttributeDetailsTable INNER JOINBT_PrescriptionTemplateDetailTable INNER JOINBT_DrugTable ON BT_PrescriptionTemplateDetailTable.DrugID = BT_DrugTable.DrugID ON BT_AttributeDetailsTable.AttributeDetailsID = BT_PrescriptionTemplateDetailTable.AS_DrugUseMannerID INNER JOINBT_AttributeDetailsTable AS BT_AttributeDetailsTable_1 ON BT_PrescriptionTemplateDetailTable.AS_DDDSID = BT_AttributeDetailsTable_1.AttributeDetailsIDWHERE BT_PrescriptionTemplateDetailTable.PrescriptionTemplateID =@PrescriptionTemplateIDEND
(2)、逻辑层代码:
[OperationContract]#region 查询处方信息public DataSet FRM_ChuFangMuBan_Load_ChaXunChuFangXinXi(){SqlParameter[] SQLCMDpas ={new SqlParameter ("@Type",SqlDbType.Char),};SQLCMDpas[0].Value = "FRM_ChuFangMuBan_Load_ChaXunChuFangXinXi";DataTable myDataTable = myDALMethod.QueryDataTable("YiShengGongZuoZhan_FRM_ChuFangMuBan", SQLCMDpas);DataSet myDataSet = new DataSet();myDataSet.Tables.Add(myDataTable);return myDataSet;}#endregion[OperationContract]#region 查询处方明细public DataSet FRM_ChuFangMuBan_Load_ChaXunChuFangMingXi(int PrescriptionTemplateID){SqlParameter[] SQLCMDpas ={new SqlParameter ("@Type",SqlDbType.Char),new SqlParameter ("@PrescriptionTemplateID",SqlDbType.Int),};SQLCMDpas[0].Value = "FRM_ChuFangMuBan_Load_ChaXunChuFangMingXi";SQLCMDpas[1].Value = PrescriptionTemplateID;DataTable myDataTable = myDALMethod.QueryDataTable("YiShengGongZuoZhan_FRM_ChuFangMuBan", SQLCMDpas);DataSet myDataSet = new DataSet();myDataSet.Tables.Add(myDataTable);return myDataSet;}#endregion[OperationContract]
(3)、界面层代码:
#region FRM_ChuFangMuBan_Load事件private void FRM_ChuFangMuBan_Load(object sender, EventArgs e){ dgvPrescriptionTemplate.DataSource = myFRM_ChuFangMuBanClient.FRM_ChuFangMuBan_Load_ChaXunChuFangXinXi().Tables[0];//查询处方信息dgvPrescriptionTemplate.ClearSelection();//清空dgvPrescriptionTemplate默认选项}#endregion
#region dgvPrescriptionTemplate_SelectionChanged事件,根据处方单查询处方明细信息private void dgvPrescriptionTemplate_SelectionChanged(object sender, EventArgs e){if (dgvPrescriptionTemplateDetail.Rows.Count >= 0)//判断dgvPrescriptionTemplateDetail的行总数大于0{PrescriptionTemplateID = Convert.ToInt32(dgvPrescriptionTemplate.CurrentRow.Cells["处方模板ID"].Value);//点击dgvPrescriptionTemplate的获取当前行处方模板IDdgvPrescriptionTemplateDetail.DataSource = myFRM_ChuFangMuBanClient.FRM_ChuFangMuBan_Load_ChaXunChuFangMingXi(PrescriptionTemplateID).Tables[0];//根据处方模板ID查询处方模板明细信息dgvPrescriptionTemplate.ClearSelection();//清空dgvPrescriptionTemplate默认的选项。}}#endregion
3.2.7.2新增处方模板
医生可以在3.2.7.2(图1)此界面进行处方模板的编写,这里处方的录入是可以填写用药方式、用药频率、发药总量等。为医生看病开处方时提供一个参考。
新增处方模板截图:
3.2.7.2(图1)
功能代码:
(1)、存储过程代码:
--新增处方信息
IF(@Type='btnBaoCun_Click_XinZengChuFangXinXi')BEGIN BEGIN TRAN INSERT BT_PrescriptionTemplateTable(TemplateName, Doctor_StaffID, AS_TemplateTypeID, AS_PrescriptionTypeID,TechnicalOfficesID, AS_TemplateSortID, PrescriptionRemarks, PrescriptionDiagnosis)VALUES (@TemplateName, @Doctor_StaffID, @AS_TemplateTypeID, @AS_PrescriptionTypeID, @TechnicalOfficesID, @AS_TemplateSortID, @PrescriptionRemarks, @PrescriptionDiagnosis)SELECT @@IDENTITY COMMIT TRANEND
--新增处方明细
IF(@Type ='btnBaoCun_Click_XinZengChuFangMingXi')BEGIN BEGIN TRANINSERT BT_PrescriptionTemplateDetailTable( PrescriptionTemplateID, DrugID, ChineseMedicineNumberOfAgent, EachAgentDosage, AS_DrugUseMannerID, AS_DDDSID, DispensingVolume, Remarks)VALUES ( @PrescriptionTemplateID, @DrugID, @ChineseMedicineNumberOfAgent, @EachAgentDosage, @AS_DrugUseMannerID,@AS_DDDSID, @DispensingVolume, @Remarks)--SELECT @@IDENTITY COMMIT TRANEND
(2)、逻辑层代码:
[OperationContract]#region 新增处方模板信息public DataSet btnBaoCun_Click_XinZengChuFangXinXi(string strTemplateName, int intDoctor_StaffID, int intAS_TemplateTypeID, int intAS_PrescriptionTypeID,int intTechnicalOfficesID, int intAS_TemplateSortID, string strPrescriptionRemarks, string strPrescriptionDiagnosis){SqlParameter[] SQLCMDpas ={new SqlParameter ("@Type",SqlDbType.Char),new SqlParameter ("@TemplateName",SqlDbType.Char),new SqlParameter ("@Doctor_StaffID",SqlDbType.Int),new SqlParameter ("@AS_TemplateTypeID",SqlDbType.Int),new SqlParameter ("@AS_PrescriptionTypeID",SqlDbType.Int),new SqlParameter ("@TechnicalOfficesID",SqlDbType.Int),new SqlParameter ("@AS_TemplateSortID",SqlDbType.Int),new SqlParameter ("@PrescriptionRemarks",SqlDbType.Char),new SqlParameter ("@PrescriptionDiagnosis",SqlDbType.Char),};SQLCMDpas[0].Value = "btnBaoCun_Click_XinZengChuFangXinXi";SQLCMDpas[1].Value = strTemplateName;SQLCMDpas[2].Value = intDoctor_StaffID;SQLCMDpas[3].Value = intAS_TemplateTypeID;SQLCMDpas[4].Value = intAS_PrescriptionTypeID;SQLCMDpas[5].Value = intTechnicalOfficesID;SQLCMDpas[6].Value = intAS_TemplateSortID;SQLCMDpas[7].Value = strPrescriptionRemarks;SQLCMDpas[8].Value = strPrescriptionDiagnosis;DataTable myDataTable = myDALMethod.QueryDataTable("YiShengGongZuoZhan_FRM_ChuFangMuBan", SQLCMDpas);DataSet myDataSet = new DataSet();myDataSet.Tables.Add(myDataTable);return myDataSet;}#endregion [OperationContract]#region 新增处方模板明细public int btnBaoCun_Click_XinZengChuFangMingXi(int intPrescriptionTemplateID,int intDrugID,string strChineseMedicineNumberOfAgent,string strEachAgentDosage, int intAS_DrugUseMannerID, int intAS_DDDSID, string strDispensingVolume, string strRemarks){SqlParameter[] SQLCMDpas ={new SqlParameter ("@Type",SqlDbType.Char),new SqlParameter ("@PrescriptionTemplateID",SqlDbType.Int), new SqlParameter ("@DrugID",SqlDbType.Int), new SqlParameter ("@ChineseMedicineNumberOfAgent",SqlDbType.Char),new SqlParameter ("@EachAgentDosage",SqlDbType.Char),new SqlParameter ("@AS_DrugUseMannerID",SqlDbType.Int),new SqlParameter ("@AS_DDDSID",SqlDbType.Int),new SqlParameter ("@DispensingVolume",SqlDbType.Char),new SqlParameter ("@Remarks",SqlDbType.Char),};SQLCMDpas[0].Value = "btnBaoCun_Click_XinZengChuFangMingXi";SQLCMDpas[1].Value = intPrescriptionTemplateID;SQLCMDpas[2].Value = intDrugID;SQLCMDpas[3].Value = strChineseMedicineNumberOfAgent;SQLCMDpas[4].Value = strEachAgentDosage;SQLCMDpas[5].Value = intAS_DrugUseMannerID;SQLCMDpas[6].Value = intAS_DDDSID;SQLCMDpas[7].Value = strDispensingVolume;SQLCMDpas[8].Value = strRemarks;int count = myDALMethod.UpdateData("YiShengGongZuoZhan_FRM_ChuFangMuBan", SQLCMDpas);return count;}#endregion
(3)、界面层代码:
#region 保存新增处方private void btnSave_Click(object sender, EventArgs e){#region 新增处方模板信息string strTemplateName = txtTemplateName.Text.ToString().Trim();//模板名称int intDoctor_StaffID = Convert.ToInt32(cboDoctor.SelectedValue);//撰写医生int intAS_TemplateTypeID = Convert.ToInt32(cboTemplateType.SelectedValue);//模板类型int intAS_PrescriptionTypeID = Convert.ToInt32(cboPrescriptionType.SelectedValue);//处方类型int intTechnicalOfficesID = Convert.ToInt32(cboTechnicalOffices.SelectedValue);//撰写科室int intAS_TemplateSortID = Convert.ToInt32(cboTemplateSort.SelectedValue);//模板分类string strPrescriptionRemarks = txtPrescriptionRemarks.Text.ToString().Trim();//处方模板备注string strPrescriptionDiagnosis = txtPrescriptionDiagnosis.Text.ToString().Trim();//处方模板诊断DataTable dtChuFangXinXi = myFRM_ChuFangMuBanClient.btnBaoCun_Click_XinZengChuFangXinXi(strTemplateName,intDoctor_StaffID, intAS_TemplateTypeID, intAS_PrescriptionTypeID, intTechnicalOfficesID, intAS_TemplateSortID,strPrescriptionRemarks, strPrescriptionDiagnosis).Tables[0];//新增处方模板#endregion#region 新增处方模板明细int intPrescriptionTemplateID = Convert.ToInt32(dtChuFangXinXi.Rows[0][0].ToString());//获取心中的处方模板信息的IDif (dgvChuFangMuBan.Rows.Count > 0)//判断处方模板的行数大于0{int count = 0;//声明一个整形变量,用来记录新增模板明细的行数for (int i = 0; i < dgvChuFangMuBan.Rows.Count; i++)//循环dgvChuFangMuBan的行数的集合{int intDrugID = Convert.ToInt32(dgvChuFangMuBan.Rows[i].Cells["处方药品ID"].Value);//药品IDstring strChineseMedicineNumberOfAgent = dgvChuFangMuBan.Rows[i].Cells["中药剂数"].Value.ToString();//中药剂数string strEachAgentDosage = dgvChuFangMuBan.Rows[i].Cells["每剂用量"].Value.ToString();//每剂用量int intAS_DrugUseMannerID = Convert.ToInt32(dgvChuFangMuBan.Rows[i].Cells["用药方式"].Value);//用药方式int intAS_DDDSID = Convert.ToInt32(dgvChuFangMuBan.Rows[i].Cells["用药频率"].Value);//用药频率string strDispensingVolume = dgvChuFangMuBan.Rows[i].Cells["用药总量"].Value.ToString();//用药总量string strRemarks = dgvChuFangMuBan.Rows[i].Cells["明细备注"].Value.ToString();//明细备注count += myFRM_ChuFangMuBanClient.btnBaoCun_Click_XinZengChuFangMingXi(intPrescriptionTemplateID, intDrugID, strChineseMedicineNumberOfAgent,strEachAgentDosage, intAS_DrugUseMannerID, intAS_DDDSID, strDispensingVolume, strRemarks);//循环新增模板明细信息}if (count > 0)//当行数大于0时,表明新增数据成功。{MessageBox.Show("新增处方模板成功!");this.Close();}else{MessageBox.Show("新增处方模板失败,请查看是否有空白数据!");}}#endregion}#endregion
3.2.7.3修改处方模板
医生可以在此界面对错误的处方模板进行修该,可以对多余的药品进行移除和新增药品等。
修改处方模板截图:
3.2.7.3(图1)
功能代码
修改处方模板
(1)、存储过程的代码:
--修改处方信息
IF(@Type='btnBaoCun_Click_XiuGaiChuFangXinXi')BEGINUPDATE BT_PrescriptionTemplateTableSET TemplateName=@TemplateName, Doctor_StaffID=@Doctor_StaffID, AS_TemplateTypeID=@AS_TemplateTypeID, AS_PrescriptionTypeID=@AS_PrescriptionTypeID, TechnicalOfficesID=@TechnicalOfficesID, AS_TemplateSortID=@AS_TemplateSortID,PrescriptionRemarks= @PrescriptionRemarks, PrescriptionDiagnosis=@PrescriptionDiagnosisWHERE BT_PrescriptionTemplateTable.PrescriptionTemplateID =@PrescriptionTemplateIDEND
--修改处方明细
IF(@Type ='btnBaoCun_Click_XiuGaiChuFangMingXi')BEGINUPDATE BT_PrescriptionTemplateDetailTableSET PrescriptionTemplateID=@PrescriptionTemplateID, DrugID=@DrugID, ChineseMedicineNumberOfAgent=@ChineseMedicineNumberOfAgent, EachAgentDosage=@EachAgentDosage,AS_DrugUseMannerID=@AS_DrugUseMannerID,AS_DDDSID=@AS_DDDSID, DispensingVolume=@DispensingVolume,Remarks=@Remarks WHERE BT_PrescriptionTemplateDetailTable.PrescriptionTemplateDetailID =@PrescriptionTemplateDetailIDEND--删除
IF(@Type='btnShanChu_Click_ShanChuChuFang')BEGINDELETE BT_PrescriptionTemplateTableWHERE BT_PrescriptionTemplateTable.PrescriptionTemplateID =@PrescriptionTemplateIDEND
(2)、逻辑层的代码:
[OperationContract]#region 修改处方模板信息public int btnBaoCun_Click_XiuGaiChuFangXinXi(string strTemplateName, int intDoctor_StaffID, int intAS_TemplateTypeID, int intAS_PrescriptionTypeID,int intTechnicalOfficesID, int intAS_TemplateSortID, string strPrescriptionRemarks, string strPrescriptionDiagnosis, int intPrescriptionTemplateID){SqlParameter[] SQLCMDpas ={ new SqlParameter ("@Type",SqlDbType.Char),new SqlParameter ("@TemplateName",SqlDbType.Char),new SqlParameter ("@Doctor_StaffID",SqlDbType.Int),new SqlParameter ("@AS_TemplateTypeID",SqlDbType.Int),new SqlParameter ("@AS_PrescriptionTypeID",SqlDbType.Int),new SqlParameter ("@TechnicalOfficesID",SqlDbType.Int),new SqlParameter ("@AS_TemplateSortID",SqlDbType.Int),new SqlParameter ("@PrescriptionRemarks",SqlDbType.Char),new SqlParameter ("@PrescriptionDiagnosis",SqlDbType.Char), new SqlParameter ("@PrescriptionTemplateID",SqlDbType.Int),}; SQLCMDpas[0].Value = "btnBaoCun_Click_XiuGaiChuFangXinXi";SQLCMDpas[1].Value = strTemplateName;SQLCMDpas[2].Value = intDoctor_StaffID;SQLCMDpas[3].Value = intAS_TemplateTypeID;SQLCMDpas[4].Value = intAS_PrescriptionTypeID;SQLCMDpas[5].Value = intTechnicalOfficesID;SQLCMDpas[6].Value = intAS_TemplateSortID;SQLCMDpas[7].Value = strPrescriptionRemarks;SQLCMDpas[8].Value = strPrescriptionDiagnosis;SQLCMDpas[9].Value = intPrescriptionTemplateID;int count = myDALMethod.UpdateData("YiShengGongZuoZhan_FRM_ChuFangMuBan", SQLCMDpas);return count;}#endregion[OperationContract]#region 修改处方模板明细public int btnBaoCun_Click_XiuGaiChuFangMingXi(int intPrescriptionTemplateID, int intDrugID, string strChineseMedicineNumberOfAgent,string strEachAgentDosage, int intAS_DrugUseMannerID, int intAS_DDDSID, string strDispensingVolume, string strRemarks,int intPrescriptionTemplateDetailID){SqlParameter[] SQLCMDpas ={new SqlParameter ("@Type",SqlDbType.Char),new SqlParameter ("@PrescriptionTemplateID",SqlDbType.Int), new SqlParameter ("@DrugID",SqlDbType.Int), new SqlParameter ("@ChineseMedicineNumberOfAgent",SqlDbType.Char),new SqlParameter ("@EachAgentDosage",SqlDbType.Char),new SqlParameter ("@AS_DrugUseMannerID",SqlDbType.Int),new SqlParameter ("@AS_DDDSID",SqlDbType.Int),new SqlParameter ("@DispensingVolume",SqlDbType.Char),new SqlParameter ("@Remarks",SqlDbType.Char),new SqlParameter ("@PrescriptionTemplateDetailID",SqlDbType.Int),};SQLCMDpas[0].Value = "btnBaoCun_Click_XiuGaiChuFangMingXi";SQLCMDpas[1].Value = intPrescriptionTemplateID;SQLCMDpas[2].Value = intDrugID;SQLCMDpas[3].Value = strChineseMedicineNumberOfAgent;SQLCMDpas[4].Value = strEachAgentDosage;SQLCMDpas[5].Value = intAS_DrugUseMannerID;SQLCMDpas[6].Value = intAS_DDDSID;SQLCMDpas[7].Value = strDispensingVolume;SQLCMDpas[8].Value = strRemarks;SQLCMDpas[9].Value = intPrescriptionTemplateDetailID;int count = myDALMethod.UpdateData("YiShengGongZuoZhan_FRM_ChuFangMuBan", SQLCMDpas);return count;}#endregion [OperationContract]#region 删除处方模板public int btnShanChu_Click_ShanChuChuFang(int intPrescriptionTemplateID){SqlParameter[] SQLCMDpas ={new SqlParameter ("@Type",SqlDbType.Char),new SqlParameter ("@PrescriptionTemplateID",SqlDbType.Int),};SQLCMDpas[0].Value = "btnShanChu_Click_ShanChuChuFang";SQLCMDpas[1].Value = intPrescriptionTemplateID;int count = myDALMethod.UpdateData("YiShengGongZuoZhan_FRM_ChuFangMuBan", SQLCMDpas);return count;}#endregion
(3)、界面层的代码:
bool A = false;int DrugID = 0;//处方模板药品IDint count = 0;int intPrescriptionTemplateID;//处方模板ID#region load事件private void FRM_ChuFangMuBan_Update_Load(object sender, EventArgs e){DataTable dtDoctor = myFRM_ChuFangMuBanClient.FRM_ChuFangMuBan_Insert_Load_ChaXunZhuanXieYiSheng().Tables[0];DataTable dtTechnicalOffices = myFRM_ChuFangMuBanClient.FRM_ChuFangMuBan_Insert_Load_ChaXunKeShi().Tables[0];DataTable dtPrescriptionType = myFRM_ChuFangMuBanClient.FRM_ChuFangMuBan_Load_ChaXunChuFangLeiXing().Tables[0];DataTable dtTemplateType = myFRM_ChuFangMuBanClient.FRM_ChuFangMuBan_Load_ChaXunMuBanLeiXing().Tables[0];DataTable dtTemplateSort= myFRM_ChuFangMuBanClient.FRM_ChuFangMuBan_Insert_Load_ChaXunMuBanFenLei().Tables[0];DataTable dtDrugUseManner = myFRM_ChuFangMuBanClient.FRM_ChuFangMuBan_Insert_Load_ChaXunYongYaoFangShi().Tables[0];DataTable dtDDDS = myFRM_ChuFangMuBanClient.FRM_ChuFangMuBan_Insert_Load_ChaXunYongYaoPinLv().Tables[0];cboDoctor = PublicStaticMothd.SetZhiXiaLaKuang(cboDoctor, dtDoctor, "StaffID", "StaffName");//绑定撰写医生的下拉框数据cboTechnicalOffices = PublicStaticMothd.SetZhiXiaLaKuang(cboTechnicalOffices, dtTechnicalOffices, "TechnicalOfficesID", "TechnicalOfficesName");//绑定撰写科室的下拉框数据cboPrescriptionType = PublicStaticMothd.SetZhiXiaLaKuang(cboPrescriptionType, dtPrescriptionType, "AttributeDetailsID", "AttributeDetailsName");//绑定处方类型的下拉框数据cboTemplateType = PublicStaticMothd.SetZhiXiaLaKuang(cboTemplateType, dtTemplateType, "AttributeDetailsID", "AttributeDetailsName");//绑定模板类型的下拉框数据cboTemplateSort = PublicStaticMothd.SetZhiXiaLaKuang(cboTemplateSort, dtTemplateSort, "AttributeDetailsID", "AttributeDetailsName");//绑定模板分类的下拉框数据cboDrugUseManner = PublicStaticMothd.SetZhiXiaLaKuang(cboDrugUseManner, dtDrugUseManner, "AttributeDetailsID", "AttributeDetailsName");//绑定用药方式的下拉框数据cboDDDS = PublicStaticMothd.SetZhiXiaLaKuang(cboDDDS, dtDDDS, "AttributeDetailsID", "AttributeDetailsName");//绑定用药频率的下拉框数据dgvYaoPin.Visible = false;//从主界面的DGV表格中给修改界面每个控件赋值txtTemplateName.Text = DGVR.Cells["模板名称"].Value.ToString().Trim();cboDoctor.SelectedValue = Convert.ToInt32(DGVR.Cells["撰写医生ID"].Value);cboTemplateType.SelectedValue = Convert.ToInt32(DGVR.Cells["模板类型ID"].Value);cboPrescriptionType.SelectedValue = Convert.ToInt32(DGVR.Cells["处方类型ID"].Value);cboTechnicalOffices.SelectedValue = Convert.ToInt32(DGVR.Cells["撰写科室ID"].Value);cboTemplateSort.SelectedValue = Convert.ToInt32(DGVR.Cells["模板分类ID"].Value);txtPrescriptionRemarks.Text = DGVR.Cells["处方备注"].Value.ToString().Trim();txtPrescriptionDiagnosis.Text = DGVR.Cells["处方诊断"].Value.ToString().Trim();intPrescriptionTemplateID = Convert.ToInt32(DGVR.Cells["处方模板ID"].Value);//根据处方模板ID查询处方明细信息DataTable dtPrescriptionTemplateDetail = myFRM_ChuFangMuBanClient.FRM_ChuFangMuBan_Load_ChaXunChuFangMingXi(intPrescriptionTemplateID).Tables[0];for (int i = 0; i < dtPrescriptionTemplateDetail.Rows.Count; i++)//循环处方明细信息的行数{//给处方模板明细的DGV赋值dgvChuFangMuBan.Rows.Add();dgvChuFangMuBan.Rows[i].Cells["处方模板明细ID"].Value = dtPrescriptionTemplateDetail.Rows[i]["PrescriptionTemplateDetailID"].ToString();dgvChuFangMuBan.Rows[i].Cells["处方模板ID"].Value = dtPrescriptionTemplateDetail.Rows[i]["PrescriptionTemplateID"].ToString();dgvChuFangMuBan.Rows[i].Cells["药品编号"].Value = dtPrescriptionTemplateDetail.Rows[i]["DrugEncoding"].ToString();dgvChuFangMuBan.Rows[i].Cells["药品名称"].Value = dtPrescriptionTemplateDetail.Rows[i]["DrugName"].ToString();dgvChuFangMuBan.Rows[i].Cells["药品规格"].Value = dtPrescriptionTemplateDetail.Rows[i]["DrugSpecification"].ToString();dgvChuFangMuBan.Rows[i].Cells["用药方式"].Value = dtPrescriptionTemplateDetail.Rows[i]["DrugUseManner"].ToString();dgvChuFangMuBan.Rows[i].Cells["用药频率"].Value = dtPrescriptionTemplateDetail.Rows[i]["DDDS"].ToString();dgvChuFangMuBan.Rows[i].Cells["备注"].Value = dtPrescriptionTemplateDetail.Rows[i]["Remarks"].ToString();dgvChuFangMuBan.Rows[i].Cells["剂数"].Value = dtPrescriptionTemplateDetail.Rows[i]["ChineseMedicineNumberOfAgent"];dgvChuFangMuBan.Rows[i].Cells["每剂用量"].Value = dtPrescriptionTemplateDetail.Rows[i]["EachAgentDosage"].ToString();dgvChuFangMuBan.Rows[i].Cells["用药总量"].Value = dtPrescriptionTemplateDetail.Rows[i]["DispensingVolume"].ToString(); dgvChuFangMuBan.Rows[i].Cells["处方药品ID"].Value = dtPrescriptionTemplateDetail.Rows[i]["DrugID"];dgvChuFangMuBan.Rows[i].Cells["用药方式ID"].Value = dtPrescriptionTemplateDetail.Rows[i]["AS_DrugUseMannerID"].ToString();dgvChuFangMuBan.Rows[i].Cells["用药频率ID"].Value = dtPrescriptionTemplateDetail.Rows[i]["AS_DDDSID"];}}#endregion#region 保存事件private void btnBaoCun_Click(object sender, EventArgs e){string strTemplateName = txtTemplateName.Text.ToString().Trim();//模板名称int intDoctor_StaffID = Convert.ToInt32(cboDoctor.SelectedValue);//撰写医生int intAS_TemplateTypeID = Convert.ToInt32(cboTemplateType.SelectedValue);//模板类型int intAS_PrescriptionTypeID = Convert.ToInt32(cboPrescriptionType.SelectedValue);//处方类型int intTechnicalOfficesID = Convert.ToInt32(cboTechnicalOffices.SelectedValue);//撰写科室int intAS_TemplateSortID = Convert.ToInt32(cboTemplateSort.SelectedValue);//模板分类string strPrescriptionRemarks = txtPrescriptionRemarks.Text.ToString().Trim();//处方模板备注string strPrescriptionDiagnosis = txtPrescriptionDiagnosis.Text.ToString().Trim();//处方模板诊断int A = 0; int a = 0; int M = 0;//声明三个整形变量并赋初始值0M = myFRM_ChuFangMuBanClient.btnBaoCun_Click_XiuGaiChuFangXinXi(strTemplateName,intDoctor_StaffID,intAS_TemplateTypeID,intAS_PrescriptionTypeID,intTechnicalOfficesID,intAS_TemplateSortID,strPrescriptionRemarks,strPrescriptionDiagnosis,intPrescriptionTemplateID);//M是新增数据的行数值为一,用来判断是否新增数据。foreach (DataGridViewRow dgvr in dgvChuFangMuBan.Rows)//循环处方模板的行数{if (dgvr.Cells["药品编号"].Value == null &&dgvr.Cells["药品名称"].Value == null &&dgvr.Cells["药品规格"].Value == null &&dgvr.Cells["每剂用量"].Value == null &&dgvr.Cells["用药方式"].Value == null &&dgvr.Cells["用药频率"].Value == null &&dgvr.Cells["备注"].Value == null &&dgvr.Cells["剂数"].Value == null &&dgvr.Cells["用药总量"].Value == null)//判断是否存在空数据{}else{int intPrescriptionTemplateDetailID;//声明处方模板明细的IDintPrescriptionTemplateDetailID = Convert.ToInt32(dgvr.Cells["处方模板明细ID"].Value);//把主界面的处方模板明细ID赋值给声明的处方模板明细的IDif (intPrescriptionTemplateDetailID == 0)//判断当处方模板明细ID等于0时{int intDrugID = Convert.ToInt32(dgvr.Cells["处方药品ID"].Value);string strChineseMedicineNumberOfAgent = dgvr.Cells["剂数"].Value.ToString();string strEachAgentDosage = dgvr.Cells["每剂用量"].Value.ToString();int intAS_DrugUseMannerID = Convert.ToInt32(dgvr.Cells["用药方式ID"].Value);int intAS_DDDSID = Convert.ToInt32(dgvr.Cells["用药频率ID"].Value);string strDispensingVolume = dgvr.Cells["用药总量"].Value.ToString();string strRemarks = dgvr.Cells["备注"].Value.ToString(); a = myFRM_ChuFangMuBanClient.btnBaoCun_Click_XinZengChuFangMingXi(intPrescriptionTemplateID, intDrugID, strChineseMedicineNumberOfAgent,strEachAgentDosage, intAS_DrugUseMannerID, intAS_DDDSID, strDispensingVolume, strRemarks);//新增新的药品数据}else{int intDrugID1 = Convert.ToInt32(dgvr.Cells["处方药品ID"].Value);string strChineseMedicineNumberOfAgent1 = dgvr.Cells["剂数"].Value.ToString();string strEachAgentDosage1 = dgvr.Cells["每剂用量"].Value.ToString();int intAS_DrugUseMannerID1 = Convert.ToInt32(dgvr.Cells["用药方式ID"].Value);int intAS_DDDSID1 = Convert.ToInt32(dgvr.Cells["用药频率ID"].Value);string strDispensingVolume1 = dgvr.Cells["用药总量"].Value.ToString();string strRemarks1 = dgvr.Cells["备注"].Value.ToString();A = myFRM_ChuFangMuBanClient.btnBaoCun_Click_XiuGaiChuFangMingXi(intPrescriptionTemplateID, intDrugID1, strChineseMedicineNumberOfAgent1,strEachAgentDosage1, intAS_DrugUseMannerID1, intAS_DDDSID1, strDispensingVolume1, strRemarks1,intPrescriptionTemplateDetailID);//修改药品数据 } }}if (a > 0 && A > 0 && M > 0 || A > 0 && M > 0 || a > 0 && A > 0)//判断是否全部数据都新增成功{MessageBox.Show("成功修改处方模板!" + "修改模板名称为:" + strTemplateName);this.Close();}else{MessageBox.Show("操作处方模板失败!" );} }#endregion
#region 移除数据private void dgvChuFangMuBan_CellClick(object sender, DataGridViewCellEventArgs e){if (e.ColumnIndex == 0){DialogResult dr = MessageBox.Show("是否删除?", "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);//弹出确定对话框if (dr == DialogResult.OK)//如果点了确定按钮{dgvChuFangMuBan.Rows.RemoveAt(dgvChuFangMuBan.CurrentRow.Index);}}}#endregion
仅供学习,禁止用于商业用途。
实现医生工作站的处方模板功能的代码(十一)相关推荐
- 实现医生工作站中处方录入功能的代码(六)
实现医生工作站中处方录入功能的代码(六) 3.2.2处方录入 3.2.2.1处方录入主界面 处方录入这个模块可以实现医生根据病人病历来开药方,点击3.2.2.1(图1)"新增"按钮 ...
- 实现医生工作站的病历模板功能的代码(十)
实现医生工作站的病历模板功能的代码(十) 3.2.6病历模板 3.2.6.1病历模板主界面 病历模板是在医生书写病历时用来调用用的,医生可以根据病人常得的病和对应病常用到的药书写成一个病历作为模板,当 ...
- 实现医生工作站的检查模板功能的代码(十四)
实现医生工作站的检查模板功能的代码(十四) 3.2.10检查模板 3.2.10.1检查模板主界面 检查模板同其他模板相同都是供医生做参考和调用的.医生可以事先总结一些病的检查结果和诊断,当有某个病人的 ...
- 实现医生工作站的病程模板功能的代码(十二)
实现医生工作站的病程模板功能的代码(十二) 3.2.8病程模板 3.2.8.1病程模板主界面 病程模板是记录每种病的历程,是供医生做参考的.医生可以通过记录病程从而熟悉每个病人的病和预测病的发展,从而 ...
- 实现医生工作站的辅助检查功能的代码(七)
实现医生工作站的辅助检查功能的代码(七) 3.2.3辅助检查 3.2.3.1辅助检查主界面 辅助检查这个模块可以实现医生根据病人病历来开一些体检.化验.治疗.体检套餐.化验检查组合等的辅助检查项目.一 ...
- 实现医生工作站中书写病历功能的代码(五)
实现医生工作站中书写病历功能的代码(五) 3.2医生工作站 3.2.1书写病历 3.2.1.1书写病历主界面 书写病历这个模块可以实现医生书写病历功能,点击3.2.1(图1)"新增" ...
- 北京协和医院住院医生工作站系统案例
北京协和医院住院医生工作站系统案例 来源:支点网 作者: 医院信息化的根本目的是快捷全面地传递病人信息,为医生诊断和医院管理提供全方位服务,但全方位服务离不开IT和医学的全面结合,也就是临床管理的 ...
- 医院信息学项目-门诊医生工作站(1)
一.系统建模与设计 时间:2019.03.28 1.1 系统设计 1.1.1系统角色定位 系统最终用户为医院挂号员.收费员和医生,这些职业的人群一般对计算机知识掌握都是较少,因此对本系统的操作方便性要 ...
- 承志医院管理系统项目解析 门诊医生工作站—书写病历(四)
1.3门诊医生工作站 由门诊医生进行看病,开药与诊疗方案. 1.31书写病历 书写病历这个模块,主要是给病人写病历,如图(1) 图(1) 控件名称 说明 日期控件(DateTimePicker) 控件 ...
最新文章
- 基于Erlang语言的视频相似推荐系统 | 深度
- 杂项-权限管理:RBAC
- 多个视频切换时,只改变SourceFilter,不改变Filter Graph中其他Filter的C#实现
- C语言——数组、函数、指针
- 训练日志 2019.7.24
- MySQL客户端mysql常用命令
- JPA的单向一对多关联(oneToMany)实现示例(基于Spring Boot + JPA +MySQL,表自动维护)
- windows入门Elasticsearch7.10(es)之3:本地集群搭建
- 小米无线网卡linux驱动下载,Linux下安装MT7601U无线网卡驱动
- 地面监视雷达系统的设计与试验
- websphere liberty
- Android 第三方应用广告拦截实现
- C -CPT-SS-PDI 喜树碱-双硫键-聚苝酰亚胺/PEI-g–PLO 聚乙烯亚胺-聚L-鸟氨酸
- 使用支付宝支付出现问题:交易订单处理失败 请稍后再试 ALI38173
- [Python]Django模型(Model)
- Ten Digit Powers
- Android TV TIF源码阅读笔记
- Python 花瓣网动态爬虫
- 液晶弹性自由能计算_加州理工学院白若冰博士、Bhattacharya教授:光敏液晶弹性体中的光-力耦合...
- 打造H5动感影集的爱恨情仇(动画性能篇)
热门文章
- java中jquery怎么学,Jquery的基础学习
- java打包后的图片文件在哪,java程序打包jar文件自带图片
- Wikileaks公布CIA的代码混淆工具Marble
- opencv实现轮廓的内接正矩形
- 后端开发【一大波有用知识】Redis的线程模型和异步机制
- 校园通课表功能android,基于Android的“科师校园通”移动应用终端的设计与实现参考.doc...
- 24V转5V,24V转3.3V,24V转3V芯片,大电流降压和低功耗LDO
- 详解TCP协议与UDP协议的区别
- 爱普生L805开机后所有灯一起闪烁不打印
- 阿里云ecs windows 2008 安装ftp