医院信息系统软件总体设计方案.docx

上传人:b****8 文档编号:23568277 上传时间:2023-05-18 格式:DOCX 页数:70 大小:45.01KB
下载 相关 举报
医院信息系统软件总体设计方案.docx_第1页
第1页 / 共70页
医院信息系统软件总体设计方案.docx_第2页
第2页 / 共70页
医院信息系统软件总体设计方案.docx_第3页
第3页 / 共70页
医院信息系统软件总体设计方案.docx_第4页
第4页 / 共70页
医院信息系统软件总体设计方案.docx_第5页
第5页 / 共70页
点击查看更多>>
下载资源
资源描述

医院信息系统软件总体设计方案.docx

《医院信息系统软件总体设计方案.docx》由会员分享,可在线阅读,更多相关《医院信息系统软件总体设计方案.docx(70页珍藏版)》请在冰豆网上搜索。

医院信息系统软件总体设计方案.docx

医院信息系统软件总体设计方案

医院信息系统软件总体设计方案

前言

为了前端开发能够很好的实现产品化,软件设计的层次化,提高软件面向不同用户层次的能力,我们把软件分为三个层次,开发层,产品层和用户层。

开发层一般由开发部管理和维护,他对系统和应用的知识要求较高,更多的是侧重系统知识面向应用的应用,对业务的理解主要侧重在对业务系统总体框架的理解。

产品层一般由产品部管理和维护,他对应用和系统的知识要求较高,更多的是侧重在产品的应用规划,需要对业务理解非常深刻,同时具有高度的业务抽象和归纳能力,而对软件本身的维护主要建立在开发部提供的基本组件的基础上,对组件的合理使用是其软件维护的主要任务。

用户层一般由客户服务部进行维护和管理,他需要很深的业务经验,能利用自身对应用系统的深刻理解及时处理用户现场问题,对软件开发和系统知识的要求相对较低,但对工程人员例外。

第一章:

软件设计的总体思想

1。

1中间件的选择

1。

2系统层次描述

1。

3开发层内容描述

1。

3。

1前端控件的开发

1。

3。

2三层式交易接口的开发

1。

3。

3数据库访问工具的开发

1。

3。

4交易接口数据结构自动生成

按交易接口文档生成交易接口数据结构文档。

详细见后面章节内容。

1。

3。

5报表工具的开发

基于grid的报表打印,如各种统计报表。

基于自由格式的报表打印,如各种单据。

基于word和excel的OLE方式的打印。

1。

4产品层内容描述

1。

5用户层内容描述

第二章:

相关技术指标描述

第三章:

前端控件的开发

3。

1ldbase_FRM控件

3。

1.1ldbase_FRM控件总体说明

把操作提示区放到一起,如操作员,日期,终端,版权提示区和操作提示区。

提供几个更新方法:

SetUsrName(Usrname:

string)

通过基本的API:

getargv(‘usrname’);得到

SetDate(DateStr:

string)

通过基本的date函数得到

SetTrmno(Trmno:

string)

通过基本的API:

getargv(‘trmno’)得到

SetCopyright(CopyRightStr:

string)

通过基本的API:

getargv(‘trmno’)得到

SetHelp(HelpStr:

string)

通过基本的txt_control.help得到

注意把每个edit控件,combo控件的hint=helpster,showhint=true.

能否把控件分成一组一组的,便于控制?

增加以下方法:

Focusfirst(grp:

string)

grp=controlobjectgroupname,if==nilindicatecurrentgroup.

Ifcurrentgrp==-1findfirstgroup.

Focusbyname(ctlname:

string)

Ctlname表示控件名称

FocusLast(grd:

string)

grp=konggroupname,if==nilindicatecurrentgroup.

FocusPrev(grp:

string)

grp=controlobjectgroupname,if==nilindicatecurrentgroup.

FocusNext(grp:

string)

grp=controlobjectgroupname,if==nilindicatecurrentgroup.

UpdCtlByStr(Grp:

String,Updstr:

string)

