实现医技工作站的X光检查功能的代码(十七)
3.4医技工作站
3.4.1X光检查
只有需要进行X光检查的项目才会在此界面显示,每点击一条检查项目,界面会自动绑定该项目对应的病人信息。点击“浏览图片”选择对应到的图片,输入检查内容和对图片的检查描述、诊断提示等信息点击“保存”按钮就会生成一条医技检查报告。点击“调用模板”会弹出门诊医技模板的界面如3.2.9.1(图1),医生可以调用界面中的信息。点击“编辑模板”会弹出新增医技模板界面3.2.9.2(图1)也可以编辑门诊医技模板。点击“病历”按钮会弹出书写病历的界面如3.2.1.1(图1)。医生可以对该病进行病历的书写补充。点击“清除”的按钮,界面的数据会清空。还可以根据病人卡号、病人类别、病人姓名和挂号时间等条件点击“立即查询”进行多条件查询检查项目。
主界面截图:
3.4.1(图1)
从界面上可以看到我们这里用到的控件有:
控件名称 | 说明 |
文本框控件textBox | 第一要设置每个控件的Text,第二设置控件Name;不同的是dataGridView右键进行编辑列。 |
下拉框控件comboBox | |
按钮控件button | |
表格控件dataGridView | |
时间控件dateTimePicker |
查询功能实现:
第一步:数据库
1、表与关系
3.4.1(图2)
表1:医技检查报告表(X光、B超、心电图)(PW_MedicalSkillInspectReportTable)
列名 | 数据类型 | 主键/外键 | 说明 |
MedicalSkillInspectReportID | int - Identity | 主键 | 医技检查报告ID |
PatientID | int | 外键 | 病人ID |
AccomplishTime | datetime |
| 完成时间 |
DiagnosisNumber | nchar (20) |
| 诊疗号 |
UltrasoundNumber | nchar (20) |
| 超声号 |
ReportName | nchar (30) |
| 报告名称 |
AS_ReportValuationID | int | 外键 | 报告评价ID |
WhetherAffirm | bit |
| 是否确认 |
InspectDescribe | nchar (50) |
| 检查描述 |
DiagnosisPrompt | nchar (50) |
| 诊断提示 |
Picture | image |
| 图片 |
WhetherEffective | bit |
| 有效否 |
AtriumRate | nchar (30) |
| 心房率 |
Ventricle | nchar (30) |
| 心室率 |
PRInterval | nchar (30) |
| P-R间隔 |
QTInterval | nchar (30) |
| Q-T间隔 |
表2:处方单表(PW_OrdonnanceTable)
列名 | 数据类型 | 主键/外键 | 说明 |
OrdonnanceID | int - Identity | 主键 | 处方单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 |
OutpatientMedicalRecordsTemplateID | int | 外键 | 门诊病历模板ID |
WhetherEffective | bit |
| 有效否 |
表3:病人表(BT_PatientTable)
列名 | 数据类型 | 主键/外键 | 说明 |
PatientID | int - Identity | 主键 | 病人ID |
PatientCardNumber | nchar (50) |
| 病人卡号 |
PatientName | nchar (30) |
| 病人名称 |
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) |
| 联系手机 |
| 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 |
| 有效否 |
WhetherMember | bit |
| 会员否 |
表4:辅助项目明细表(PW_AuxiliaryItemDetailTable)
列名 | 数据类型 | 主键/外键 | 说明 |
AuxiliaryItemDetailID | int - Identity | 主键 | 辅助项目明细ID |
RegisterID | int | 外键 | 挂号ID |
AllItemID | int | 外键 | 总项目ID |
ItemCategoryID | int | 外键 | 项目类别ID |
WhetherEffective | bit |
| 有效否 |
AS_PhysicalExaminationRegisterID | int | 外键 | 体检登记ID |
OrdonnanceID | int | 外键 | 处方单ID |
表5:体检项目表(BT_ItemTable):
列名 | 数据类型 | 主键/外键 | 说明 |
ItemID | int - Identity | 主键 | 项目ID |
ItemName | nchar (70) |
| 项目名称 |
ItemCoding | nchar (50) |
| 项目编号 |
AS_UserStatusID | int | 外键 | 使用状态ID |
ProjectPrice | decimal (18, 2) |
| 现金价格 |
TechnicalOfficesID | int | 外键 | 科室ID |
DiscountProportion | decimal (18, 2) |
| 折扣比例 |
WhetherEffective | bit |
| 有效否 |
表6:化验项目表(BT_AssayItemsTable)
列名 | 数据类型 | 主键/外键 | 说明 |
AssayItemsID | int - Identity | 主键 | 化验项目ID |
AssayItemsNumber | nchar (20) |
| 化验项目编号 |
AssayItemsName | nchar (40) |
| 化验项目名称 |
ChineseName | nchar (50) |
| 中文名称 |
AssayItemsUnits | nchar (50) |
| 化验项目单位 |
ExperimentWay | nchar (70) |
| 实验方法 |
AssayItemsPrice | decimal (18, 2) |
| 化验项目价格 |
ResultDecimalPoint | int | 外键 | 结果小数点 |
AcquiescentValue | nchar (50) |
| 默认值 |
WhetherEffective | bit |
| 有效否 |
表7:治疗项目表(BT_TreatmentItemsTable):
列名 | 数据类型 | 主键/外键 | 说明 |
TreatmentItemID | int - Identity | 主键 | 治疗项目ID |
TreatmentItemName | nchar (50) |
| 治疗项目名称 |
AS_ItemTypeID | int | 外键 | 项目类型ID |
ItemNumber | nchar (30) |
| 项目编号 |
TreatmentItemsMedicareNumber | nchar (30) |
| 治疗项目医保编号 |
WhetherMedicare | bit |
| 医保否 |
AS_UserStatusID | int | 外键 | 使用状态ID |
AlphabeticBrevityCode | nchar (20) |
| 拼音简码 |
WubiInCode | nchar (20) |
| 五笔简码 |
ChargeCategoryID | int | 外键 | 收费类别 ID |
MedicineCategoryID | int | 外键 | 医学类别 ID |
PromotionalLogo | nchar (30) |
| 促销标识 |
PhysicalExaminationPricing | decimal (18, 2) |
| 体检定价 |
TotalInvestment | nchar (20) |
| 项目单位 |
GeneralPricing | decimal (18, 2) |
| 普通定价 |
MedicarePricing | decimal (18, 2) |
| 医保定价 |
MemberPrice | decimal (18, 2) |
| 会员定价 |
WhetherIntegral | bit |
| 积分否 |
ProportionIntegral | decimal (18, 2) |
| 积分比例 |
IntegralScores | decimal (18, 2) |
| 积分分数 |
PhysicalExaminationTechnicalOfficesID | int | 外键 | 体检科室ID |
ItemRemarks | nchar (100) |
| 项目备注 |
WhetherPhysicalExaminationItem | bit |
| 体检项目否 |
MedicalApparatusID | int | 外键 | 化验仪器ID |
ItemID | int | 外键 | 项目ID |
WhetherAllowTheFrontDeskToChangePriceSales | bit |
| 允许前台改价销售否 |
WhetherAllowTheFrontDeskDiscountSales | bit |
| 允许前台折扣销售否 |
EntryStaff_StaffID | int | 外键 | 录入人员_员工ID |
EntryDate | datetime |
| 录入日期 |
UpdateStaff_StaffID | int | 外键 | 修改人员_员工ID |
UpdateDate | datetime |
| 修改日期 |
WhetherEffective | bit |
| 有效否 |
表8:体检套餐表(BT_PhysicalExaminationSetMealTable)
列名 | 数据类型 | 主键/外键 | 说明 |
PhysicalExaminationSetMealID | int - Identity | 主键 | 体检套餐ID |
PhysicalExaminationSetMealName | nchar (30) |
| 体检套餐名称 |
ChargeCategoryID | int | 外键 | 收费类别 ID |
CashPrice | decimal (18, 2) |
| 现金价格 |
DiscountRatio | decimal (18, 2) |
| 折扣比例 |
SetMealNumber | nchar (30) |
| 套餐编号 |
SetMealRemarks | nchar (150) |
| 套餐备注 |
AS_UsableStatusID | int | 外键 | 可用状态ID |
EntryStaff_StaffID | int | 外键 | 录入人员_员工ID |
EntryDate | datetime |
| 录入日期 |
UpdateStaff_StaffID | int | 外键 | 修改人员_员工ID |
UpdateDate | datetime |
| 修改日期 |
WhetherEffective | bit |
| 有效否 |
表9:化验检查组合表(BT_AssayInspectCombinationTable)
列名 | 数据类型 | 主键/外键 | 说明 |
AssayInspectCombinationID | int - Identity | 主键 | 化验检查组合ID |
CombinationNumber | nchar (20) |
| 组合编号 |
ChargeCategoryID | int | 外键 | 收费类别 ID |
CombinationName | nchar (50) |
| 组合名称 |
AS_ApparatusTypeID | int | 外键 | 仪器类型ID |
AS_UsableStatusID | int | 外键 | 可用状态ID |
Price | decimal (18, 2) |
| 价格 |
DiscountProportion | decimal (18, 2) |
| 折扣比例 |
Remarks | nchar (150) |
| 备注 |
WhetherEffective | bit |
| 有效否 |
表10:属性明细表(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 |
| 有效否 |
2、功能代码实现
查询X光检查
(1)、存储过程代码:
--查询性别
IF(@Type ='FRM_XGuangJianCha_Load_SelectSex')
BEGIN
SELECT LTRIM (RTRIM( AttributeDetailsID)) AS SexID,
LTRIM (RTRIM( AttributeDetailsName)) AS Sex
FROM BT_AttributeDetailsTable
WHERE BT_AttributeDetailsTable.AttributeSetID =2
END
--查询病人类别
IF(@Type ='FRM_XGuangJianCha_Load_SelectPatientCategory')
BEGIN
SELECT LTRIM (RTRIM( PatientCategoryID)) AS PatientCategoryID,
LTRIM (RTRIM( CategoryName)) AS CategoryName
FROM BT_PatientCategoryTable
END
--报告评价
IF(@Type ='FRM_XGuangJianCha_Load_SelectReportValuation')
BEGIN
SELECT LTRIM (RTRIM( AttributeDetailsID)) AS ReportValuationID,
LTRIM (RTRIM( AttributeDetailsName)) AS ReportValuation
FROM BT_AttributeDetailsTable
WHERE BT_AttributeDetailsTable.AttributeSetID=33
END
IF(@Type ='FRM_XGuangJianCha_Load_SelectDGVGuaHao')
BEGIN
--查询检查项目
SELECT LTRIM (RTRIM(PW_AuxiliaryItemDetailTable.AuxiliaryItemDetailID)) AS AuxiliaryItemDetailID,
LTRIM (RTRIM(PW_AuxiliaryItemDetailTable.RegisterID)) AS RegisterID,
LTRIM (RTRIM(BT_PatientTable.PatientCategoryID)) AS PatientCategoryID,
LTRIM (RTRIM(BT_PatientCategoryTable.CategoryName)) AS CategoryName,
LTRIM (RTRIM(BT_PatientTable.PatientName)) AS PatientName,
LTRIM (RTRIM(BT_PatientTable.PatientCardNumber)) AS PatientCardNumber,
LTRIM (RTRIM(BT_PatientTable.AS_SexID)) AS AS_SexID,
LTRIM (RTRIM(BT_AttributeDetailsTable.AttributeDetailsName)) AS Sex,
LTRIM (RTRIM(BT_PatientTable.Age)) AS Age,
LTRIM (RTRIM(PW_AuxiliaryItemDetailTable.AllItemID)) AS AllItemID,
PW_RegisterTable.RegisterTime AS RegisterTime,
LTRIM (RTRIM(PW_RegisterTable.PatientID)) AS PatientID,
LTRIM (RTRIM(BT_AttributeDetailsTable_1.AttributeDetailsName)) AS RegisterStatus,
LTRIM (RTRIM(BT_ItemTable.ItemName)) AS ItemName
FROM PW_AuxiliaryItemDetailTable INNER JOIN
PW_RegisterTable ON PW_AuxiliaryItemDetailTable.RegisterID = PW_RegisterTable.RegisterID INNER JOIN
BT_PatientTable ON PW_RegisterTable.PatientID = BT_PatientTable.PatientID INNER JOIN
BT_PatientCategoryTable ON BT_PatientTable.PatientCategoryID = BT_PatientCategoryTable.PatientCategoryID INNER JOIN
BT_AttributeDetailsTable ON BT_PatientTable.AS_SexID = BT_AttributeDetailsTable.AttributeDetailsID INNER JOIN
BT_ItemTable ON PW_AuxiliaryItemDetailTable.AllItemID = BT_ItemTable.ItemID INNER JOIN
BT_AttributeDetailsTable AS BT_AttributeDetailsTable_1 ON PW_RegisterTable.AS_RegisterStatusID =
BT_AttributeDetailsTable_1.AttributeDetailsID
WHERE PW_AuxiliaryItemDetailTable.ItemCategoryID =1
--查询化验项目
union
SELECT LTRIM (RTRIM(PW_AuxiliaryItemDetailTable.AuxiliaryItemDetailID)) AS AuxiliaryItemDetailID,
LTRIM (RTRIM(PW_AuxiliaryItemDetailTable.RegisterID)) AS RegisterID,
LTRIM (RTRIM(BT_PatientTable.PatientCategoryID)) AS PatientCategoryID,
LTRIM (RTRIM(BT_PatientCategoryTable.CategoryName)) AS CategoryName,
LTRIM (RTRIM(BT_PatientTable.PatientName)) AS PatientName,
LTRIM (RTRIM(BT_PatientTable.PatientCardNumber)) AS PatientCardNumber,
LTRIM (RTRIM(BT_PatientTable.AS_SexID)) AS AS_SexID,
LTRIM (RTRIM(BT_AttributeDetailsTable.AttributeDetailsName)) AS Sex,
LTRIM (RTRIM(BT_PatientTable.Age)) AS Age,
LTRIM (RTRIM(PW_AuxiliaryItemDetailTable.AllItemID)) AS AllItemID,
PW_RegisterTable.RegisterTime AS RegisterTime,
LTRIM (RTRIM(PW_RegisterTable.PatientID)) AS PatientID,
LTRIM (RTRIM(BT_AttributeDetailsTable_1.AttributeDetailsName)) AS RegisterStatus,
LTRIM (RTRIM(BT_AssayItemsTable.AssayItemsName)) AS ItemName
FROM PW_AuxiliaryItemDetailTable INNER JOIN
PW_RegisterTable ON PW_AuxiliaryItemDetailTable.RegisterID = PW_RegisterTable.RegisterID INNER JOIN
BT_PatientTable ON PW_RegisterTable.PatientID = BT_PatientTable.PatientID INNER JOIN
BT_PatientCategoryTable ON BT_PatientTable.PatientCategoryID = BT_PatientCategoryTable.PatientCategoryID INNER JOIN
BT_AttributeDetailsTable ON BT_PatientTable.AS_SexID = BT_AttributeDetailsTable.AttributeDetailsID INNER JOIN
BT_AttributeDetailsTable AS BT_AttributeDetailsTable_1 ON PW_RegisterTable.AS_RegisterStatusID =
BT_AttributeDetailsTable_1.AttributeDetailsID INNER JOIN
BT_AssayItemsTable ON PW_AuxiliaryItemDetailTable.AllItemID = BT_AssayItemsTable.AssayItemsID
WHERE PW_AuxiliaryItemDetailTable.ItemCategoryID =2
--查询治疗项目
union
SELECT LTRIM (RTRIM(PW_AuxiliaryItemDetailTable.AuxiliaryItemDetailID)) AS AuxiliaryItemDetailID,
LTRIM (RTRIM(PW_AuxiliaryItemDetailTable.RegisterID)) AS RegisterID,
LTRIM (RTRIM(BT_PatientTable.PatientCategoryID)) AS PatientCategoryID,
LTRIM (RTRIM(BT_PatientCategoryTable.CategoryName)) AS CategoryName,
LTRIM (RTRIM(BT_PatientTable.PatientName)) AS PatientName,
LTRIM (RTRIM(BT_PatientTable.PatientCardNumber)) AS PatientCardNumber,
LTRIM (RTRIM(BT_PatientTable.AS_SexID)) AS AS_SexID,
LTRIM (RTRIM(BT_AttributeDetailsTable.AttributeDetailsName)) AS Sex,
LTRIM (RTRIM(BT_PatientTable.Age)) AS Age,
LTRIM (RTRIM(PW_AuxiliaryItemDetailTable.AllItemID)) AS AllItemID,
PW_RegisterTable.RegisterTime AS RegisterTime,
LTRIM (RTRIM(PW_RegisterTable.PatientID)) AS PatientID,
LTRIM (RTRIM(BT_AttributeDetailsTable_1.AttributeDetailsName)) AS RegisterStatus,
LTRIM (RTRIM(BT_TreatmentItemsTable.TreatmentItemName)) AS ItemName
FROM PW_AuxiliaryItemDetailTable INNER JOIN
PW_RegisterTable ON PW_AuxiliaryItemDetailTable.RegisterID = PW_RegisterTable.RegisterID INNER JOIN
BT_PatientTable ON PW_RegisterTable.PatientID = BT_PatientTable.PatientID INNER JOIN
BT_PatientCategoryTable ON BT_PatientTable.PatientCategoryID = BT_PatientCategoryTable.PatientCategoryID INNER JOIN
BT_AttributeDetailsTable ON BT_PatientTable.AS_SexID = BT_AttributeDetailsTable.AttributeDetailsID INNER JOIN
BT_AttributeDetailsTable AS BT_AttributeDetailsTable_1 ON PW_RegisterTable.AS_RegisterStatusID =
BT_AttributeDetailsTable_1.AttributeDetailsID INNER JOIN
BT_TreatmentItemsTable ON PW_AuxiliaryItemDetailTable.AllItemID = BT_TreatmentItemsTable.TreatmentItemID
WHERE PW_AuxiliaryItemDetailTable.ItemCategoryID =3
--查询体检套餐
union
SELECT LTRIM (RTRIM(PW_AuxiliaryItemDetailTable.AuxiliaryItemDetailID)) AS AuxiliaryItemDetailID,
LTRIM (RTRIM(PW_AuxiliaryItemDetailTable.RegisterID)) AS RegisterID,
LTRIM (RTRIM(BT_PatientTable.PatientCategoryID)) AS PatientCategoryID,
LTRIM (RTRIM(BT_PatientCategoryTable.CategoryName)) AS CategoryName,
LTRIM (RTRIM(BT_PatientTable.PatientName)) AS PatientName,
LTRIM (RTRIM(BT_PatientTable.PatientCardNumber)) AS PatientCardNumber,
LTRIM (RTRIM(BT_PatientTable.AS_SexID)) AS AS_SexID,
LTRIM (RTRIM(BT_AttributeDetailsTable.AttributeDetailsName)) AS Sex,
LTRIM (RTRIM(BT_PatientTable.Age)) AS Age,
LTRIM (RTRIM(PW_AuxiliaryItemDetailTable.AllItemID)) AS AllItemID,
PW_RegisterTable.RegisterTime AS RegisterTime,
LTRIM (RTRIM(PW_RegisterTable.PatientID)) AS PatientID,
LTRIM (RTRIM(BT_AttributeDetailsTable_1.AttributeDetailsName)) AS RegisterStatus,
LTRIM (RTRIM(BT_PhysicalExaminationSetMealTable.PhysicalExaminationSetMealName)) AS ItemName
FROM PW_AuxiliaryItemDetailTable INNER JOIN
PW_RegisterTable ON PW_AuxiliaryItemDetailTable.RegisterID = PW_RegisterTable.RegisterID INNER JOIN
BT_PatientTable ON PW_RegisterTable.PatientID = BT_PatientTable.PatientID INNER JOIN
BT_PatientCategoryTable ON BT_PatientTable.PatientCategoryID = BT_PatientCategoryTable.PatientCategoryID INNER JOIN
BT_AttributeDetailsTable ON BT_PatientTable.AS_SexID = BT_AttributeDetailsTable.AttributeDetailsID INNER JOIN
BT_AttributeDetailsTable AS BT_AttributeDetailsTable_1 ON PW_RegisterTable.AS_RegisterStatusID =
BT_AttributeDetailsTable_1.AttributeDetailsID INNER JOIN
BT_PhysicalExaminationSetMealTable ON PW_AuxiliaryItemDetailTable.AllItemID =
BT_PhysicalExaminationSetMealTable.PhysicalExaminationSetMealID
WHERE PW_AuxiliaryItemDetailTable.ItemCategoryID =4
--查询化验检查组合
union
SELECT LTRIM (RTRIM(PW_AuxiliaryItemDetailTable.AuxiliaryItemDetailID)) AS AuxiliaryItemDetailID,
LTRIM (RTRIM(PW_AuxiliaryItemDetailTable.RegisterID)) AS RegisterID,
LTRIM (RTRIM(BT_PatientTable.PatientCategoryID)) AS PatientCategoryID,
LTRIM (RTRIM(BT_PatientCategoryTable.CategoryName)) AS CategoryName,
LTRIM (RTRIM(BT_PatientTable.PatientName)) AS PatientName,
LTRIM (RTRIM(BT_PatientTable.PatientCardNumber)) AS PatientCardNumber,
LTRIM (RTRIM(BT_PatientTable.AS_SexID)) AS AS_SexID,
LTRIM (RTRIM(BT_AttributeDetailsTable.AttributeDetailsName)) AS Sex,
LTRIM (RTRIM(BT_PatientTable.Age)) AS Age,
LTRIM (RTRIM(PW_AuxiliaryItemDetailTable.AllItemID)) AS AllItemID,
PW_RegisterTable.RegisterTime AS RegisterTime,
LTRIM (RTRIM(PW_RegisterTable.PatientID)) AS PatientID,
LTRIM (RTRIM(BT_AttributeDetailsTable_1.AttributeDetailsName)) AS RegisterStatus,
LTRIM (RTRIM(BT_AssayInspectCombinationTable.CombinationName)) AS ItemName
FROM PW_AuxiliaryItemDetailTable INNER JOIN
PW_RegisterTable ON PW_AuxiliaryItemDetailTable.RegisterID = PW_RegisterTable.RegisterID INNER JOIN
BT_PatientTable ON PW_RegisterTable.PatientID = BT_PatientTable.PatientID INNER JOIN
BT_PatientCategoryTable ON BT_PatientTable.PatientCategoryID = BT_PatientCategoryTable.PatientCategoryID INNER JOIN
BT_AttributeDetailsTable ON BT_PatientTable.AS_SexID = BT_AttributeDetailsTable.AttributeDetailsID INNER JOIN
BT_AttributeDetailsTable AS BT_AttributeDetailsTable_1 ON PW_RegisterTable.AS_RegisterStatusID =
BT_AttributeDetailsTable_1.AttributeDetailsID INNER JOIN
BT_AssayInspectCombinationTable ON PW_AuxiliaryItemDetailTable.AllItemID =
BT_AssayInspectCombinationTable.AssayInspectCombinationID
WHERE PW_AuxiliaryItemDetailTable.ItemCategoryID =5
END
(2)、逻辑层代码:
[OperationContract]
#region 查询性别
public DataSet FRM_XGuangJianCha_Load_SelectSex()
{
SqlParameter[] SQLCMDpas ={
new SqlParameter ("@Type",SqlDbType.Char),
};
SQLCMDpas[0].Value = "FRM_XGuangJianCha_Load_SelectSex";
DataTable myDataTable = myDALMethod.QueryDataTable("YiJiGongZuoZhan_FRM_XGuangJianCha", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
[OperationContract]
#region 查询病人类型
public DataSet FRM_XGuangJianCha_Load_SelectPatientCategory()
{
SqlParameter[] SQLCMDpas ={
new SqlParameter ("@Type",SqlDbType.Char),
};
SQLCMDpas[0].Value = "FRM_XGuangJianCha_Load_SelectPatientCategory";
DataTable myDataTable = myDALMethod.QueryDataTable("YiJiGongZuoZhan_FRM_XGuangJianCha", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
[OperationContract]
#region 查询报告评价
public DataSet FRM_XGuangJianCha_Load_SelectReportValuation()
{
SqlParameter[] SQLCMDpas ={
new SqlParameter ("@Type",SqlDbType.Char),
};
SQLCMDpas[0].Value = "FRM_XGuangJianCha_Load_SelectReportValuation";
DataTable myDataTable = myDALMethod.QueryDataTable("YiJiGongZuoZhan_FRM_XGuangJianCha", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
[OperationContract]
#region 查询X光检查报告
public DataSet FRM_XGuangJianCha_Load_SelectDGVGuaHao()
{
SqlParameter[] SQLCMDpas ={
new SqlParameter ("@Type",SqlDbType.Char),
};
SQLCMDpas[0].Value = "FRM_XGuangJianCha_Load_SelectDGVGuaHao";
DataTable myDataTable = myDALMethod.QueryDataTable("YiJiGongZuoZhan_FRM_XGuangJianCha", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
(3)、界面层代码:
#region Load事件
private void FRM_XGuangJianCha_Load(object sender, EventArgs e)
{
//查询绑定性别数据
DataTable dtSex = myFRM_XGuangJianChaClient.FRM_XGuangJianCha_Load_SelectSex().Tables[0];
cboSex = PublicStaticMothd.SetZhiXiaLaKuang(cboSex, dtSex, "SexID", "Sex");
//查询绑定病人类别数据
DataTable dtPatientCategory = myFRM_XGuangJianChaClient.FRM_XGuangJianCha_Load_SelectPatientCategory ().Tables[0];
cboPatientCategory = PublicStaticMothd.SetZhiXiaLaKuang(cboPatientCategory, dtPatientCategory, "PatientCategoryID", "CategoryName");
//查询绑定报告评价数据
DataTable dtReportValuation = myFRM_XGuangJianChaClient.FRM_XGuangJianCha_Load_SelectReportValuation().Tables[0];
cboReportValuation = PublicStaticMothd.SetZhiXiaLaKuang(cboReportValuation, dtReportValuation, "ReportValuationID", "ReportValuation");
dgvXRay.DataSource = myFRM_XGuangJianChaClient.FRM_XGuangJianCha_Load_SelectDGVGuaHao().Tables[0];//查询绑定X光检查报告的数据
dgvXRay.ClearSelection();//清空默认选行
}
#endregion
新增X光检查报告
(1)、存储过程代码:
--新增X光检查报告
IF(@Type='btnSave_Click_InsertMedicalSkillInspectReport')
BEGIN
INSERT PW_MedicalSkillInspectReportTable(PatientID, AccomplishTime, DiagnosisNumber, UltrasoundNumber,
ReportName, AS_ReportValuationID, WhetherAffirm, InspectDescribe, DiagnosisPrompt, Picture)
VALUES (@PatientID, @AccomplishTime, @DiagnosisNumber, @UltrasoundNumber, @ReportName,
@AS_ReportValuationID, @WhetherAffirm, @InspectDescribe, @DiagnosisPrompt, @Picture)
END
--超声号最大单据数
IF(@Type='btnSave_Click_SelectChaoShengHao')
BEGIN
BEGIN TRAN
UPDATE PW_TheLargestNumberStatisticalTable
SET UltrasoundMaximumNumber=UltrasoundMaximumNumber+1
SELECT UltrasoundMaximumNumber
FROM PW_TheLargestNumberStatisticalTable
COMMIT TRAN
END
(2)、逻辑层代码:
[OperationContract]
#region 新增医技检查报告
public int btnSave_Click_InsertMedicalSkillInspectReport(int intPatientID, DateTime dtmAccomplishTime, string strDiagnosisNumber,
string strUltrasoundNumber,string strReportName,int intAS_ReportValuationID,bool blWhetherAffirm, string strInspectDescribe,
string strDiagnosisPrompt, byte[][] bytePicture)
{
string strWenJianName = WenJianLiuZhuanHuanLuJing(bytePicture);
SqlParameter[] SQLCMDpas ={
new SqlParameter ("@Type",SqlDbType.Char),
new SqlParameter ("@PatientID",SqlDbType.Int),
new SqlParameter ("@AccomplishTime",SqlDbType.Int),
new SqlParameter ("@DiagnosisNumber",SqlDbType.Int),
new SqlParameter ("@UltrasoundNumber",SqlDbType.Int),
new SqlParameter ("@ReportName",SqlDbType.Int),
new SqlParameter ("@AS_ReportValuationID",SqlDbType.Int),
new SqlParameter ("@WhetherAffirm",SqlDbType.Int),
new SqlParameter ("@InspectDescribe",SqlDbType.Int),
new SqlParameter ("@DiagnosisPrompt",SqlDbType.Int),
new SqlParameter ("@Picture",SqlDbType.Int),
};
SQLCMDpas[0].Value = "btnSave_Click_InsertMedicalSkillInspectReport";
SQLCMDpas[1].Value = intPatientID;
SQLCMDpas[2].Value = dtmAccomplishTime;
SQLCMDpas[3].Value = strDiagnosisNumber;
SQLCMDpas[4].Value = strUltrasoundNumber;
SQLCMDpas[5].Value = strReportName;
SQLCMDpas[6].Value = intAS_ReportValuationID;
SQLCMDpas[7].Value = blWhetherAffirm;
SQLCMDpas[8].Value = strInspectDescribe;
SQLCMDpas[9].Value = strDiagnosisPrompt;
SQLCMDpas[10].Value = strWenJianName;
int count = myDALMethod.UpdateData("YiShengGongZuoZhan_FRM_FuZhuJianCha", SQLCMDpas);
return count;
}
#endregion
#region 文件流转换路径
private string WenJianLiuZhuanHuanLuJing(byte[][] byteTuPian)
{
try
{
string strWenJianQianZui = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString();
string strWenJianName = "";
for (int i = 0; i < byteTuPian.Length; i++)//遍历二进制的数组的数组
{
string strRiQiWenJian = strWenJianQianZui + i.ToString() + ".png";
string strBaoCunLuJing = System.AppDomain.CurrentDomain.BaseDirectory;
strBaoCunLuJing = strBaoCunLuJing + "image\\" + strRiQiWenJian;
FileInfo fi = new System.IO.FileInfo(strBaoCunLuJing);
FileStream fs;
fs = fi.OpenWrite();
fs.Write(byteTuPian[i], 0, byteTuPian[i].Length);
fs.Close();
strWenJianName += strRiQiWenJian + ";";
}
return strWenJianName;
}
catch
{
return null;
}
}
#endregion
[OperationContract]
#region 查询超声号最大单据数
public DataSet btnSave_Click_SelectChaoShengHao()
{
SqlParameter[] SQLCMDpas ={
new SqlParameter ("@Type",SqlDbType.Char),
};
SQLCMDpas[0].Value = "btnSave_Click_SelectChaoShengHao";
DataTable myDataTable = myDALMethod.QueryDataTable("YiJiGongZuoZhan_FRM_XGuangJianCha", SQLCMDpas);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
(3)、界面层代码:
#region 保存事件
private void btnSave_Click(object sender, EventArgs e)
{
byte[][] bytWenJian = new byte[lstBytes.Count][];
for (int i = 0; i < lstBytes.Count; i++)
{
bytWenJian[i] = lstBytes[i];
}
if (txtDiagnosisNumber.Text != "" && txtUltrasoundNumber.Text != "" && txtDiagnosisNumber.Text != "" && txtUltrasoundNumber.Text != ""
&& txtReportName.Text != "" && cboReportValuation.SelectedValue.ToString() != "" && rtxtInspectDescribe.Text != "" && rtxtDiagnosisPrompt.Text != "")
{
txtDiagnosisNumber.Text = GenerateReceipts();//自动生成超声号
txtUltrasoundNumber.Text = GenerateReceipts().Replace("BC", "ZL");//自动生成诊疗号
DateTime dtmAccomplishTime = Convert.ToDateTime(dtpAccomplishTime.Value);
string strDiagnosisNumber = txtDiagnosisNumber.Text;
string strUltrasoundNumber = txtUltrasoundNumber.Text;
string strReportName = txtReportName.Text;
int intAS_ReportValuationID = Convert.ToInt32(cboReportValuation.SelectedValue);
bool blWhetherAffirm = Convert.ToBoolean(chkWhetherAffirm.Checked);
string strInspectDescribe = rtxtInspectDescribe.Text;
string strDiagnosisPrompt = rtxtDiagnosisPrompt.Text;
int count = myFRM_XGuangJianChaClient.btnSave_Click_InsertMedicalSkillInspectReport(intPatientID, dtmAccomplishTime, strDiagnosisNumber,
strUltrasoundNumber, strReportName, intAS_ReportValuationID, blWhetherAffirm, strInspectDescribe, strDiagnosisPrompt, bytWenJian);
if (count > 0)
{
MessageBox.Show("添加成功!");
}
else
{
MessageBox.Show("添加失败!");
}
}
else
{
MessageBox.Show("请查看是否存在空数据。");
}
}
#endregion
#region 根据单据数 日期生成病人卡号
public string GenerateReceipts() //生成单据数
{
DataTable dt = myFRM_XGuangJianChaClient.btnSave_Click_SelectChaoShengHao().Tables[0];
strUltrasoundNumber = dt.Rows[0]["UltrasoundMaximumNumber"].ToString();
switch (strUltrasoundNumber.Length)
{
case 1:
strUltrasoundNumber = "000" + strUltrasoundNumber;
break;
case 2:
strUltrasoundNumber = "00" + strUltrasoundNumber;
break;
case 3:
strUltrasoundNumber = "0" + strUltrasoundNumber;
break;
case 4:
strUltrasoundNumber = "" + strUltrasoundNumber;
break;
default:
break;
}
DateTime dtmNow = DateTime.Now;
string strYear = dtmNow.Year.ToString().Trim();
string strMonth = dtmNow.Month.ToString().Trim();
strMonth = (strMonth.Length == 1 ? "0" + strMonth : strMonth);
string strDay = dtmNow.Day.ToString().Trim();
strDay = (strDay.Length == 1 ? "0" + strDay : strDay);
return "BC" + strYear + strMonth + strDay + strUltrasoundNumber;
}
#endregion
#region 图片
int intTuPianWeiZhiY = 0;
List<string> lisWenJianMing = new List<string>();
List<byte[]> lstBytes = new List<byte[]>();
private void btnPicture_Click(object sender, EventArgs e)
{
ofdWenJian.Multiselect = true;//多选图片
if (ofdWenJian.ShowDialog() == DialogResult.OK)
{
for (int i = 0; i < ofdWenJian.FileNames.Length; i++)
{
txtPictureRoute.Text += ofdWenJian.FileNames[i] + ";";
using (Stream sm = new FileStream(ofdWenJian.FileNames[i], FileMode.Open, FileAccess.ReadWrite, FileShare.None))//运行方法体后,消毁对象
{
int Length = (int)sm.Length; //二进制文件长度
byte[] bytes = new byte[Length]; //二进制文件存放的二进制数组
sm.Read(bytes, 0, Length); //内存流读取
sm.Close(); //关闭内存流
lstBytes.Add(bytes); 将数据保存到数据库中
XianShiTuPian(bytes);
}
}
}
}
#endregion
#region 显示图片
void XianShiTuPian(byte[] mybyte)
{
MemoryStream stmBLOBData = new MemoryStream(mybyte);//实例化一个内存流的对象
PictureBox myPictureBox = new PictureBox();
Image myImage = Image.FromStream(stmBLOBData);
myPictureBox.Size = pnlPicture.Size;
myPictureBox.Location = new Point(0, intTuPianWeiZhiY);
myPictureBox.BackgroundImage = myImage;
myPictureBox.BackgroundImageLayout = ImageLayout.Zoom;
this.pnlPicture.Controls.Add(myPictureBox);
intTuPianWeiZhiY += pnlPicture.Size.Height;
}
#endregion
仅供学习,禁止用于商业用途。
志不立,天下无可成之事。——王阳明
夫学须志也,才须学也,非学无以广才,非志无以成学。——诸葛亮
有志者事竟成也!——刘秀