Quellcode durchsuchen

完成DRG&DIP接口

lighter vor 2 Jahren
Ursprung
Commit
279e48063a

+ 1 - 1
pom.xml

@@ -10,7 +10,7 @@
     </parent>
     <groupId>thyyxxk</groupId>
     <artifactId>web-server</artifactId>
-    <version>2</version>
+    <version>1</version>
     <name>web-server</name>
     <description>server for yibao-web</description>
     <properties>

+ 42 - 9
src/main/java/thyyxxk/webserver/controller/api/forpowersi/DrgDipController.java

@@ -8,7 +8,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import thyyxxk.webserver.config.auth.PassToken;
 import thyyxxk.webserver.dao.his.api.forpowersi.drgdip.DrgDipDao;
-import thyyxxk.webserver.dao.his.api.forpowersi.drgdip.Opspdiseinfo;
 import thyyxxk.webserver.entity.api.forpowersi.drgdip.*;
 import thyyxxk.webserver.entity.api.forpowersi.drgdip.statement.*;
 import thyyxxk.webserver.entity.medicalinsurance.query.SiPatInfo;
@@ -16,7 +15,6 @@ import thyyxxk.webserver.service.redislike.RedisLikeService;
 import thyyxxk.webserver.utils.StringUtil;
 
 import java.util.List;
-import java.util.Set;
 
 @RestController
 @RequestMapping("/api/forpowersi/drgdpi")
