门诊药房取药系统的设计与实现

2014-11-19 03:45张渝王放李初民
中国医疗设备 2014年1期
关键词:触发器记录表药房

张渝,王放,李初民

1.第三军医大学新桥医院 信息科,重庆 400037;2.第三军医大学西南医院院办,重庆 400038

门诊取药是患者在医院享受医疗服务的重要环节,直接影响患者就医的满意度。目前有些医院门诊取药流程采用的是预配候取模式;有些医院采用刷卡叫号取药模式;有些医院采用六西格玛管理方法对取药流程进行重组以缩短患者在门诊药房的无效等候时间,降低患者的不满意度[1]。而我院主要是根据门诊药房物理位置和工作人员数量的情况,对取药流程在预配候诊模式基础上进行了改进和完善,提高了调剂效率和质量。

1 系统设计思想

门诊取药系统是为了解决患者在等候配药过程中所碰到的混乱、拥挤等现象,使患者有序地取药,并可以对特殊的患者(如老年人等)进行优先配药。为节省患者排队时间,我院最先使用了取药预配候取模式即患者缴费后触发药房处方打印,药师即可按处方开始配药,等到患者到达药房时已经配好[2]。这种模式运行了1周后发现,在患者数量不多并且取药及时的情况下,这种模式很适合,一旦患者多而且取药不及时,会造成发药窗口堆满不来取药的药篮,而及时来取药的患者还要空等很长时间,极大地降低了药师的工作效率。如果取药的人集中取药,秩序仍然混乱[3]。为此,我们重新设计配药取药流程为刷卡取药模式,即患者到达门诊药房后,取号时触发药房处方打印,此时药师按序取药和摆放药篮,发药师通过语音叫号系统顺呼患者到窗口进行取药。这种模式极大地提高了药师的工作效率,营造了人性化取药环境,同时也让药剂师有更充裕的时间和精力开展专业服务和关怀。

2 系统的实现

系统采用C/S结构设计,以Delphi作为开发工具,Oracle10g作为后台数据库。系统主要功能设计如下:

(1)自助取号。已缴费的患者在取号时为其分配取药的窗口和取药的序号。

(2)处方打印。患者取号后触发处方打印,药师凭处方摆药。

(3)信息显示与语音提示。将取药患者的序号和姓名显示在LED屏上,同时配有语音提示。

(4)发药终端。药师用发药终端按序呼叫取药患者。(5)综合管理。实现对工作人员权限的管理和相应的参数设置。

2.1 数据库表设计

系统共设计了14张数据库表,其中主要的6张表为:

(1)待发药处方主记录表(DRUG_PRESC_MASTER_S2000)。此表用于存放从医院信息系统(HIS)的待发药处方主记录表中读取的数据。其结构基本上和HIS中的待发药处方主记录表结构一致,只是增加了部分标识字段。当患者的处方被确认以后,相应的记录就会被删除掉。数据的插入和删除都是由接口软件来完成。未被删除的数据将只保留30天。

(2)待发药处方明细表记录表(DRUG_PRESC_DETAIL_S2000)。其作用和操作要点与待发药处方主记录表相同。

(3)处方上屏记录表(DRUG_DISP_LIST)。此表记录显示屏上的每一张处方信息。员工根据处方把药配好后,通过扫描处方条码和输入员工ID号来将处方信息上屏,并将信息记录到此表中,以备查询和对员工工作量进行统计。

(4)待下屏患者信息表(DRUG_DOWNDISP_S2000)。此表记录每一个需要从LED显示屏上消掉的患者(已取药或退药)姓名。信息处理后立即删除记录。

(5)处方打印机信息表(DRUG_PRINTER_LIST)。此表记录处方打印机信息。处方打印软件根据处方信息支配各打印机工作。需要注意的是打印机名称和别名都不能有重复,如果重复将会对后续的识别工作带来麻烦。