grp=controlobjectgroupname,if==nilindicatecurrentgroup.

UpdStr格式如’ctyno=abcdef;ctyname=972397;。

’.参见gridstring

一般他用grid.getstr得到,在grid.onclick事件中调用

为了实现以上功能,每个控件必须有一个group属性,表示控件所属的组。

3。

2ldtext控件

3。

2.1ldtext控件总体说明

增加属性:

Group

表示控件所属的组,如”luo”

一般任何控件都需要本属性

TabStop

表示控件是否可以得到焦点

一般任何控件都需要本属性

TabOrder

表示控件得到焦点的顺序

HelpStr

表示控件得到焦点后的提示字符串

MatchStr

表示grid中的内容字符串要更新的edit或其他控件的内容匹配字符串

如grid中得到’ctyno=abcdef;ctyname=972397;。

’.

而屏幕上有一个txt_bdctyf_ctyno.matchstr=’ctyno’,则txt_bdxtyf_ctyno.text=’abcdef’

他通过ldbase_frm的ctlupdate方法更新,具体说明见ldbase_frm说明

FmtStr

表示编辑的内容的数据格式,如:

#V(n)自由格式,长度为n,数据库用varchar

#Z(n)自由格式,长度为n,数据库用char

#S(n)'a'-'z''0'-'9''A'-'Z'和汉字字符串格式,长度为n

#A(n)'a'-'z''0'-'9''A'-'Z'字符串格式,长度为n

#C(n)汉字字符串格式,长度为n

#G(n)'0'-'9'字符串格式,长度为n

#P(n)'0'-'9'字符串格式,前端显示用密码方式显示

#D(yn,mn,dn)日期字符串格式,年份长度为yn,月份长度为mn,天的长度为dn

#T(hn,mn,sn)时间字符串格式,小时长度为hn,分钟长度为mn,秒的长度为sn

#I(n)整型格式长度为n

#F(n1,n2)浮点格式,小数点前面为n1位,小数为n2位

#$(n1,n2)金额格式,小数点前面为n1位,小数为n2位

minlen

表示输入数据的最小长度,一般>=0

maxlen

表示输入数据的最大长度,一般>0,0和负数表示不限制

keystr

表示编辑内容是否关键字字段,如:

‘p’表示唯一的primarykey

‘f’表示和主表对应的组合primary之一

‘c’表示不和主表对应的组合其他primarykey

‘t’表示本字段为不可以修改字段

‘n’表示本字段为一般字段

BackAttr

表示在控件的首字符前按backspace的处理:

false表示无动作,true表示进入前一个控件

FullAttr

表示在控件输入满字符后的处理,如

false表示无动作,true表示进入下一个控件

FullFlag

表示该控件必须输入满字符,如

false-表示无需输入满,true-表示必须输入满

Backcolor

表示该控件的提示字符颜色

Forecolor

表示该控件的输入字符在失去焦点后的颜色

EditBackColor

表示该控件的在输入时输入框的颜色

EditForeColor

表示该控件的在输入时输入字符的颜色

FontNo

表示该字符字体,如建立常见的几种字体

Layout

表示标签的位置关系,如

left/right表示左右,top/bottom表示上下

LabelWidth

表示标签的长度

TextWidth

表示输入框的长度

缺省的passwordchar为*,无需在外部指定

缺省的AllowHeadNull为false

缺省的showhint为true

缺省的hint为helpstr

3。

3ldgrid控件

3。

3.1ldgrid控件总体说明

增加以下属性:

attr:

表示唯一定位时的列属性

’p’,’f’,’c’表示唯一定位时要用到的列进行比较和匹配

‘n’和’’t’及其他表示不需要

dispf:

表示列的显示和非显示属性,’d’or‘h’

True表示列显示,False表示列不显示

增加以下方法:

LdGrid.SetCols(ColFmtStr:

string)

按列描述字符串格式初始化grid的列.

ColFmtStr格式如下:

”name;width;fmt;attr;cption#。

Name格式如:

ctyno

Width格式如:

