日常统计中,大家比较困惑的是重复入院如何查找,浙江省内多数医院使用浙江联众病案管理系统。该管理系统默认的病案号编排方式是 [一人一号]制,意思是1个人具有终生的1个号;另一种编号方式是[一次一号]制,意思是每次入院产生新的住院号,不论是否为同一人。两种方法在病案管理过程中各有利弊。下面给大家提供如何查询再入院(重复入院)的病案明细。这里以浙江联众病案管理系统为例。
如果你采用的是 [一人一号]制 ,那么应该很容易采用3.查询分析-病案综合查询的方法进行查询,检索式如下:

当然其中 距离上次出院天数(同病种)的输入值可以输入任何数值,比如7、15或31。而且,在列名处还可以发现距离上次出院天数、距离上次出院天数(不同病种)的字段选项,大家可以逐一尝试。
查出的结果如下图所示:

上述结果说明只查出了第2次(重复次)重复入院的记录,而且主要诊断与前次住院相同。
2. 如果你采用的是 一次一号制,那么就没有办法应用综合查询进行检索(反正我是没找到办法,若有高手请私信指教)。但是我们可以采用SQL语句查询,首先你要找到软件的SQL语句查询窗口,并把下方的SQL语句粘贴到窗口中。

在此,笔者提供2种输出格式的查询:
(1)列出所有住院2次及以上的患者信息条目;
在上面自定义sql语句查询编辑框中粘贴以下SQL代码,下面这些就是传说中的sql语句:
selecta.brxm as 姓名, a.bah as 住院号, a.zycs as 住院次数, c.ksmc as 住院科室, CONVERT(VARCHAR(121), a.ryrq, 111) as 入院日期, CONVERT(VARCHAR(121), a.cyrq, 111) as 出院日期, a.zyts as 住院天数, a.zfy as 总费用, d.ICD10 as 主诊编码, d.jbmc as 主诊名称, a.zryjh as 再入院计划, a.zrymd as 再入院目的fromba_brjbxx a, BATJ_KSDM c, BA_ICDDM d, (select(a.brxm+CONVERT(VARCHAR(121), a.csrq, 111)) as xmcsrq, count(a.bah) as slfromba_brjbxx awherea.cyrq >='2019.1.1'and a.cyrq<='2019.1.30'group by(a.brxm+CONVERT(VARCHAR(121), a.csrq, 111)))bwhere(a.brxm+CONVERT(VARCHAR(121), a.csrq, 111))=b.xmcsrqand a.jbxh =d.jbxhand a.CYKSDM =c.KSDMand c.zfpb =0and a.cyrq >='2019.1.1'and a.cyrq <='2019.1.30'and b.sl >1order bya.brxm, a.ryrq asc
以上语句查询的条件是:
出院日期:2019.1.1至2019.1.30
患者唯一身份识别:姓名+出生日期(如:张三1991/01/05)
患者唯一身份识别出现的次数>1
因此,若不出所料,查询结果会列出所有重复住院的患者。之后,小伙伴们可以下载下来愉快的进行二次分析了。
(2)每两条重复住院的记录进行对比;
对于(1)中的结果,有些小伙伴不太懂Excel函数,难以后续分析。此处,笔者提供了另外的导出格式,以下方法只能参考,仍需要下载下来处理(只需要用Excel简单的去重就可以了)。由于笔者所用联众系统的数据库为SQL Server 2000,因此很多函数比如Rank()函数不能用,无法获得较好的结果。大家可以试试下面的语句:
selecta.brxm as 姓名, b.bah as 前次住院号, b.ksmc as 前次住院科室, CONVERT(VARCHAR(121), b.ryrq, 111) as 前次入院日期, CONVERT(VARCHAR(121), b.cyrq, 111) as 前次出院日期, b.zyts as 前次住院天数, b.zfy as 前次住院总费用, d.ICD10 as 前次主诊编码, d.jbmc as 前次主诊名称, b.zryjh as 前次再入院计划, b.zrymd as 前次再入院目的, a.bah as 再次住院号, c.ksmc as 再次入院科室, CONVERT(VARCHAR(121), a.ryrq, 111) as 再次入院日期, CONVERT(VARCHAR(121), a.cyrq, 111) as 再次出院日期, a.zyts as 再次住院天数, a.zfy as 再次总费用, b.ICD10 as 再次主诊编码, b.jbmc as 再次主诊名称, datediff(day, b.cyrq,a.ryrq) as 距离上次出院天数, casewhen datediff(day, b.cyrq,a.ryrq) between 0 and 7then '7天内再入院'when datediff(day, b.cyrq,a.ryrq) between 8 and 14then '2周内再入院'when datediff(day, b.cyrq,a.ryrq) between 15 and 31then '31天内再入院'End 类型fromba_brjbxx a, BATJ_KSDM c, BA_ICDDM d, (selecta.bah, a.brxm, a.csrq, a.ryrq, a.cyrq, a.zfy, a.zyts, a.zryjh, a.zrymd, b.ksmc, c.ICD10, c.jbmcfromba_brjbxx a, batj_ksdm b, BA_ICDDM cwherecyrq >='2019.1.1'and csrq <='2019.1.30'and a.CYKSDM =b.KSDMand b.zfpb =0and a.jbxh =c.jbxh)bwherea.brxm =b.brxmand a.jbxh =d.jbxhand a.CYKSDM =c.KSDMand a.bah <> b.bahand datediff(day, b.cyrq,a.ryrq)between 0 and 31 --此条件为所有再入院and a.csrq =b.csrqand a.cyrq>='2019.1.1'and a.cyrq<='2019.1.30'and c.zfpb =0order bya.brxm, b.ryrq asc, a.ryrq
上面的方法有个小bug,就是会把第n次住院和后面所有住院进行比较,后续经过查询可以插入临时表解决,考虑到小伙伴们对sql语句尚不精通,暂不考虑该方法;这个bug说明数据库太过于老旧。无法过滤为相邻的2次重复住院间比较。因此,大家需要下载下来对“前次住院号”进行重复性删除。




注事项意



(1)大家使用时,不要忘记修改代码中的时间段!!!!
(2)上述语句适合的数据库为SQL Server类型,若为Oracle数据库,需要把CONVERT(VARCHAR(121), A.CYRQ, 111)替换为To_date(A.CYRQ, 'yyyy-mm-dd')。
其它问题,请公众号内留言。
最后,给大家留下一个有趣的问题:
如果是一次一号制,但是却用软件的检索条件查询(一人一号制条件)方法,而且得到了结果,请问,如何解释结果?
动动小手点击关注,有任何病案统计相关需求,可公众号内私信