(6)发药终端用户信息表(DRUG_SENDER_CLIENT)。此表只保存登录发药终端软件的用户信息、状态数据。用户在登录系统时写入表中,退出系统时将其删除。

其他几张表分别是:药房员工记录表(DRUG_EMPLOYEES)、药房窗口屏提示信息表(DRUG_HINT)、在线用户信息表(DRUG_ONLINE_USERS)、特殊窗口屏信息表(DRUG_SPEC_WINDOW)、窗口标题信息表(DRUG_TITLE)、系统用户信息表(DRUG_USERS)、数据状态表(DRUG_HAVEDATA)、窗口信息表(DRUG_WINDOW_COUNT)。

2.2 数据接口

采用触发器、临时表、接口软件相结合的模式[4]建立数据接口,将HIS中产生待发药处方主记录和明细数据提取到后台摆药系统,用于摆药单打印及屏幕显示、语音呼叫。数据接口流程示意图,见图1。

图1 数据接口流程示意图

数据具体接口内容是在HIS库上建立临时表、触发器以及连接用户表等数据库对象。

2.2.1 临时表

临时表用于存放HIS中收完费的待发药处方主记录,接口实现SQL语句:

CREATE TABLE PHARMACY.DRUG_PRESC_MASTER_S2000

//创建表

PRESC_DATE DATE NOT NULL,

PRESC_NO NUMBER(5) DEFAULT 0 NOT NULL,

DISPENSARY VARCHAR2(8),

QUEUE_ID VARCHAR2(2),

STATUS NUMBER(1) DEFAULT 0,

PATIENT_ID VARCHAR2(10),

NAME VARCHAR2(8),

NAME_PHONETIC VARCHAR2(16),

IDENTITY VARCHAR2(10),

CHARGE_TYPE VARCHAR2(8),

UNIT_IN_CONTRACT VARCHAR2(11),

PRESC_TYPE NUMBER(1) DEFAULT 0,

PRESC_ATTR VARCHAR2(8),

PRESC_SOURCE NUMBER(1) DEFAULT 0,

REPETITION NUMBER(2) DEFAULT 0,

COSTS NUMBER(8,2) DEFAULT 0,

PAYMENTS NUMBER(8,2) DEFAULT 0,

ORDERED_BY VARCHAR2(8),

PRESCRIBED_BY VARCHAR2(8),

ENTERED_BY VARCHAR2(8),

INS_DEL NUMBER(1) DEFAULT 0,

REG_DATE DATE

2.2.2 触发器

在DRUG_PRESC_MASTER_TEMP表上建立插入事件、删除事件、更新事件3个触发器,相应的接口实现SQL语句如下:

(1)插入事件:

CREATE OR REPLACE TRIGGER "PHARMACY"."MASTER_TEMP_INSERT_S2000" //建触发器

AFTER INSERT ON "PHARMACY"."DRUG_PRESC_MASTER_TEMP" FOR EACH ROW //有数据插入引发处方器

BEGIN

IF (:NEW.PRESC_TYPE=1) //为西药

AND (:NEW.PRESC_SOURCE=0) THEN //门诊处方

--IF (:NEW.DISPENSARY='270107 ') THEN //发药单位为门诊西药房

INSERT INTO DRUG_PRESC_MASTER_S2000 //插入数据

( PRESC_DATE,

PRESC_NO,

PATIENT_ID,

NAME,

DISPENSARY,

IDENTITY,

PRESC_TYPE,

PRESC_ATTR,

PRESC_SOURCE,

COSTS,

ORDERED_BY,

PRESCRIBED_BY,

ENTERED_BY,

INS_DEL,REG_DATE)

