楼主: lfree

[讨论] 军惠系统入院问题

[复制链接]
论坛徽章:
67
现任管理团队成员
日期:2012-06-02 02:10:00ITPUB元老
日期:2012-09-12 14:06:14ITPUB社区千里马徽章
日期:2013-06-09 10:15:34季节之章:冬
日期:2012-09-04 11:05:30季节之章:春
日期:2012-09-05 09:20:36优秀写手
日期:2013-12-18 09:29:09马上有房
日期:2014-04-10 13:35:362014年新春福章
日期:2014-04-14 09:54:08马上有车
日期:2014-02-28 16:43:13马上加薪
日期:2014-02-19 11:55:14
11#
发表于 2010-9-22 20:24 | 只看该作者
原帖由 lfree 于 2010-9-22 14:58 发表



这个东西,我感觉有源代码也未必能找到问题在哪里。


查一下这句sql在什么情况下会被调用到,就能知道什么操作下会重现这个错误.或者自己疯狂操作,同时用toad的sql monitor捕捉,估计也会能发现

使用道具 举报

回复
论坛徽章:
33
ITPUB元老
日期:2005-09-16 10:42:482012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20版主3段
日期:2012-05-15 15:24:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14
12#
发表于 2010-9-22 21:42 | 只看该作者

不知道护士站用的哪一个版本号

是以前达因的产品吗?

猜测会不会是以下几种情况之一:

1  护士将入院病人办入科时,误将他科的病人拉进来了,然后又将其出科?

2  病区和护理单元对照表里确认没有垃圾数据?确认所有的对照数据都是正确的?

3  病人多次入院,但上一次出院时的数据不正确?

建议在再次发现这种情况时,查以下几个表的数据:

ADT_LOG(病人入出转记录)
pat_visit(入院记录)
diagnosis(诊断记录)
pats_in_hospital(病人在科记录)

没有翻数据结构手册,但我印象中应该是这几个表名,实际名称以手册为准啊。重点核查一下这个病人当次入院的信息是不是正确,并且一一都能匹配得上。

另外,可以跟踪一下护士站提取待入院病人列表时的SQL语句,看一看那个SQL语句关联的条件

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
13#
 楼主| 发表于 2010-9-24 08:47 | 只看该作者
原帖由 fals 于 2010-9-22 21:42 发表
是以前达因的产品吗?

猜测会不会是以下几种情况之一:

1  护士将入院病人办入科时,误将他科的病人拉进来了,然后又将其出科?

2  病区和护理单元对照表里确认没有垃圾数据?确认所有的对照数据都是正确的?

3  病人多次入院,但上一次出院时的数据不正确?

建议在再次发现这种情况时,查以下几个表的数据:

ADT_LOG(病人入出转记录)
pat_visit(入院记录)
diagnosis(诊断记录)
pats_in_hospital(病人在科记录)

没有翻数据结构手册,但我印象中应该是这几个表名,实际名称以手册为准啊。重点核查一下这个病人当次入院的信息是不是正确,并且一一都能匹配得上。

另外,可以跟踪一下护士站提取待入院病人列表时的SQL语句,看一看那个SQL语句关联的条件


1.第1种情况不存在,不过我这次发现“取消入科”的bug。
2.关于这个问题,应该不存在,不过这次检查,我发现bed_rec中ward_code,bed_label存在重复指。
3.这个是第5次入院。

我跟踪了从入院开始的pats_in_hospital的信息,最后一条是我补入的床号信息。

