住院发药类型配置说明
- 住院西药医嘱在开具时,根据医嘱的周期类型,以及一系列药品的数据(新会版本还包括用药途径的类型),在Config. SendMedicineConfiguration这个表里面,查找对应的发药类型。如果在这个表中找不到匹配记录,发药类型为空,数据库中,医嘱的发药类型id=-1,如果住院长期医嘱,在开医嘱的时候,取不到发药类型,之后配置数据是否补回,请求发药都没有发药类型。需要直接更新数据库。另外,发药类型为空的发药单,如果发生退药,无法在退药界面显示退药请求,要先更正发药类型
- Config. SendMedicineConfiguration表
- 如果发现有医嘱,或者发药单,没有发药类型,或发药类型错误,可以用下面的sql查询医嘱用于匹配发药类型的条件,再用对应的条件,查找Config. SendMedicineConfiguration,看看是否有对应的条件或发药类型维护是否正确。
SELECT AA.*
,pe.DISPLAYNAME as 医嘱周期
,co.DISPLAYNAME as 贵重标志
,sub.DISPLAYNAME as 药品分类
,super.DISPLAYNAME as 药品监管类型
,fo.DISPLAYNAME as 剂型
from
(SELECT ODR.PERIODKIND,A.SUBSTANCECLASSCODEID,M.SUPERVISEKINDCODEID,M.FORMKINDCODEID,M.COSTLYCODEID
FROM PORX.APPLICATIONMEDICINE A
JOIN MMAT.MEDICINE M ON A.SUBSTANCEID=M.MEDICINEID
JOIN MMAT.SUBSTANCE B ON A.SUBSTANCEID=B.SUBSTANCEID
JOIN POOR.ORDERREQUEST ODR ON A.ORDERREQUESTID=ODR.ORDERREQUESTID
WHERE
A.COMBINEDMEDICATIONREQUESTID=67546 —发药单号
—and a.encounterid=123 —患者id
—and a.sendmedicinetypeid= -1 —查找无发药类型的请求发药记录
— 其他条件
GROUP BY ODR.PERIODKIND,A.SUBSTANCECLASSCODEID,M.SUPERVISEKINDCODEID,M.FORMKINDCODEID,M.COSTLYCODEID) AA
join concept.codedtermvalue pe on aa.PERIODKIND=pe.codeid and pe.codedtermid=11036 —医嘱周期
join concept.codedtermvalue co on aa.COSTLYCODEID=co.codeid and co.codedtermid=11038 —贵重标志
join concept.codedtermvalue sub on aa.SUBSTANCECLASSCODEID=sub.codeid and sub.codedtermid=10849 —药品分类
join concept.codedtermvalue super on aa.SUPERVISEKINDCODEID=super.codeid and super.codedtermid=11037 —药品监管类型
JOIN CONCEPT.CODEDTERMVALUE FO ON AA.FORMKINDCODEID=FO.CODEID AND FO.CODEDTERMID=11039 —剂型
;
- 各个条件介绍:
- 周期
- 药品类型
- 监管类型
- 剂型类型
剂型并不是用具体的剂型id匹配,是剂型里面的一个“剂型分类”的id,见下图
- 贵重标志
- 配置表里面,记录数量,由于配置表,是按照上面几个条件的组合进行配置,所以一个完整的配置表,应该按所有条件可选数量相乘,以上面为例,需要有:2x2x14x5x3=840条记录,新会增加一个用药途径执行类型的条件,有5个选项,则需要有:2x2x14x5x3x5=4200条配置记录,才能完全覆盖所有发药类型,这些发药类型匹配维护,没有界面可以维护,要人手insert进去
- 对于发现缺少发药类型的或发药类型错误的发药单的处理。
- 根据上面提供的查询脚本,查出发药单对应的药品,用于匹配发药类型的几个条件。
- 按这几个条件,查询配置表,看看是否有对应条件的发药类型维护,或者类型是否正确。
- 如果b步骤,发药没有维护,或发药类型错误。咨询医院或相关有经验人员,相关条件归属哪个发药类型,补回或更新配置。补回配置的脚本如下,各个条件的具体值,要根据实际填写
INSERT
INTO CONFIG.SENDMEDICINECONFIGURATION
(
SENDMEDICINETYPEID, PERIODKIND, MEDICINEKINDCODEID, MEDICINESUPERVISEKINDCODEID, MEDICINECOSTLYCODEID, MEDICINEFORMCODEID, ROUTEEXECUTEKINDCODEID, ISDELETED, ROWVERSION )
VALUES
( 4, 1, 1, 0, 1, 3, 0, 0, SYSDATE );
- 如果相关维护没有错误,则要检查药品维护里面,与发药类型有关的几个维护是否正确,更正药品的维护
- 通过脚本,更新相关发药单与明细的发药类型,更新脚本如下:
UPDATE PORX.COMBINEDMEDICATIONREQUEST SET SENDMEDICINETYPEID=4 WHERE COMBINEDMEDICATIONREQUESTID=67546;
UPDATE PORX.APPLICATIONMEDICINE SET SENDMEDICINETYPEID=4 WHERE COMBINEDMEDICATIONREQUESTID=67546;
UPDATE POOR.SUBADMREQUEST SET SENDMEDICINETYPEID=4 WHERE ORDERREQUESTID IN (SELECT ORDERREQUESTID FROM PORX.APPLICATIONMEDICINE WHERE COMBINEDMEDICATIONREQUESTID=67546);