@@ -83,6 +81,7 @@ public class DrgDipController {
                 case HIS_PATIENT_OPRT_INFO:
                     return queryHisPatientOprtInfo(params);
                 case YIBAO_N041:
+                    return queryYibaoN041(params);
                 case YIBAO_SETLINFO_4101A:
                     return basicPatientInfoOfStatement(params);
                 case YIBAO_OPSPDISEINFO_4101A:
@@ -92,9 +91,10 @@ public class DrgDipController {
                 case YIBAO_OPRNINFO_4101A:
                     return getOprninfo(params);
                 case YIBAO_ICUINFO_4101A:
+                    return getIcoInfo(params);
                 case YIBAO_BLDINFO_4101A:
+                    return getBldinfo(params);
                 case INVALID_REQUEST_TYPE:
-
                 default:
                     return DrgDipResponseFactory.wrongParameters("无法识别的指标命名集。");
             }
@@ -324,6 +324,40 @@ public class DrgDipController {
         return DrgDipResponseFactory.success(list);
     }
 
+    private JSONObject queryYibaoN041(RequestParams params) {
+        if (null == params.getVisitId()) {
+            if (null == params.getStartDate() || null == params.getEndDate()) {
+                return DrgDipResponseFactory.wrongParameters("startDate、endDate、visitId不能同时为空。");
+            }
+            List<String> visitIdList = dao.selectSignedVistiId(params.getStartDate(), params.getEndDate());
+            if (visitIdList.isEmpty()) {
+                return DrgDipResponseFactory.noCorrespondingDataFound();
+            }
+            return DrgDipResponseFactory.success(visitIdList);
+        }
+        SiPatInfo patInfo = dao.selectBriefPatInfo(params.getVisitId());
+        if (null == patInfo) {
+            return DrgDipResponseFactory.noCorrespondingDataFound();
+        }
+        String patNo = patInfo.getPatNo();
+        int times = patInfo.getTimes();
+        List<YibaoN041> list = dao.selectYibaoN041(patNo, times);
+        if (list.isEmpty()) {
+            return DrgDipResponseFactory.noCorrespondingDataFound();
+        }
+        YibaoN041 yibaoN041 = list.get(0);
+        yibaoN041.setVisitId(params.getVisitId());
+        List<YibaoN041DiagItem> diagList = dao.selectYibaoN041Diags(patNo, times);
+        for (int i = 0; i < diagList.size(); i++) {
+            yibaoN041.setOthDiagItem(i, diagList.get(i));
+        }
+        List<YibaoN041SurgeryItem> surgeryList = dao.selectYibaoN041Surgeries(patNo, times);
+        for (int i = 0; i < surgeryList.size(); i++) {
+            yibaoN041.setOthSurgeryItem(i, surgeryList.get(i));
+        }
+        return DrgDipResponseFactory.success(list);
+    }
+
     /**
      * 2.10.1基本信息
      *
@@ -337,13 +371,12 @@ public class DrgDipController {
                 return DrgDipResponseFactory.noCorrespondingDataFound();
             }
             return DrgDipResponseFactory.success(info);
-        } else {
-            List<String> list = dao.getSettlementDocumentVisitID(param.getStartDate(), param.getEndDate());
-            if (list.isEmpty()) {
-                return DrgDipResponseFactory.noCorrespondingDataFound();
-            }
-            return DrgDipResponseFactory.success(list);
         }
+        List<String> list = dao.getSettlementDocumentVisitID(param.getStartDate(), param.getEndDate());
+        if (list.isEmpty()) {
+            return DrgDipResponseFactory.noCorrespondingDataFound();
+        }
+        return DrgDipResponseFactory.success(list);
     }
 
     /**

+ 121 - 3
src/main/java/thyyxxk/webserver/dao/his/api/forpowersi/drgdip/DrgDipDao.java

@@ -300,6 +300,124 @@ public interface DrgDipDao {
             "where b.mdtrt_id=#{visitId} and b.pat_no=a.bah and b.times=a.times")
     List<HisPatientOprtInfo> selectHisPatientOprtInfo(String visitId);
 
+    @Select("select b.mdtrt_id from t_case_frontsheet_main a,t_si_setlinfo b " +
+            "where a.sign_date>=#{start} and a.sign_date<=#{end} and " +
+            "a.bah=b.pat_no and a.admiss_times=b.times")
+    List<String> selectSignedVistiId(String start, String end);
+
+    @Select("select " +
+            "username='长沙泰和医院', " +
+            "ylfkfs=case when pay_method is null then '99' when pay_method in ('9','','-') then '99' " +
+            "else '0' + pay_method end, " +
+            "health_card_no as jkkh, " +
+            "admiss_times as zycs, " +
+            "bah,name as xm,sex as xb, " +
+            "csrq=convert(varchar(10),birth_date,112), " +
+            "age as nl, " +
+            "gj=(select d.si_code from zd_country_code d where d.code=country), " +
+            "age_days as bzyzsnl, " +
+            "new_born_weight as xsecstz, " +
+            "new_born_admiss_weight as xserytz, " +
+            "birth_place_name as csd, " +
+            "native_place_name as gg, " +
+            "mz=(select d.code2 from zd_nation_code d where d.code=nation), " +
+            "upper(social_no) as sfzh, " +
+            "occupation as zy, " +
+            "hy=(select d.si_code from zd_marital_status d where d.code=marriage), " +
+            "live_place_combo as xzz, " +
+            "phone as dh,addr_zip_code as yb1, " +
+            "hk_place_name as hkdz,hk_zip_code as yb2, " +
+            "unit_name+'/'+unit_place as gzdwjdz, " +
+            "unit_phone as dwdh,unit_zip_code as yb3, " +
+            "contact_name as lxrxm,contact_relation as lxrgx, " +
+            "contact_addr_name as dz, " +
+            "contact_phone as dh2, " +
+            "zy_admiss_way as rytj, " +
+            "rysj=convert(varchar(10),admiss_date,112), " +
+            "rykb=(select d.si_caty from zd_unit_code d where d.code=admiss_dept_code), " +
+            "admiss_ward as rybf, " +
+            "zkkb=(select d.si_caty from zd_unit_code d where d.code=trans_dept_code), " +
+            "cysj=convert(varchar(10),dismiss_date,112), " +
+            "cykb=(select d.si_caty from zd_unit_code d where d.code=dismiss_dept_code), " +
+            "dismiss_ward as cybf, " +
+            "admiss_days as sjzyts, " +
+            "clinic_diag_str as mzzd, " +
+            "clinic_diag_code as jbbm, " +
+            "hurt_reason_name as wbyy, " +
+            "hurt_reason_code as h23, " +
+            "pathologic_diag_str as blzd, " +
+            "pathologic_diag_code as jbmm, " +
+            "blh,allergy as ywgm, " +
+            "autopsy as swhzsj,blood_type as xx, " +
+            "rh=(select d.wjw_code from zd_hbsag d where d.code=rh), " +
+            "dept_leader_name as kzr, " +
+            "leader_doctor_name as zrys, " +
+            "main_doctor_name as zzys, " +
+            "admiss_doctor_name as zyys, " +
+            "duty_nurse_name as zrhs, " +
+            "internship_doctor_name as sxys, " +
+            "coder_name as bmy, " +
+            "bazl=(case when quality_control_level is null then 3 " +
+            "when quality_control_level>=3 then 3 else quality_control_level end), " +
+            "quality_control_doctor_name as zkys, " +
+            "quality_control_nurse_name as zkhs, " +
+            "zkrq=convert(varchar(10),quality_control_date,112), " +
+            "lyfs=(select d.wjw_code from zd_zy_dismiss_way d where d.code=zy_dismiss_way), " +
+            "dismiss_destination as yzzyYljg, " +
+            "dismiss_destination as wsyYljg, " +
+            "admiss_again_in_one_month as sfzzyjh, " +
+            "admiss_again_purpose as md, " +
+            "coma_days_before_admiss as ryqT, " +
+            "coma_hours_before_admiss as ryqXs, " +
+            "coma_minutes_before_admiss as ryqF, " +
+            "coma_days_after_admiss as ryhT, " +
+            "coma_hours_after_admiss as ryhXs, " +
+            "coma_minutes_after_admiss as ryhF, " +
+            "total_cost as zfy,self_pay as zfje, " +
+            "general_medical_service_fee as ylfuf, " +
+            "general_treatment_operating_fee as zlczf, " +
+            "care_fee as hlf,else_fee as qtfy, " +
+            "pathologic_diag_fee as blzdf, " +
+            "experiment_diag_fee as syszdf, " +
+            "ct_diag_fee as yxxzdf, " +
+            "clinical_diag_fee as lczdxmf, " +
+            "not_surgical_fee as fsszlxmf, " +
+            "clinical_physical_fee as wlzlf, " +
+            "surgical_fee as sszlf,anesthetize_fee as maf, " +
+            "surgery_fee as ssf,recover_fee as kff, " +
+            "tcm_treatment_fee as zyzlf, " +
+            "west_medicine_fee as xyf, " +
+            "chinese_patent_medicine_fee as zcyf, " +
+            "chinese_herbal_medicine_fee as zcyf1, " +
+            "blood_fee as xf,albumin_products_fee as bdblzpf, " +
+            "globulin_products_fee as qdblzpf, " +
+            "coagulation_factor_products_fee as nxyzlzpf, " +
+            "cytokine_products_fee as xbyzlzpf, " +
+            "cost_of_disposable_medical_materials_for_examination as hcyyclf, " +
+            "cost_of_disposable_medical_materials_for_treatment as yyclf, " +
+            "cost_of_disposable_medical_materials_for_operation as ycxyyclf, " +
+            "other_fees as qtf,sign_date as operDate,operType=2 " +
+            "from t_case_frontsheet_main where bah=#{patNo} and admiss_times=#{times}")
+    List<YibaoN041> selectYibaoN041(String patNo, int times);
+
+    @Select("select name as qtzd,code as jbdm,admiss_status as rybq from " +
+            "t_case_frontsheet_disdiag where bah=#{patNo} and times=#{times} order by no")
+    List<YibaoN041DiagItem> selectYibaoN041Diags(String patNo, int times);
+
+    @Select("select " +
+            "code as ssjczbm, " +
+            "ssjczrq=convert(varchar(10),date,112), " +
+            "ssjb=level, " +
+            "name as ssjczmc,operator_name as sz, " +
+            "assistant_one_name as yz, " +
+            "assistant_two_name as ez, " +
+            "qkdj=case when cut is null then 1 else cut+1 end, " +
+            "qkyhlb=case when isnull(heal,0)=0 then 9 else heal end, " +
+            "mzfs=(select d.yb_code from zd_anaesthesia d where d.code=anaesthesia), " +
+            "anaesthesiaor_name as mzys " +
+            "from t_case_frontsheet_surgery " +
+            "where bah=#{patNo} and times=#{times} order by no")
+    List<YibaoN041SurgeryItem> selectYibaoN041Surgeries(String patNo, int times);
 
     @Select("select mdtrt_id as visit_id " +
             "from t_settlement_setlinfo " +
@@ -390,7 +508,7 @@ public interface DrgDipDao {
             "       dcla_time                                                            AS oper_date " +
             "from t_settlement_setlinfo " +
             "WHERE " +
-            " mdtrt_ id  = #{visitId} ")
+            " mdtrt_id  = #{visitId} ")
     List<PatientEssentialInfo> basicPatientInfoOfStatement(String visitId);
 
 
@@ -403,10 +521,10 @@ public interface DrgDipDao {
             "       diag_code, " +
             "       oprn_oprt_name, " +
             "       oprn_oprt_code, " +
-            "       maindiag_flag, " +
+            "       case subscript when 1 then 1 else 0 end as maindiag_flag, " +
             "       '${visitId}' as visit_id " +
             "from t_settlement_opspdiseinfo " +
-            "where setl_id = '' " +
+            "where setl_id = #{setlId} " +
             "  and diag_code is not null")
     List<Opspdiseinfo> getOpspdiseinfoBySetlId(String setlId,
                                                String visitId);

+ 0 - 4
src/main/java/thyyxxk/webserver/dao/his/api/forpowersi/drgdip/Opspdiseinfo.java

@@ -1,4 +0,0 @@
-package thyyxxk.webserver.dao.his.api.forpowersi.drgdip;
-
-public class Opspdiseinfo {
-}

+ 182 - 0
src/main/java/thyyxxk/webserver/entity/api/forpowersi/drgdip/YibaoN041.java

@@ -1202,6 +1202,8 @@ public class YibaoN041 {
     @JSONField(name = "SSJB4")
     private String ssjb4;
 
+    @JSONField(name = "SSJCZMC4")
+    private String ssjczmc4;
 
     /**
      * 名称:术者
@@ -1875,4 +1877,184 @@ public class YibaoN041 {
     @JSONField(name = "OPER_TYPE")
     private String operType;
 
+    public void setOthDiagItem(int index, YibaoN041DiagItem diagItem) {
+        switch (index) {
+            case 0:
+                zyzd = diagItem.getQtzd();
+                jbdm = diagItem.getJbdm();
+                rybq = diagItem.getRybq();
+                break;
+            case 1:
+                qtzd1 = diagItem.getQtzd();
+                jbdm1 = diagItem.getJbdm();
+                rybq1 = diagItem.getRybq();
+                break;
+            case 2:
+                qtzd2 = diagItem.getQtzd();
+                jbdm2 = diagItem.getJbdm();
+                rybq2 = diagItem.getRybq();
+                break;
+            case 3:
+                qtzd3 = diagItem.getQtzd();
+                jbdm3 = diagItem.getJbdm();
+                rybq3 = diagItem.getRybq();
+                break;
+            case 4:
+                qtzd4 = diagItem.getQtzd();
+                jbdm4 = diagItem.getJbdm();
+                rybq4 = diagItem.getRybq();
+                break;
+            case 5:
+                qtzd5 = diagItem.getQtzd();
+                jbdm5 = diagItem.getJbdm();
+                rybq5 = diagItem.getRybq();
+                break;
+            case 6:
+                qtzd6 = diagItem.getQtzd();
+                jbdm6 = diagItem.getJbdm();
+                rybq6 = diagItem.getRybq();
+                break;
+            case 7:
+                qtzd7 = diagItem.getQtzd();
+                jbdm7 = diagItem.getJbdm();
+                rybq7 = diagItem.getRybq();
+                break;
+            case 8:
+                qtzd8 = diagItem.getQtzd();
+                jbdm8 = diagItem.getJbdm();
+                rybq8 = diagItem.getRybq();
+                break;
+            case 9:
+                qtzd9 = diagItem.getQtzd();
+                jbdm9 = diagItem.getJbdm();
+                rybq9 = diagItem.getRybq();
+                break;
+            case 10:
+                qtzd10 = diagItem.getQtzd();
+                jbdm10 = diagItem.getJbdm();
+                rybq10 = diagItem.getRybq();
+                break;
+            case 11:
+                qtzd11 = diagItem.getQtzd();
+                jbdm11 = diagItem.getJbdm();
+                rybq11 = diagItem.getRybq();
+                break;
+            case 12:
+                qtzd12 = diagItem.getQtzd();
+                jbdm12 = diagItem.getJbdm();
+                rybq12 = diagItem.getRybq();
+                break;
+            case 13:
+                qtzd13 = diagItem.getQtzd();
+                jbdm13 = diagItem.getJbdm();
+                rybq13 = diagItem.getRybq();
+                break;
+            case 14:
+                qtzd14 = diagItem.getQtzd();
+                jbdm14 = diagItem.getJbdm();
+                rybq14 = diagItem.getRybq();
+                break;
+            case 15:
+                qtzd15 = diagItem.getQtzd();
+                jbdm15 = diagItem.getJbdm();
+                rybq15 = diagItem.getRybq();
+                break;
+        }
+    }
+
+    public void setOthSurgeryItem(int index, YibaoN041SurgeryItem surgeryItem) {
+        switch (index) {
+            case 0:
+                ssjczbm1 = surgeryItem.getSsjczbm();
+                ssjczrq1 = surgeryItem.getSsjczrq();
+                ssjb1 = surgeryItem.getSsjb();
+                ssjczmc1= surgeryItem.getSsjczmc();
+                sz1 = surgeryItem.getSz();
+                yz1 = surgeryItem.getYz();
+                ez1 = surgeryItem.getEz();
+                qkdj1 = surgeryItem.getQkdj();
+                qkyhlb1 = surgeryItem.getQkyhlb();
+                mzfs1 = surgeryItem.getMzfs();
+                mzys1 = surgeryItem.getMzys();
+                break;
+            case 1:
+                ssjczbm2 = surgeryItem.getSsjczbm();
+                ssjczrq2 = surgeryItem.getSsjczrq();
+                ssjb2 = surgeryItem.getSsjb();
+                ssjczmc2= surgeryItem.getSsjczmc();
+                sz2 = surgeryItem.getSz();
+                yz2 = surgeryItem.getYz();
+                ez2 = surgeryItem.getEz();
+                qkdj2 = surgeryItem.getQkdj();
+                qkyhlb2 = surgeryItem.getQkyhlb();
+                mzfs2 = surgeryItem.getMzfs();
+                mzys2 = surgeryItem.getMzys();
+                break;
+            case 2:
+                ssjczbm3 = surgeryItem.getSsjczbm();
+                ssjczrq3 = surgeryItem.getSsjczrq();
+                ssjb3 = surgeryItem.getSsjb();
+                ssjczmc3= surgeryItem.getSsjczmc();
+                sz3 = surgeryItem.getSz();
+                yz3 = surgeryItem.getYz();
+                ez3 = surgeryItem.getEz();
+                qkdj3 = surgeryItem.getQkdj();
+                qkyhlb3 = surgeryItem.getQkyhlb();
+                mzfs3 = surgeryItem.getMzfs();
+                mzys3 = surgeryItem.getMzys();
+                break;
+            case 3:
+                ssjczbm4 = surgeryItem.getSsjczbm();
+                ssjczrq4 = surgeryItem.getSsjczrq();
+                ssjb4 = surgeryItem.getSsjb();
+                ssjczmc4= surgeryItem.getSsjczmc();
+                sz4 = surgeryItem.getSz();
+                yz4 = surgeryItem.getYz();
+                ez4 = surgeryItem.getEz();
+                qkdj4 = surgeryItem.getQkdj();
+                qkyhlb4 = surgeryItem.getQkyhlb();
+                mzfs4 = surgeryItem.getMzfs();
+                mzys4 = surgeryItem.getMzys();
+                break;
+            case 4:
+                ssjczbm5 = surgeryItem.getSsjczbm();
+                ssjczrq5 = surgeryItem.getSsjczrq();
+                ssjb5 = surgeryItem.getSsjb();
+                ssjczmc5= surgeryItem.getSsjczmc();
+                sz5 = surgeryItem.getSz();
+                yz5 = surgeryItem.getYz();
+                ez5 = surgeryItem.getEz();
+                qkdj5 = surgeryItem.getQkdj();
+                qkyhlb5 = surgeryItem.getQkyhlb();
+                mzfs5 = surgeryItem.getMzfs();
+                mzys5 = surgeryItem.getMzys();
+                break;
+            case 5:
+                ssjczbm6 = surgeryItem.getSsjczbm();
+                ssjczrq6 = surgeryItem.getSsjczrq();
+                ssjb6 = surgeryItem.getSsjb();
+                ssjczmc6= surgeryItem.getSsjczmc();
+                sz6 = surgeryItem.getSz();
+                yz6 = surgeryItem.getYz();
+                ez6 = surgeryItem.getEz();
+                qkdj6 = surgeryItem.getQkdj();
+                qkyhlb6 = surgeryItem.getQkyhlb();
+                mzfs6 = surgeryItem.getMzfs();
+                mzys6 = surgeryItem.getMzys();
+                break;
+            case 6:
+                ssjczbm7 = surgeryItem.getSsjczbm();
+                ssjczrq7 = surgeryItem.getSsjczrq();
+                ssjb7 = surgeryItem.getSsjb();
+                ssjczmc7= surgeryItem.getSsjczmc();
+                sz7 = surgeryItem.getSz();
+                yz7 = surgeryItem.getYz();
+                ez7 = surgeryItem.getEz();
+                qkdj7 = surgeryItem.getQkdj();
+                qkyhlb7 = surgeryItem.getQkyhlb();
+                mzfs7 = surgeryItem.getMzfs();
+                mzys7 = surgeryItem.getMzys();
+                break;
+        }
+    }
 }

+ 10 - 0
src/main/java/thyyxxk/webserver/entity/api/forpowersi/drgdip/YibaoN041DiagItem.java

@@ -0,0 +1,10 @@
+package thyyxxk.webserver.entity.api.forpowersi.drgdip;
+
+import lombok.Data;
+
+@Data
+public class YibaoN041DiagItem {
+    private String qtzd;
+    private String jbdm;
+    private String rybq;
+}

+ 39 - 0
src/main/java/thyyxxk/webserver/entity/api/forpowersi/drgdip/YibaoN041SurgeryItem.java

@@ -0,0 +1,39 @@
+package thyyxxk.webserver.entity.api.forpowersi.drgdip;
+
+import lombok.Data;
+
+@Data
+public class YibaoN041SurgeryItem {
+    // 手术及操作编码
+    private String ssjczbm;
+
+    // 手术及操作日期(格式为:YYYYMMDD,例如:20131125)
+    private String ssjczrq;
+
+    // 手术级别(按照5.14填写)
+    private String ssjb;
+
+    // 手术及操作名称
+    private String ssjczmc;
+
+    // 术者
+    private String sz;
+
+    // I助
+    private String yz;
+
+    // II助
+    private String ez;
+
+    // 切口等级(按照5.15填写)
+    private String qkdj;
+
+    // 切口愈合类别(按照5.16填写)
+    private String qkyhlb;
+
+    // 麻醉方式(按照5.17填写)
+    private String mzfs;
+
+    // 麻醉医师
+    private String mzys;
+}

+ 8 - 1
src/main/java/thyyxxk/webserver/entity/api/forpowersi/drgdip/statement/PatientEssentialInfo.java

@@ -116,7 +116,14 @@ public class PatientEssentialInfo {
      * 是否必填: Y
      */
     @JSONField(name = "AGE")
-    private Integer age;
+    private String age;
+
+    public String getAge() {
+        if (age == null) {
+            return null;
+        }
+        return age.split("\\.")[0];
+    }
 
     /**
      * 名称:国籍代码