width

Fmt格式如:

V(8),C(8),I(6),G(6),A(20),D(4,2,2),T(2,2,2),F(10,2),$(10.2)等

Attr格式如:

null,disp,print,disp&print

Caption格式如:

国家编码

RowFirst()

把光标定位到第一行上

RowEmpty()

清除所有内容

RowLocate(Locstr:

string)

Locstr定位内容字符串,格式如下:

’ctyno=abcdef;ctyname=972397;。

RowAppend(Appstr:

string)

Appstr删除内容字符串,格式如下:

’ctyno=abcdef;ctyname=972397;。

Appstr=nilor‘’表示空行

在当前行之前添加,光标定位在刚添加的一行。

RowInsert(Insstr:

string)

Insstr插入内容字符串,格式如下:

’ctyno=abcdef;ctyname=972397;。

Insstr=nilor‘’表示空行

在当前行之前插入,光标定位在刚插入的一行。

RowUpdate(Updstr:

string)

Updstr修改内容字符串,格式如下:

’ctyno=abcdef;ctyname=972397;。

RowDelete(Delstr:

string)

Delstr删除内容字符串,格式如下:

’ctyno=abcdef;ctyname=972397;。

RowGetStr(Getstr:

string)

Getstr取得内容字符串,格式如下:

’ctyno=abcdef;ctyname=972397;。

RowPrev()

把光标定位到上一行上

RowNext()

把光标定位到下一行上

RowLast()

把光标定位到最后一行上

AddTitle(TitleStr:

string)

把打印标题字符串加到GRID中

AddPage(PageHeaderLStr,PageHeaderCStr,PageHeaderRStr:

string)

把打印表头字符串加到GRID中

AddPage(PageFooterLStr,PageFooterCStr,PageFooterRStr:

string)

把打印表尾字符串加到GRID中

PreView()

打印预览

OnClick()

一般本函数由用户编写,他负责把选中的行或列的内容写到画面的edit控件上

3。

4ldreport控件

3。

5ldcombo控件

参见ldedit

3。

6button控件

参见ldedit

第四章:

终端授权接口描述

4。

1终端授权接口总体说明

终端授权主要用于管理客户端的终端的合法性授权,只有通过软件的检查并得到授权的终端才可以和后端系统进行交易,终端授权文件和系统的运行目录在同一个目录下,它的名字叫ldtrmapp.ini,同时系统提供一个处理终端授权的库函数,他和系统的运行目录在同一个目录下,它的名字叫ldtrmapp.dll。

其中ldtrmapp.ini文件格式如下:

[hostname]

trmno=”000001”

key=”acfdefghh”

为了保证一个配置文件可以重复使用在多个终端上,上述内容可以重复,以上内容表示一个终端的配置文件,系统支持每个终端一个文件,其内容各不一样。

其hostname为本机hostname。

但为了管理方便,可以把系统所有的终端配置文件写在同一个文件中,因此本文本有多个SECTION。

Trmno表示主机上终端数据库中描述的终端名称。

Key表示通过用hostname经过trmno和前端系统的特殊可控制变量变换后的结果,一般用hash和DES算法实现。

其中ldtrmapp.dll提供以下动态库函数:

取得终端名称-GetHostName()

检查终端的合法性-ChkTrmValid()

4。

2终端授权接口的详细描述

4。

2。

1GetHostName()

函数调用原型说明:

intGetHostname(hostname);

函数接口参数说明:

char*hostname;//表示要返回的主机名称

函数返回值说明:

0-表示成功,1-表示失败。

函数调用说明:

系统实现说明:

4。

2。

2ChkTrmValid()

函数调用原型说明:

intChkTrmValid(trmid);

函数接口参数说明:

char*trmid;//表示返回的终端代号。

函数返回值说明:

0-表示合法,1-表示非法,2-读授权文件失败。

函数调用说明:

系统实现说明:

系统自动取得hostname,检查终端的合法性,返回合法的终端代号。

 

第五章:

三层式交易接口描述

5。