如下:
1572040982|2010-8-31 16:23:58|INPADM|PATS_IN_HOSPITAL|AAAMmcAAQAAAAUFABl|0|insert into "INPADM"."PATS_IN_HOSPITAL"("PATIENT_ID","VISIT_ID","WARD_CODE","DEPT_CODE","BED_NO","ADMISSION_DATE_TIME","ADM_WARD_DATE_TIME","DIAGNOSIS","PATIENT_CONDITION","NURSING_CLASS","DOCTOR_IN_CHARGE","OPERATING_DATE","BILLING_DATE_TIME","PREPAYMENTS","TOTAL_COSTS","TOTAL_CHARGES","GUARANTOR","GUARANTOR_ORG","GUARANTOR_PHONE_NUM","BILL_CHECKED_DATE_TIME","SETTLED_INDICATOR") values ('A02000','5',NULL,NULL,NULL,TO_DATE('2010-08-31 16:23:29', 'YYYY-MM-DD HH24:MI:SS'),NULL,'尿毒症',NULL,NULL,NULL,NULL,NULL,'1000','0','0',NULL,NULL,NULL,NULL,'0');
1575292032|2010-9-2 11:19:44|INPADM|PATS_IN_HOSPITAL|AAAMmcAAQAAAAUFABl|0|update "INPADM"."PATS_IN_HOSPITAL" set "VISIT_ID" = '5', "ADMISSION_DATE_TIME" = TO_DATE('2010-08-31 16:23:29', 'YYYY-MM-DD HH24:MI:SS'), "DIAGNOSIS" = '尿毒症', "PREPAYMENTS" = '1000', "GUARANTOR" = NULL, "GUARANTOR_ORG" = NULL, "GUARANTOR_PHONE_NUM" = NULL where "VISIT_ID" = '5' and "ADMISSION_DATE_TIME" = TO_DATE('2010-08-31 16:23:29', 'YYYY-MM-DD HH24:MI:SS') and "DIAGNOSIS" = '尿毒症' and "PREPAYMENTS" = '1000' and "GUARANTOR" IS NULL and "GUARANTOR_ORG" IS NULL and "GUARANTOR_PHONE_NUM" IS NULL and ROWID = 'AAAMmcAAQAAAAUFABl';
1575295492|2010-9-2 11:20:48|INPADM|PATS_IN_HOSPITAL|AAAMmcAAQAAAAUFABl|0|update "INPADM"."PATS_IN_HOSPITAL" set "PREPAYMENTS" = '3000' where "PREPAYMENTS" = '1000' and ROWID = 'AAAMmcAAQAAAAUFABl';
1575745979|2010-9-2 16:28:29|INPADM|PATS_IN_HOSPITAL|AAAMmcAAQAAAAUFABl|0|update "INPADM"."PATS_IN_HOSPITAL" set "WARD_CODE" = '0745', "ADM_WARD_DATE_TIME" = TO_DATE('2010-09-02 16:27:00', 'YYYY-MM-DD HH24:MI:SS') where "WARD_CODE" IS NULL and "ADM_WARD_DATE_TIME" IS NULL and ROWID = 'AAAMmcAAQAAAAUFABl';|update "INPADM"."PATS_IN_HOSPITAL" set "WARD_CODE" = NULL, "ADM_WARD_DATE_TIME" = NULL where "WARD_CODE" = '0745' and "ADM_WARD_DATE_TIME" = TO_DATE('2010-09-02 16:27:00', 'YYYY-MM-DD HH24:MI:SS') and ROWID = 'AAAMmcAAQAAAAUFABl';
1575745979|2010-9-2 16:28:29|INPADM|PATS_IN_HOSPITAL|AAAMmcAAQAAAAUFABl|0|update "INPADM"."PATS_IN_HOSPITAL" set "ADMISSION_DATE_TIME" = TO_DATE('2010-09-02 16:27:00', 'YYYY-MM-DD HH24:MI:SS') where "ADMISSION_DATE_TIME" = TO_DATE('2010-08-31 16:23:29', 'YYYY-MM-DD HH24:MI:SS') and ROWID = 'AAAMmcAAQAAAAUFABl';
1575966567|2010-9-2 18:05:44|INPADM|PATS_IN_HOSPITAL|AAAMmcAAQAAAAUFABl|0|update "INPADM"."PATS_IN_HOSPITAL" set "DEPT_CODE" = '0221', "BED_NO" = '86' where "DEPT_CODE" IS NULL and "BED_NO" IS NULL and ROWID = 'AAAMmcAAQAAAAUFABl';|update "INPADM"."PATS_IN_HOSPITAL" set "DEPT_CODE" = NULL, "BED_NO" = NULL where "DEPT_CODE" = '0221' and "BED_NO" = '86' and ROWID = 'AAAMmcAAQAAAAUFABl';
INSERT into
"INPADM"."PATS_IN_HOSPITAL"("PATIENT_ID","VISIT_ID","WARD_CODE","DEPT_CODE","BED_NO","ADMISSION_DATE_TIME",
"ADM_WARD_DATE_TIME","DIAGNOSIS","PATIENT_CONDITION","NURSING_CLASS","DOCTOR_IN_CHARGE","OPERATING_DATE",
"BILLING_DATE_TIME","PREPAYMENTS","TOTAL_COSTS","TOTAL_CHARGES","GUARANTOR","GUARANTOR_ORG",
"GUARANTOR_PHONE_NUM","BILL_CHECKED_DATE_TIME","SETTLED_INDICATOR")
VALUES ('A02000','5', NULL, NULL, NULL, TO_DATE('2010-08-31 16:23:29', 'YYYY-MM-DD HH24:MI:SS'), NULL,'尿毒症', NULL, NULL, NULL, NULL, NULL,'1000','0','0', NULL,
       NULL, NULL, NULL,'0');

