新农村合作医疗管理系统
新农村合作医疗管理系统
课程名称:空间数据库基础
专业:测绘工程
班级:0614121
设计组:第4小组
设计者:郜亚东吕亚磊苗辉苏文文指导教师:苗东利牛磊宋自影邢晓娜设计时间:2014年1月2号
河南城建学院
测绘工程学院
1.课题简介
2.任务分派
二、系统需求分析调查
1.系统需求分析
2.系统功能简介
三、系统设计
1.系统总体设计(画出系统设计流程图)
2.系统详细设计(主要模块及模块介绍)
3.数据库设计
四、系统实施
1.数据资源
2.主程序设计
3.主要工作窗口(表单控件的属性及代码)
4.菜单设计
五、设计体会
六、参考文献
1.课题简介
随着我国医疗制度改革不断深入的进行,社会保险机构的业务量也大幅度的增加,传统的手工管理方式已经不能够再满足新的业务需要。为了保证新型农村合作医疗制度的顺利实施,实现对新型农村合作医疗业务高效、准确、快速的管理,提高新型农村合作医疗业务管理的水平。本文通过分析新农村合作医疗管理存在的问题,继而设计一种医疗信息管理系统。
2.任务分派
为了顺利的完成这次程序设计,我们组进行了任务分配。郜亚东负责主窗体,主窗体菜单,主程序,用户,医生管理,药品信息,药品价格,药品管理等设计。吕亚磊负责统筹支付,添加新用户,启动,密码修改等设计。苗辉负责门诊查询,门诊病人,就医记录等设计。苏文文负责技术支持,合作医疗人员信息,关于,帮助,登陆等设计。
二、系统需求分析调查
1.系统需求分析
管理信息系统是一门新兴的,集管理科学,信息科学,系统科学及计算机科学为一体的综合性学科,研究的是信息管理活动的全过程,以便有效地管理信息,提供各类管理决策信息,辅助企业进行现代化管理。管理信息系统它具备数据管理,计划,控制,预测和辅助决策功能。用同一标准处理和提供信息,排除使用前后矛盾的不完整的数据完整,及时提供在管理及决策中需要的数据。
(1)利用指定的数据关系分析数据,客观预测未来。
(2)向各级管理机构提供不同详细程度的报告,缩短分析和解释的时间
(3)用最短的费用最短的时间提供尽可能精确,可靠的信息,以便使决策者选者最佳的实施方案,以便提高企业的经济效益。
(4)储存人员基本信息,门诊,住院报账明细到数据库中
(5)及时反映病人拖欠费用情况
(6)对于基金的使用情况,病种发病率情况,药品使用情况等信息的图形化统计制作农村医疗合作信息系统的目的就是支持医院的行政管理与事务处理业务,使医院的业务操作流程和日常管理规范化。采集,分析处理,储存各种基础数据并使之标准化
2.系统功能简介
(1)为业务范围内所有的农业人口,提供新农合服务;
(2)实现跨地区、跨行业间迅速、准确、安全、可靠的新农合信息交换,保证新农合信息在业务范围内信息传输的畅通和系统资源的共享;
(3)通过Internet/Intranet定期向各级政府部门提供、发布新农合的有关信息、并为全体参合人员提供新农合信息的查询和有关政策法规咨询服务;
(4)建立符合新农合业务要求、管理要求的应用软件系统,通过计算机软、硬件技术的先进手段,在业务上力求减少人员工作强度、规范新农合业务运作、提高业务工作质量、提高管理工作效率;
(5)建立新农合管理的统计指标体系,使指标设置、指标解释、采集周期更具时效性,所设置的指标应能真正反映新农合事业的发展状况。系统要能够实现:最高层的预测、决策:中间层的计划、统计分析:基础层的事务管理这三个管理层次的功能[1]。
三、系统设计
1.系统总体设计
2.系统详细设计
3.数据库设计
数据库是管理信息系统的核心,一个良好的数据库结构既应具有数据冗余少、操作处理过程简单等特点,同时也应具有信息查找比较容易、系统开销低等特点。
本系统在设计数据库的模式时,先根据分析阶段求得的E-R 图构造出数据库的概念模型,这部分的工作可以按照E-R 图生成关系模式的成熟方法机械的执行。
对于得到的关系模式再做进一步的完善。首先为了保证存储数据的准确性和一致性,需要给数据加上完整性约束条件。根据作用的数据对象和范围不同,完整性措施分为三类,它们分别是标识唯一实体的实体完整性、保证数据正确的域完整
启动
登录
用户管理 帮助
数据维护
门诊
门诊病人
收费 技术支持信息 关于
帮助文件
性和维持参照表和被参照表之间数据一致性的参照完整性。约束则是数据库管理系统(DBMS)提供保证上述数据完整性的手段,主要包括主键约束、唯一性约束、缺省约束、外键约束、非空约束和CHECK约束这几种。本系统在数据库设计阶段主要确定了主键约束,唯一性约束、非空约束、缺省约束,部分外键约束和部分CHECK约束。有一部分CHECK约束在应用程序设计中通过指定输入的有效性规则实现。而部分用于参照完整性约束的外键约束由于会在系统开发阶段带来不便,就通过触发器来保证参照完整性。还有一些较为复杂的数据一致性的要求,也决定使用触发器来实现,如系统中每一缴费期的每一条家庭缴费标准核定记录的内容都应与该家庭多条成员缴纳保险名册记录的内容保持一致。
1)实例化一个数据库连接对象,在VC 6.0里需要引用SQL的动态库进行引用。Sqlconnection conn=new sqlc onnection(“connect string”);// connectstring为连接字符串(其中connectstring为连接数据库的字符串)。
(2)调用Sqlconnection类的open方法将数据库链接打开。Conn.open();//打开数据库连接
(3)实例化SQL命令响应类,该类为传递SQL结构化语句并执行的。其构造函数需要两个参数分别为SQL结构化语句和数据库连接类的对象。Sqlcommand comm=new sqlcommand(sql,conn); //执行sql命令
(4)实例化SQL的读数据类,该类实现对数据库读取后的结构和数据存储。通过调用SQL命令类的执行读(excuteread)方法返回Sqlask类数据赋值给Sqlask 类的对象。Sqlaskreader=comm.excuteread();
(5)数据库执行Sqlask类的读(Read)方法读取存在Sqlask类结构的数据。Reader.Reader();//数据
(6)完成数据库读取后对数据库连接进行关闭,如果不对其进行关闭会早晨数据库连接资源浪费可能会导致更多的连接失效,所以关闭数据库连接很重要。
四、系统实施
1.数据资源
2.主程序设计
set talk off
close all
clear all
public i as inte
*设置系统参数
set sysmenu off
set sysmenu to
set notify off
&&设置窗口属性
_screen.maxwidth=714
_screen.maxheight=449
_screen.autocenter=.t.
*设置系统标题及图标
_screen.caption="新农村合作医疗管理系统" *设置路径
*!* set defa d:\vfp
open database 数据1.dbc
*调用启动表单
do form 启动.scx
read event
return
3.主要工作窗口
窗体:
对象对象名属性事件
窗体formstart Caption:启动
init Autocenter:T -
真
计时器timestartup Enabled:t
timer Interval:0
图像image picturei:\调试
\2.jpg
formstart 的init事件代码如下:this.tirstartup.interval=100
public i as integer
i=1
Timestartup的timer事件代码如下:i=i+1
if i=10 then
release thisform
do form 登陆.scx
endif
对象对象名属性事件窗体Frm登陆Caption:新农村合作医疗管理系统init
标签
Lbl欢迎Caption:欢迎Lbl用户名Caption:用户名Lbl密码Caption:密码
文本框Txt用户名Txt密码
按钮Cmd登陆Caption:登陆
click Cmd退出Caption:退出
Frm登陆的init事件代码如下:
public i as integer
i=0
Cmd登陆的click事件代码如下:
i=i+1
locate for alltrim(用户名密码表.用户名)==alltrim(thisform.txt用户名.value) if found()and alltrim(用户名密码表.密码)==alltrim(thisform.txt密码.value) do form 主窗体.scx
release thisform
else
if i<3 then
=messagebox("操作员或密码错误请重新输入!!!",48,"警告")
thisform.txt密码.setfocus
else
=messagebox("对不起,您是非法用户,系统将会退出!!!",48,"严重警告") quit
endif
endif
Cmd退出的click事件代码如下:
release thisform
对象对象名属性事件
窗体Frm新农合Caption:新农村合作医疗管理系统Autocenter:.t.真
图片image Picture:f:\课程设计
\1.jpg
命令按钮Cmd退出Caption:退出click
Cmd退出的click事件代码如下:release thisform
on shutdown
Quit
对象对象名属性事件窗体Frm医生管理Caption:医生管理
标签
lbltitle
Caption:医生基本信息浏览
Backstyle:0-透明
Autosize:.t.真
Lbl科室
Caption:科室
Backstyle:0-透明
Autosize:.t.真
Lbl姓名
Caption:姓名
Backstyle:0-透明
Autosize:.t.真
Lbl年龄
Caption:年龄
Backstyle:0-透明
Autosize:.t.真
Lbl职称
Caption:职称
Backstyle:0-透明
Autosize:.t.真
文本框txt科室Controlsour:医生.科室txt姓名Controlsour:医生.姓名txt年龄Controlsour:医生.年龄txt职称Controlsour:医生.职称
命令按钮
Cmd首个Caption:首个
click Cmd上一个Caption:上一个
Cmd下一个Caption:下一个
Cmd末个Caption:末个
Cmd取消Caption:取消
线条Line1
Cmd首个的click事件代码如下:go top
this.enabled=.f.
thisform.cmd上一个.enabled=.f. thisform.cmd下一个.enabled=.t. thisform.cmd末个.enabled=.t.
Cmd上一个的click事件代码如下:skip-1
this.enabled=.f.
thisform.cmd下一个.enabled=.t. thisform.cmd末个.enabled=.t.
if bof() then
go top
this.enabled=.f.
thisform.cmd首个.enabled=.f.
endif
thisform.refresh
Cmd下一个的click事件代码如下:skip-1
thisform.cmd下一个.enabled=.t. thisform.cmd末个.enabled=.t.
if bof() then
go top
this.enabled=.f.
thisform.cmd首个.enabled=.f.
endif
thisform.refresh
Cmd末个的click事件代码如下:go bottom
this.enabled=.f.
thisform.cmd下一个.enable=.f. thisform.cmd上一个.enabled=.t. thisform.cmd首个.enabled=.t. thisform.refresh
Cmd取消的click事件代码如下:release thisform
Cmd 查询的click 事件代码如下: zjm=alltrim(thisform.txt 助记码.value) select 药品
set order to tag 助记码 seek zjm &&查找记录 if found()
select 药品.药品名称,药品.单位规格,药品.生产日期,药品,产地,药品价格.单价; from 药品;
where 药品.助记码==alltrim(thisform.txt 助记码.value) and 药品.助记码=药品价格.助记码; into cursor chx
thisform.txt 名称.value=chx.药品名称 thisform.txt 规格.value=chx.单位规格 thisform.txt 单价.value=chx.单价
thisform.txt 生产日期.value=chx.生产日期 thisform.txt 助记码.value=chx.药品名称 else
thisform.txt 名称.value="" thisform.txt 规格.value="" thisform.txt 单价.value="" thisform.txt 生产日期.value="" thisform.txt 助记码.value="" thisform.refresh
*!* messagebox("没有查找到记录,是否添加?",48,"提示")
对象 对象名 属性
事件
窗体
Frm 药品管理 Caption :药品管理
标签 Lbl 助记码 Caption :助记码
Lbl 名称
Caption :名称 Lbl 规格 Caption :规格 Lbl 单价 Caption :单价 Lbl 生产日期
Caption :生产日期
文本框 txt 助记码 txt 名称 txt 规格 txt 单价 txt 生产日期
命令按钮
Cmd 查询 Caption :查询 click
Cmd 添加 Caption :添加 Cmd 删除 Caption :删除
Cmd 取消
endif
*!* hzylh=alltrim(thisform.txt合作医疗号.value)
*!* select 统筹支付
*!* set order to tag 合作医疗号
*!* seek hzylh
*!* if found()
*!* select 统筹支付.费用,统筹支付.个人支付,统筹.支付个人支付比例,统筹支付,基金支付; *!* from 统筹支付;
*!* where 统筹支付.合作医疗号=hzylh; &&alltrim(thisform.txt合作医疗号.value)
*!* into cursor chx
*!* thisform.txt费用.value=chx.费用
*!* thisform.txt个人支付.value=chx.个人支付
*!* thisform.txt个人支付比例.value=chx.个人支付比例
*!* thisform.txt基金支付.value=chx.基金支付
*!* else
*!* thisform.txt费用.value=""
*!* thisform.txt个人支付.value=""
*!* thisform.txt个人支付比例.value=""
*!* thisform.txt基金支付.value=""
*!* messagebox("没有查询到此记录!",48,"警告")
*!* endif
Cmd取消的click事件代码如下:
release thisform
对象对象名属性事件窗体Frm用户添加Caption:用户添加
标签
lbl新用户名Caption:新用户名Lbl新用户名密码Caption:新用户名密码
文本框
Txt新用户名Txt新用户名密码
命令按钮cmd确认添加
click cmd取消
cmd确认添加的click事件代码如下:
a=messagebox("确定添加?",4+32+0,"询问") if a=6
use 用户exclusive
a1=alltrim(thisform.txt新用户.value)
a2=alltrim(thisform.txt新用户密码.value) insert into 用户(用户名,密码)values(a1,a2) endif
Cmd取消的click事件代码如下:
release thisform
on shutdown
对象对象名属性事件
窗体Frm修改密码Caption:修改密码
Lbl用户名Caption:用户名
标签Lbl原始密码Caption:原始密码
Lbl新密码Caption:新密码
Lbl验证密码Caption:验证密码
组合框Cbo用户名
文本框Txt原始密码
Txt新密码
Txt验证密码
命令按钮Cmd确定Caption:确定
click
Cmd取消Caption:取消
Cmd确定的click事件代码如下:
USE 用户
select 用户
loca for 用户名=alltrim(thisform.cbo用户名.value)
a1=alltrim(thisform.txt新密码.value) &&新密码
a2=alltrim(thisform.txt验证密码.value) &&验证密码
pass1=alltrim(thisform.txt原始密码.value) &&旧密码
if pass1!=ALLTRIM(密码)
thisform.txt原始密码.value=''
thisform.txt新密码.value=''
thisform.txt验证密码.value=''
thisform.txt原始密码.setfocus
messagebox('旧密码错误!请重新输入!',64,'错误信息')
else
IF ""=a1
messagebox('密码不可为空',64,'错误信息')
RETURN
endif
if a1!=a2
messagebox('两新密码不相同,请再次输入',64,'错误信息')
thisform.txt原始密码.value=''
thisform.txt新密码.value=''
thisform.txt验证密码.setfocus
else
repl 密码with a1
messagebox('密码修改成功',54,'系统信息')
thisform.Release
endif
ENDIF
SELECT 用户
Use
Cmd取消的click事件代码如下:
release thisform
对象对象名属性事件窗体Frm统筹支付Autocenter:.T.真
标签
Lbl合作医疗号
Caption:合作医疗
号
Lbl费用Caption:费用Lbl个人支付Caption:个人支付Lbl个人支付比例
Caption:个人支付
比例
Lbl基金支付Caption:基金支付
按钮Cmd查询Caption:查询
Click Cmd取消Caption:取消
Cmd查询的click代码如下:
hzylh=alltrim(thisform.txt合作医疗号.value) select 统筹支付
set order to tag 合作医疗号
seek hzylh
if found()
select 统筹支付.费用,统筹支付.个人支付,统筹.支付个人支付比例,统筹支付,基金支付; from 统筹支付;
where 统筹支付.合作医疗号=hzylh; &&alltrim(thisform.txt合作医疗号.value) into cursor chx
thisform.txt费用.value=chx.费用
thisform.txt个人支付.value=chx.个人支付
thisform.txt个人支付比例.value=chx.个人支付比例
thisform.txt基金支付.value=chx.基金支付
else
thisform.txt费用.value=""
thisform.txt个人支付.value=""
thisform.txt个人支付比例.value=""
thisform.txt基金支付.value=""
messagebox("没有查询到此记录!",48,"警告")
endif
cmd取消的click事件代码如下:
release thisform
对象对象名属性事件
窗体Frm门诊查询Caption:门诊查询Autocenter:.T.-真
标签Lbl合作医疗号Caption:合作医疗号Lbl姓名Caption:姓名Lbl用药名称Caption:用药名称Lbl用药名称1 Caption:用药名称1 Lbl用药名称2 Caption:用药名称2 Lbl用药名称3 Caption:用药名称3 Lbl用药名称4 Caption:用药名称4 Lbl用药名称5 Caption:用药名称5 Lbl用药名称6 Caption:用药名称6 Lbl费用Caption:费用
Lbl费用Caption:费用
文本框Txt合作医疗号Txt姓名Txt用药名称1 Txt用药名称2 Txt用药名称3 Txt用药名称4 Txt用药名称5 Txt用药名称6 Txt收费
线条Line1 Backcolor:0.0.255 Line2
Line3
按钮Cmd查询Caption:查询Cmd取消Caption:取消
Cmd查询的click事件代码如下
hzylh=alltrim(thisform.txt合作医疗号.value)
select 就医记录
set order to tag 合作医疗号
seek hzylh
if found()
select 就医记录.费用,就医记录.姓名,就医记录.用药名称1,就医记录.用药名称2,就医记录.用药名称3,就医记录.用药名称4,就医记录.用药名称5,就医记录.用药名称6;
from 就医记录;