1交易接口总体说明

交易接口属于开发层面的内容,以下主要通过提供客户端的动态库实现客户端访问的透明性,客户端的动态库和客户端的运行程序在同一个用户目录下,文件名为ldmidc.dll。

同时提供编程的头文件ldmidch.pas供程序员参考。

同时为了服务器端的访问透明,服务器端提供相关动态库函数,文件名为ldmids.dll。

同时提供编程的头文件ldmidsh.pas供程序员参考。

 

该客户端动态库ldmidc.dll提供以下函数:

和中间件核心连接函数-ConnectMidKernel()

交易请求函数-DoMidTx()

和中间件核心断链函数-DisconnectMidKernel()

取得当前返回错误提示函数-GetTxMsgDefault()

取得任意返回错误提示函数-GetTxMsgByInt()

该服务器端动态库ldmids.dll提供以下函数:

取得系统变量函数-GetSvrVar()

5。

2客户端交易接口的详细描述

5。

2。

1ConnectMidKernel()

函数调用原型说明:

intConnectMidKernel(midware,midwarehost,trmid,usrid,usrpasswd);

函数接口参数说明:

constchar*midware;//表示连接的MIDWARE的名字,如tuxedo,cstalk等

constchar*midwarehost;//表示连接的MIDWARE核心主机的别名或IP地址

constchar*trmid;//表示连接的CLIENT的终端代号,一般用hostname表示

constchar*usrid;//表示连接的CLIENT的用户代号,一般用usrid表示

constchar*usrpasswd;//连接的CLIENT的用户口令,一般用passwd表示.

函数返回值说明:

0-表示成功,1-表示失败。

对于具体错误返回提示用GetErrMsgDedefult得到。

函数调用说明:

本函数一般在系统初始化时调用,如在formload时处理,同时系统允许在每次调用DoMidTx时及时调用本函数,允许和DisconnectMidKernel()嵌套调用。

系统实现说明:

当发现已经连接了以后,系统不在做连接动作,而只把连接的次数加1,在断连接时自动把连接次数减一,实现系统的嵌套式调用。

3。

1。

2DoMidTx()

函数调用原型说明:

intDoMidTx(txc,tic,tid,toc,trc,tod);

函数接口参数说明:

TXC*txc;//表示交易控制块结构

TIC*tic;//表示交易请求控制块结构

Char*tid;//表示交易请求数据块,由用户自己定义,

//一般和交易接口文档的内容一致。

Char*trc;//表示交易请求和应答往返控制块。

由用户设置和系统返回。

//在调用时为本次往返的起始条件,一般首次由用户设置。

//在返回时为下次往返的起始条件。

TOC*toc;//表示交易应答控制块

Char*tod;//表示交易应答数据块

//一般和交易接口文档的内容一致

交易控制块一般包括如下内容:

typedefstruct{

chartimeout[6];//表示交易延时,以秒为单位

chartrmid[6];//终端代号

chartrmsno[6];//终端流水号

charusrid[6];//用户代号

charusrsno[6];//用户流水号

chartxtoken[24];//交易令牌

}TXC;

交易请求控制块一般包括如下内容:

typedefstruct{

charsvrname[24];//表示服务名称

chartxno[6];//表示交易代号

charhcode[1];//表示交易冲正标志

//'0'--正常状态

//'1'--表示取消状态,表示不留痕迹

//'2'--表示冲正状态,表示留痕迹

chartxtype[1];//表示交易请求期望得到的结果类型

//'0'--表示期望得到单笔返回结果

//'1'--表示期望得到多笔往返返回

charcommitf[1];//表示需要设置数据库事务标志

//更改数据库用'1'

//查询数据库用'0'

//其他标志由用户自己控制

charhseqno[6];//冲正或取消交易的原流水号。

chartxcnt[6];//本次交易上送tid记录数

chartxmax[6];//本次交易可以返回的最大记录数

//如果为0表示:

//由服务器端按tid.todlen决定返回最大记录数

chartxfee[12];//交易手续费

chartxamt[12];//交易金额

chartidlen[6];//交易请求数据块长度

chartrclen[6];//交易往返控制块长度

chartodlen[6];//交易返回数据块长度

}TIC;