VALUES(

:NEW.PRESC_DATE,

:NEW.PRESC_NO,

:NEW.PATIENT_ID,

:NEW.NAME,

:NEW.DISPENSARY,

:NEW.IDENTITY,

:NEW.PRESC_TYPE,

:NEW.PRESC_ATTR,

:NEW.PRESC_SOURCE,

:NEW.COSTS,

:NEW.ORDERED_BY,

:NEW.PRESCRIBED_BY,

:NEW.ENTERED_BY,

1,SYSDATE);

END IF;

END;

(2)删除事件:

CREATE OR REPLACE TRIGGER "PHARMACY"."MASTER_TEMP_DEL_S2000"

//建触发器

AFTER DELETE ON "PHARMACY"."DRUG_PRESC_MASTER_TEMP" FOR EACH ROW

//数据删除时触发BEGIN

IF (:OLD.PRESC_TYPE=0) AND(:OLD.PRESC_SOURCE=0) THEN

INSERT INTO

DRUG_PRESC_MASTER_S2000(PRESC_DATE,PRESC_NO,PATIENT_ID,NAME,DISPENSARY,INS_DEL,REG_DATE)

VALUES(:OLD.PRESC_DATE,:OLD.PRESC_NO,:OLD.PATIENT_ID,:OLD.NAME,:OLD.DISPENSARY,2,SYSDATE);

END IF;

END;

(3)更新事件:

CREATE OR REPLACE TRIGGER "PHARMACY"."MASTER_TEMP_UPDATE" BEFORE

//建触发器

UPDATE OF "DISPENSARY" ON"PHARMACY"."DRUG_PRESC_MASTER_TEMP" FOR

EACH ROW DECLARE

//数据更新时触发

BEGIN

UPDATE DRUG_PRESC_MASTER_S2000 SET DISPENSARY=:NEW.DISPENSARY WHERE PRESC_NO=:NEW.PRESC_NO AND PRESC_DATE=:NEW.PRESC_DATE;

END;

2.2.3 连接用户表

此表为接口软件,用于连接HIS数据库、读取数据。可以读写临时表:DRUG_PRESC_MASTER_S2000;可以访问HIS的DRUG_PRESC_DETAIL_TEMP, DRUG_STOCK表。

3 结语

本系统已在我院运行2年多,使门诊的整个取药流程更趋合理,基本消除了以往取药混乱的情况,使药品调剂过程秩序井然,提高了药师工作效率和服务水平,也使门诊管理水平提高到了新的层次。但也存在一些不足之处,如处方摆药单的浪费、自助取号对特殊患者的优先等问题,这些都需要我们在实践中不断地改进和完善[5-7]。

[1]廖靖萍,于西全,宋洪涛.刷卡叫号取药模式在我院门诊药房应用的体会[J].中国药房,2011,22(13):1175-1177.

[2]石壁辉.医院药房后台摆药排队系统的设计与实现[J].中国医疗设备,2012,27(2):80-81.

[3]包代小,李根全.中小型药房取药最短路径算法研究[J].中国药房,2012,(13):1192-1194.

[4]张渝,李初民,王放.后台摆药作业模式研究及设计[J].医疗卫生装备,2012,(8):101-102.

[5]王怀冲,徐颖颖,张相彩,等.门诊药房精细化药学服务模式与实践[J].浙江中西医结合杂志,2012,(7):572-574.

[6]张昕.门诊药房系统信息化的实践[J].医学信息,2010,23(7):2266.

[7]匡长春,王薇,窦有业.排队叫号系统在门门诊药房的应用[J].中国药业,2010,19(12):64-65.

猜你喜欢
触发器记录表药房
2022.04.21~2022.05.20国外运载火箭发射记录表
2022.1.21~2022.2.20国外运载火箭发射记录表
浅谈时序逻辑电路的成长记忆
2021.01.21~2021.02.20 国外运载火箭发射记录表
2020.7.21~2020.8.20国外运载火箭发射记录表
触发器在酒店管理系统中的应用
药房托管
陈勇:我不看好这样的药房托管
药房托管 好还是不好
药房托管动了谁的“奶酪”