WCF医院管理系统技术解析(十)体检报告结果打印(水晶报表)
来源:互联网 发布:麦萌猫软件 编辑:程序博客网 时间:2024/04/27 21:01
WCF医院管理系统技术解析(十)体检报告结果打印(水晶报表)
对于已经完成体检的病人,对其进行体检结果的打印,其体检结果报告打印效果如图:
界面涉及到的控件有:
控件
说明
从工具箱中找到对应的报表控件,可以设置控件的一些属性。如显示的文本,命名是规范
文本对象 (Text)
线条对象(Line)
框对象 (Box)
数据库中用到的表和关系有:
表1:病人表(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)
联系手机
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
是否体检
表2:属性明细表(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))
有效否
表3:处方单表(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))
有效否
表4:会员类别表(BT_MemberCategoryTable)
列名
数据类型
主键/外键
说明
MemberCategoryID
int
主键
会员类别 ID
MemberCategoryNumber
nchar (30)
会员类别编号
MemberCategoryDiscount
numeric (18, 2)
会员类别折扣
MemberCategoryName
nchar (30)
会员类别名称
Remarks
nchar (150)
备注
WhetherEffective
bit
((1))
有效否
表5:项目表(BT_ItemTable)
列名
数据类型
主键/外键
说明
ItemID
int
主键
项目ID
ItemName
nchar (70)
外键
项目名称
ItemCoding
nchar (50)
项目编号
AS_UserStatusID
int
外键
使用状态ID
ProjectPrice
decimal (18, 2)
现金价格
TechnicalOfficesID
int
外键
科室ID
DiscountProportion
decimal (18, 2)
折扣比例
WhetherEffective
bit
((1))
有效否
ItemRemarks
nchar (100)
项目备注
ItemUnit
nchar (20)
项目单位
表6:体检执行内容明细表[PW_PhysicalExaminationExecuteContentDetailTable】
列名
数据类型
主键/外键
说明
PhysicalExaminationExecuteContentDetailID
int - Identity
主键
体检执行内容明细ID
PhysicalExaminationContentID
int
外键
体检执行内容ID
ItemID
int
外键
项目ID
PhysicalExaminationExecuteContentMessage
nchar (250)
体检执行内容信息
WhetherEffective
bit
((1))
有效否
PhysicalExaminationExecuteID
int
外键
体检执行ID
ReportDoctor_StaffID
int
外键
报告医生ID
ReportTime
date
报告时间
表:7: 体检执行表:【PhysicalExaminationExecuteTable】
列名
数据类型
主键/外键
说明
PhysicalExaminationExecuteID
int
主键
体检执行ID
ChargeBillID
int
外键
收费单ID
ExecuteDoctor_StaffID
int
外键
执行医生ID
ExecuteNumber
nchar (20)
体检执行单号
Remarks
nchar (200)
备注
HealthSuggest
nchar (200)
健康建议
WhetherEffective
bit
((1))
是否有效
表8:员工 表(BT_StaffTable)
列名
数据类型
主键/外键
说明
StaffID
int
主键
员工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
((1))
有效否
表9:收费单表(PW_ChargeBillTable)
列名
数据类型
主键/外键
说明
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
是否经过处方
表10:体检检查内容表(PW_PhysicalExaminationContentTable)
列名
数据类型
主键/外键
说明
PhysicalExaminationContentID
int - Identity
主键
体检检查内容ID
PhysicalExaminationContentName
nchar (100)
体检检查内容名称
PhysicalExaminationTypeName
nchar (100)
体检检查分类
WhetherEffective
bit
有效否
该报表涉及到的储存过程有:
IF @TYPE = 'FRM_TiJianZhiXing_Main_提交打印ToolStripMenuItem_Click_OnChuFangDan'BEGINSELECT distinct BT_ItemTable.ItemID, RTRIM(BT_ItemTable.ItemName) AS ItemName, PW_PhysicalExaminationExecuteContentDetailTable.PhysicalExaminationContentID, PW_PhysicalExaminationExecuteContentDetailTable.PhysicalExaminationExecuteContentMessage, PW_PhysicalExaminationExecuteContentDetailTable.PhysicalExaminationExecuteID, PW_PhysicalExaminationExecuteTable.HealthSuggest, PW_PhysicalExaminationExecuteContentDetailTable.PhysicalExaminationExecuteContentDetailID, PW_PhysicalExaminationContentTable.PhysicalExaminationContentName, PW_PhysicalExaminationContentTable.PhysicalExaminationTypeName, BT_StaffTable.StaffName, PW_PhysicalExaminationExecuteTable.ExecuteDoctor_StaffID, PW_PhysicalExaminationExecuteTable.Remarks, PW_PhysicalExaminationExecuteTable.ExecuteNumber, PW_PhysicalExaminationExecuteContentDetailTable.ReportDoctor_StaffID, Convert(nchar(10) ,PW_PhysicalExaminationExecuteContentDetailTable.ReportTime,120) AS ReportTime , BT_StaffTable_1.StaffName AS 报告医生, PW_PhysicalExaminationExecuteTable.ChargeBillID, BT_PatientTable.PatientID, BT_PatientTable.PatientName, BT_AttributeDetailsTable.AttributeDetailsName, BT_MemberCategoryTable.MemberCategoryName, BT_AttributeDetailsTable_1.AttributeDetailsName AS 参保类型, BT_PatientTable.IDCardNo, PW_OrdonnanceTable.OrdonnanceIDFROM PW_PhysicalExaminationExecuteContentDetailTable INNER JOIN BT_ItemTable ON PW_PhysicalExaminationExecuteContentDetailTable.ItemID = BT_ItemTable.ItemID INNER JOIN PW_PhysicalExaminationExecuteTable ON PW_PhysicalExaminationExecuteContentDetailTable.PhysicalExaminationExecuteID = PW_PhysicalExaminationExecuteTable.PhysicalExaminationExecuteID INNER JOIN PW_PhysicalExaminationContentTable ON PW_PhysicalExaminationExecuteContentDetailTable.PhysicalExaminationContentID = PW_PhysicalExaminationContentTable.PhysicalExaminationContentID INNER JOIN BT_StaffTable ON PW_PhysicalExaminationExecuteTable.ExecuteDoctor_StaffID = BT_StaffTable.StaffID INNER JOIN BT_StaffTable AS BT_StaffTable_1 ON PW_PhysicalExaminationExecuteContentDetailTable.ReportDoctor_StaffID = BT_StaffTable_1.StaffID INNER JOIN PW_ChargeBillTable ON PW_PhysicalExaminationExecuteTable.ChargeBillID = PW_ChargeBillTable.ChargeBillID INNER JOIN PW_OrdonnanceTable ON PW_ChargeBillTable.OrdonnanceID = PW_OrdonnanceTable.OrdonnanceID INNER JOIN BT_PatientTable ON PW_OrdonnanceTable.PatientID = BT_PatientTable.PatientID INNER JOIN BT_AttributeDetailsTable ON BT_PatientTable.AS_SexID = BT_AttributeDetailsTable.AttributeDetailsID INNER JOIN BT_MemberCategoryTable ON BT_PatientTable.MemberTypeID = BT_MemberCategoryTable.MemberCategoryID INNER JOIN BT_AttributeDetailsTable AS BT_AttributeDetailsTable_1 ON BT_PatientTable.AS_InsuredTypeID = BT_AttributeDetailsTable_1.AttributeDetailsID WHERE PW_PhysicalExaminationExecuteTable. PhysicalExaminationExecuteID = @PhysicalExaminationExecuteID END
BLL中对应的方法有:
//报表打印 经过处方单的报表打印 [OperationContract] public DataSet FRM_TiJianZhiXing_Main_提交打印ToolStripMenuItem_Click_OnChuFangDan(int intPhysicalExaminationExecuteID)//根据最后一个体检执行单ID查询体检执行内容明细 { SqlParameter[] mySqlParameters = { new SqlParameter("@Type",SqlDbType .Char ), new SqlParameter ("@PhysicalExaminationExecuteID",SqlDbType .Int ), }; mySqlParameters[0].Value = "FRM_TiJianZhiXing_Main_提交打印ToolStripMenuItem_Click_OnChuFangDan "; mySqlParameters[1].Value = intPhysicalExaminationExecuteID; DataTable dt = myDALMethod.QueryDataTable("TiJianZhongXin_FRM_TiJianZhiXing_Main", mySqlParameters); DataSet ds = new DataSet(); ds.Tables.Add(dt); return ds; }
报表打印在UIL中涉及到的强数据集,建立强数据集有如下几个过程:第一点击数据,然后点击添加数据源,如下图:
第二步:点击数据库:
然后 点击数据集
然后在数据源配载向导中点击新建连接
第三步:新建连接后,会出现如下窗体
选择服务器名和连接的数据库中对应的名称,再点击测试连接,会提示测试连接成功!
点击确定后弹出如下窗体:
点击数据源配置向导中的下一步,再弹出如下窗体
在表中的前面打上勾再输入数据集的名称,然后点击完成这样就建立好一个强数据集了。
第四步:在解决方案中(如下图所示)找到刚才添加的强数据集
点击刚才添加的强数据集会弹出该界面中的数据表:如下图:
点击右键该界面中的空白处,然后点击添加如下图:
点击添加会出现TableAdapter配置向导(如下图) 然后点击下一步:
出现如下界面后,继续点击下一步
在输入SQL语句中把数据库中用到的储存过程的复制下来,注意不要带WHERE条件中的储存过程也复制下来
把储存过程复制好后,会看到如下界面
然后点击完成
点击完成后,你会发现刚才添加的强数据集多的一张表,点击表头对其命名即可
第五步:右键点击添加新建项
点击后出现如下界面(如果没有安装水晶报表的不会出现如下的中的内容)
添加水晶报表(注意选择中的)
在对添加的水晶报表进行命名
命名完成后,点击添加,选择Crystal Reports库中的作为空白报表,再点击确定
出现水晶报表后,点击工具箱对水晶报表设置控件吧
在数据库字段右键点击数据库专家
找到ADO.NET数据集中刚才添加的表 选择该表后点击添加进选定的表中,再点击确定
会看到数据库字段中出现刚才添加的强数据集中的表
用数据库字段中的数据与工具箱中的工具对报表进行自定义布局
对水晶报表的界面用控件布局完成后添加一个窗体,把工具箱中报表设计中CrystalReportViewer的控件拉进界面中
最后在该窗体的Load事件中添加如下代码:
BLL医院管理系统.TiJianZhongXin.FRM_TiJianZhiXing_Main.FRM_TiJianZhiXing_MainClient myFRM_TiJianZhiXing_MainClient = new BLL医院管理系统.TiJianZhongXin.FRM_TiJianZhiXing_Main.FRM_TiJianZhiXing_MainClient(); DataTable dt = new DataTable();//实例化一个数据表 dt = myFRM_TiJianZhiXing_MainClient.FRM_TiJianZhiXing_Main_提交打印ToolStripMenuItem_Click_OnChuFangDan(intPhysicalExaminationExecuteID).Tables[0]; //实例化强数据集 DS_TiJianZhiXin myDS_TiJianZhiXin = new DS_TiJianZhiXin(); //把查询的数据dt合并到强数据集对象里表名为BaoBiao_TiJianZhiXin_OnChuFang myDS_TiJianZhiXin.Tables["BaoBiao_TiJianZhiXin_OnChuFang"].Merge(dt); //实例化报表模板 BaoBiaoTongJi.CRP_TiJianZhiXin_OnChuFang myCRP_TiJianZhiXin_OnChuFang = new BaoBiaoTongJi.CRP_TiJianZhiXin_OnChuFang(); //设置模板的数据源 myCRP_TiJianZhiXin_OnChuFang.SetDataSource(myDS_TiJianZhiXin); //设置报表控件的报表源 crystalReportViewer1.ReportSource = myCRP_TiJianZhiXin_OnChuFang;
这样一个完整的水晶报表就完成了。运行结果就为第一张图中所示了。
注意:该文章仅供与学习,禁止用于商业用途,否则后果自负!!!
- WCF医院管理系统技术解析(十)体检报告结果打印(水晶报表)
- WCF医院管理系统技术解析 (二)体检登记(一)
- WCF医院管理系统技术解析(九)体检执行(二)
- WCF医院管理系统技术解析(三)体检登记(二)
- WCF医院管理系统技术解析(四)体检登记(三)
- WCF医院管理系统技术解析(五)体检登记(四)
- WCF医院管理系统技术解析(八)体检执行(一)
- WCF医院管理系统技术解析(六)体检登记(五)对病人设置体检项目
- WCF医院管理系统技术解析(十一)医生体检收入查询(带一定判断的导出Excel)
- WCF医院管理系统技术解析(七)体检登记(六)前台收费
- WCF医院管理系统技术解析(一)WCF架构搭建
- WCF医院管理系统技术解析(十二)化验登记
- 医院体检管理系统说明书
- WCF+SQL Server 2008 医院管理系统项目解析(一)
- 医院管理系统技术解析(WCF版)(一) 数据库的建立
- WCF医院管理系统技术解析小功能(一)输入身份证验证年龄、性别、出生年月
- 医院健康体检系统
- Analysis报告(html、word、水晶报表)
- (17)门面模式
- objective-c中的method swizz实现"猴打补丁"
- 对程序员说点实在话
- Java 基于数组自定义实现容量不可变向量Vector
- [dfs] Delicious cakes 中等难度的搜索
- WCF医院管理系统技术解析(十)体检报告结果打印(水晶报表)
- 能和LoadRunner匹敌的VS2010/2012Web负载测试
- [dp]Search 字符串匹配问题
- linux用户拥有root权限
- Mathematica中的PopularCurve手绘卡通图片的可视化
- 第五章:浏览器的嗅探和特征侦测
- 第五章:浏览器的嗅探和特征侦测
- 第五章:浏览器的嗅探和特征侦测
- PHP内核解密系列:zend_execute的执行过程