交易返回控制块包括如下内容:

typedefstruct{

chartxrst[8];//交易返回代码

chartxmsg[80];//交易错误提示。

chartxhlp[80];//交易返回处理提示。

chartrmseqno[6];//返回终端流水号

charusrseqno[6];//返回用户流水号,一般由主机生成,

//当tid为空,tod为主机产生流水号

chartxtype[1];//表示交易返回结果类型

//'0'--表示单笔返回结果

//'1'--表示多笔往返返回

chartxcnt[6];//本次交易返回记录数

//在非往返交易情况下为1

chartxmax[6];//本次交易可以返回的最大记录数

//在非往返交易情况下为1

//如果大于交易返回记录数表示交易结束

chartodlen[6];//返回数据长度

}TOC;

函数返回值说明:

0-表示成功,1-表示失败。

对于具体错误返回提示用GetErrMsgDedefult得到。

函数调用说明:

本函数一般在交易请求时调用。

系统实现说明:

当发现未连接时,系统自动做连接动作。

3。

1。

3DisconnectMidKernel()

函数调用原型说明:

intDisconnectMidKernel();

函数接口参数说明:

函数返回值说明:

0-表示成功,1-表示失败。

对于具体错误返回提示用GetErrMsgDedefult得到。

函数调用说明:

本函数一般在退出系统时调用,注意要和ConnectMidKernel()匹配。

系统实现说明:

当发现未连接时,系统不做连接动作。

当系统连接数不为0时,自动减一,如果减一为0,真实Disconnect。

和ConnectMidKernel实现嵌套。

3。

1。

4GetTxMsgByInt()

函数调用原型说明:

voidGetTxMsgByInt(errcode,errmsg);

函数接口参数说明:

interrcode;//错误代码

char*errmsg;//错误提示缓冲区

函数返回值说明:

函数调用说明:

本函数一般在取得系统各种错误代码的提示时使用。

系统实现说明:

3。

1。

5GetTxMsgDefault()

函数调用原型说明:

voidGetTxMsgDefault(errmsg);

函数接口参数说明:

char*errmsg;//错误提示缓冲区

函数返回值说明:

函数调用说明:

本函数一般在上次调用发生错误时使用。

系统实现说明:

5。

3服务器端交易接口的详细描述

5。

3。

1GetSvrVar()

函数调用原型说明:

intGetSvrVar(intvarid,TXC*txc,TIC*tic,char*varstr);

函数接口参数说明:

intvarid;//变量代号

TXC*txc;//见TXC描述

TIC*tic;//见TIC描述

Char*varstr;//返回结果字符串

函数返回值说明:

0-成功,1-失败(无此变量)

函数调用说明:

varid描述的各个txc,tic变量见相关的include头文件ldmidsh.pas

系统实现说明:

5。

3。

2CmpSvrVar()

函数调用原型说明:

intCmpSvrVar(intvarid,TXC*txc,TIC*tic,char*str);

函数接口参数说明:

intvarid;//变量代号

TXC*txc;//见TXC描述

TIC*tic;//见TIC描述

Char*str;//比较字符串

函数返回值说明:

0-匹配,1-不匹配,2-无此变量

函数调用说明:

varid描述的各个txc,tic变量见相关的include头文件ldmidsh.pas

匹配不区分大小写。

系统实现说明:

第六章:

数据库访问接口描述

6。

1数据库接口总体说明

数据访问接口主要用于处理数据库的数据访问,每个数据库都有相关的数据库访问函数,一般包括插入,删除,修改,运算,选择,加锁,最小,最大等。

为了实现以上功能,必须提供一个项目数据库描述脚本和数据库的原始描述脚本,通过这两个最基本的脚本自动产生数据库访问的程序代码和项目工程文件,再通过该项目工程文件产生相关的动态连接库,具体的原始文

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1