UPDATE "INPADM"."PATS_IN_HOSPITAL"
   SET "VISIT_ID"            = '5',
       "ADMISSION_DATE_TIME"  = TO_DATE('2010-08-31 16:23:29', 'YYYY-MM-DD HH24:MI:SS'),
       "DIAGNOSIS" = '尿毒症',
       "PREPAYMENTS" = '1000',
       "GUARANTOR" = NULL,
       "GUARANTOR_ORG" = NULL,
       "GUARANTOR_PHONE_NUM" = NULL
WHERE "VISIT_ID"            = '5'
   AND "ADMISSION_DATE_TIME" = TO_DATE('2010-08-31 16:23:29', 'YYYY-MM-DD HH24:MI:SS')
   AND "DIAGNOSIS"           = '尿毒症'
   AND "PREPAYMENTS"         = '1000'
   AND "GUARANTOR" IS NULL
   AND "GUARANTOR_ORG" IS NULL
   AND "GUARANTOR_PHONE_NUM" IS NULL
   AND ROWID                 = 'AAAMmcAAQAAAAUFABl';

UPDATE "INPADM"."PATS_IN_HOSPITAL"
   SET "PREPAYMENTS" = '3000'
WHERE "PREPAYMENTS" = '1000'
   AND ROWID         = 'AAAMmcAAQAAAAUFABl';

UPDATE "INPADM"."PATS_IN_HOSPITAL"
   SET "WARD_CODE" = '0745', "ADM_WARD_DATE_TIME" = TO_DATE('2010-09-02 16:27:00', 'YYYY-MM-DD HH24:MI:SS')
WHERE "WARD_CODE" IS NULL
   AND "ADM_WARD_DATE_TIME" IS NULL
   AND ROWID       = 'AAAMmcAAQAAAAUFABl';

UPDATE "INPADM"."PATS_IN_HOSPITAL"
   SET "DEPT_CODE" = '0221', "BED_NO"     = '86'
WHERE "DEPT_CODE" IS NULL
   AND "BED_NO" IS NULL
   AND ROWID       = 'AAAMmcAAQAAAAUFABl';

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
14#
 楼主| 发表于 2010-9-24 09:05 | 只看该作者
这个bug出现的概率很低,我自己这么多年也就是3-4次。其他人员遇到的加起来也不会过20次。

1.从第1个帖子的sql语句看,应该是在入院模块。
因为出现delete "INPADM"."PATS_IN_TRANSFERRING"的仅仅在入院模块。
而且整个dml的执行顺序与入院模块一致。
是否还存在别的地方执行,我不是很清楚。

2.如果这从这里执行,不大可能出现bed_no,dept_code为空的情况。
注意第1次插入是DOCTOR_IN_CHARGE是null的。

3.而入院模块在这里如果这个DOCTOR_IN_CHARGE为空会报错的,根本无法进行下去。

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
15#
 楼主| 发表于 2010-9-24 11:27 | 只看该作者


INSERT into "INPADM"."ADT_LOG"("WARD_CODE","DEPT_CODE","LOG_DATE_TIME","PATIENT_ID","VISIT_ID","ACTION","OPERATOR")
VALUES ('0745','0221', TO_DATE('2010-09-02 16:27:00', 'YYYY-MM-DD HH24:MI:SS'),'A02000','5','C', NULL);

看ACTION=‘C',表示新入的病人。

真的搞不懂为什么会出现这样的情况。

看来PB自身的bug可能性大一些。

使用道具 举报

回复
论坛徽章:
33
ITPUB元老
日期:2005-09-16 10:42:482012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20版主3段
日期:2012-05-15 15:24:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14
16#
发表于 2010-9-24 13:55 | 只看该作者

仅从业务情况分析

入院的时候,pats_in_hospital这个表在入院登记的时候不填写床号的,另外dept_code或者ward_code这两个字段也只填写一个字段,我记不得入院登记是填哪个了。床号和病区信息应该是护士站对病人进行入科操作时才填写的。正常情况下,护士站在办理新病人入科时,bed_no和ward_code这两个字段就应该是空值。

你的SQL好奇怪:

1575745979|2010-9-2 16:28:29|INPADM|PATS_IN_HOSPITAL|AAAMmcAAQAAAAUFABl|0|
update "INPADM"."PATS_IN_HOSPITAL"
set "WARD_CODE" = '0745',
"ADM_WARD_DATE_TIME" = TO_DATE('2010-09-02 16:27:00', 'YYYY-MM-DD HH24:MI:SS')
where "WARD_CODE" IS NULL
and "ADM_WARD_DATE_TIME" IS NULL
and ROWID = 'AAAMmcAAQAAAAUFABl';|
update "INPADM"."PATS_IN_HOSPITAL"
set "WARD_CODE" = NULL,
"ADM_WARD_DATE_TIME" = NULL
where "WARD_CODE" = '0745'
and "ADM_WARD_DATE_TIME" = TO_DATE('2010-09-02 16:27:00', 'YYYY-MM-DD HH24:MI:SS')
and ROWID = 'AAAMmcAAQAAAAUFABl';

你确认是同一个程序的连续操作吗?

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
17#
 楼主| 发表于 2010-9-24 15:05 | 只看该作者
是的。
我这个是从logminer提取的。

真正执行的时候实际不是rowid而是
patient_id=:XXX

使用道具 举报

回复
论坛徽章:
33
ITPUB元老
日期:2005-09-16 10:42:482012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20版主3段
日期:2012-05-15 15:24:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14
18#
发表于 2010-9-24 22:14 | 只看该作者
不要从日志里分析了,做一个跟踪吧,用dbms_system.set_sql_trace_in_session来做跟踪,这个要准确一些。

把程序的绑定变量参数先给去掉,看看

噢,我忘了这个情况是偶尔出现的了,但你也可以做一个跟踪看一看入院操作和入科操作的数据操作情况,可能好分析一些

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
19#
 楼主| 发表于 2010-9-26 15:12 | 只看该作者
我的希望是有人遇到过,这样我就不必查了。

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
20#
 楼主| 发表于 2010-9-26 16:25 | 只看该作者
我最大的感觉就是数据窗口的数据可能不止一条。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表