Преглед на файлове

工伤接口基本对接完成。

lighter преди 3 години
родител
ревизия
624ef42567

+ 1 - 1
pom.xml

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

+ 76 - 4
src/main/java/thyyxxk/webserver/controller/medicalinsurance/SiInjuryController.java

@@ -16,24 +16,31 @@ import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.dictionary.PureCodeName;
 import thyyxxk.webserver.entity.medicalinsurance.injury.AdmissRegistration;
 import thyyxxk.webserver.entity.medicalinsurance.injury.InjurySiPatInfo;
+import thyyxxk.webserver.entity.yibao.dismiss.YbSettleFee;
 import thyyxxk.webserver.entity.yibao.patient.Patient;
+import thyyxxk.webserver.service.yibao.DismissService;
 import thyyxxk.webserver.utils.ResultVoUtil;
 import thyyxxk.webserver.utils.TokenUtil;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 @Slf4j
 @RestController
 @RequestMapping("/siInjury")
 public class SiInjuryController {
     private final SiInjuryDao dao;
+    private final DismissService dismissService;
     @Value("${si-gs-url}")
     private String gsUrl;
+    @Value("${si-gsfee-url}")
+    private String gsUpldUrl;
 
     @Autowired
-    public SiInjuryController(SiInjuryDao dao) {
+    public SiInjuryController(SiInjuryDao dao, DismissService dismissService) {
         this.dao = dao;
+        this.dismissService = dismissService;
     }
 
 
@@ -69,6 +76,7 @@ public class SiInjuryController {
 
     @PostMapping("/admissRegistration")
     public ResultVo<String> admissRegistration(@RequestBody AdmissRegistration admreg) {
+        admreg.getBaseinfo().setStaffId(TokenUtil.getTokenUserId());
         admreg.getInjuryinfo().setPatNo(admreg.getBaseinfo().getInpatientNo());
         admreg.getInjuryinfo().setTimes(admreg.getBaseinfo().getAdmissTimes());
         admreg.getInjuryinfo().setLedgerSn(admreg.getBaseinfo().getLedgerSn());
@@ -82,8 +90,72 @@ public class SiInjuryController {
         admreg.setInjuryinfo(dao.selectInjuryinfo(admreg.getBaseinfo().getInpatientNo(), admreg.getBaseinfo().getAdmissTimes(),
                 admreg.getBaseinfo().getLedgerSn()));
         RestTemplate template = new RestTemplate();
-        ResultVo resultVo = template.postForObject(gsUrl + "/admissRegistration", admreg, ResultVo.class);
-        log.info("入院登记结果:{}", resultVo);
-        return resultVo;
+        return template.postForObject(gsUrl + "/admissRegistration", admreg, ResultVo.class);
+    }
+
+    @PostMapping("/uploadFees")
+    public ResultVo<String> uploadFees(@RequestBody Patient p) {
+        p.setStaffId(TokenUtil.getTokenUserId());
+        RestTemplate template = new RestTemplate();
+        return template.postForObject(gsUpldUrl, p, ResultVo.class);
+    }
+
+    @PostMapping("/cancelRegister")
+    public ResultVo<String> cancelInpatientRegister(@RequestBody Patient p) {
+        p.setStaffId(TokenUtil.getTokenUserId());
+        RestTemplate template = new RestTemplate();
+        return template.postForObject(gsUrl + "/cancelRegister", p, ResultVo.class);
+    }
+
+    @PostMapping("/getRegisterInfo")
+    public ResultVo<Map<String, String>> getRegisterInfo(@RequestBody Patient p) {
+        p.setStaffId(TokenUtil.getTokenUserId());
+        RestTemplate template = new RestTemplate();
+        return template.postForObject(gsUrl + "/getRegisterInfo", p, ResultVo.class);
+    }
+
+    @PostMapping("/cancelUploadFee")
+    public ResultVo<String> cancelUploadedFeeDetail(@RequestBody Patient p) {
+        p.setStaffId(TokenUtil.getTokenUserId());
+        RestTemplate template = new RestTemplate();
+        return template.postForObject(gsUrl + "/cancelUploadFee", p, ResultVo.class);
+    }
+
+    @PostMapping("/preCalculateCost")
+    public ResultVo<String> preCalculateCost(@RequestBody Patient p) {
+        p.setStaffId(TokenUtil.getTokenUserId());
+        RestTemplate template = new RestTemplate();
+        return template.postForObject(gsUrl + "/preCalculateCost", p, ResultVo.class);
+    }
+
+    @PostMapping("/calculateCost")
+    public synchronized ResultVo<String> calculateCost(@RequestBody Patient p) {
+        p.setStaffId(TokenUtil.getTokenUserId());
+        RestTemplate template = new RestTemplate();
+        ResultVo<YbSettleFee> resultVo = template.postForObject(gsUrl + "/calculateCost", p, ResultVo.class);
+        if (null == resultVo) {
+            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "获取医保结算费用失败。");
+        }
+        YbSettleFee settleFee = resultVo.getData();
+
+        if (p.getDismissFlag() == 2) {
+            settleFee.setZjdzDatetime(p.getMidSetlDate());
+        }
+        settleFee.setResponceType("02");
+        settleFee.setFlag(p.getDismissFlag());
+        settleFee.setStaffId(TokenUtil.getTokenUserId());
+        settleFee.setInpatientNo(p.getInpatientNo());
+        settleFee.setAdmissTimes(p.getAdmissTimes());
+        settleFee.setBedNo(p.getBedNo());
+        settleFee.setWardCode(p.getAdmissWard());
+        settleFee.setDeptCode(p.getAdmissDept());
+        return dismissService.doDismiss(settleFee);
+    }
+
+    @PostMapping("/cancelCalculate")
+    public ResultVo cancelCalculateCost(@RequestBody Patient p) {
+        p.setStaffId(TokenUtil.getTokenUserId());
+        RestTemplate template = new RestTemplate();
+        return template.postForObject(gsUrl + "/cancelCalculate", p, ResultVo.class);
     }
 }

+ 0 - 2
src/main/java/thyyxxk/webserver/controller/yibao/DictionaryController.java

@@ -52,9 +52,7 @@ public class DictionaryController {
     @PassToken
     @PostMapping("/searchYbDiag")
     public ResultVo<List<PureCodeName>> searchYbDiag(@RequestBody SearchDataParam param) {
-        log.info("查询诊断参数:{}", param);
         ResultVo<List<PureCodeName>> res = service.executeSearch(param);
-        log.info("查询诊断结果:{}", res);
         if (res.getCode() != ExceptionEnum.SUCCESS.getCode()) {
             return res;
         }

+ 3 - 2
src/main/java/thyyxxk/webserver/dao/his/medicalinsurance/SiZyDao.java

@@ -33,7 +33,7 @@ public interface SiZyDao {
      * @param times 住院次数
      * @return 入院医保诊断
      */
-    @Select("select psnNo=(select psn_no from t_si_pat_info where pat_no=#{patNo} and times=#{times}), " +
+    @Select("select psnNo=(select top 1 psn_no from t_si_pat_info where pat_no=#{patNo} and times=#{times}), " +
             "diag_type as diagType, " +
             "maindiagFlag=case when diag_no=1 then '1' else '0' end, " +
             "diag_no as diagSrtNo, " +
@@ -67,7 +67,8 @@ public interface SiZyDao {
             "admDeptName=(select rtrim(name) from zd_unit_code where code=a.small_dept), " +
             "rtrim(a.bed_no) as admBed " +
             "from zy_actpatient a, t_si_pat_info b " +
-            "where a.inpatient_no=#{inpatientNo} and b.pat_no=a.inpatient_no and b.times=a.admiss_times ")
+            "where a.inpatient_no=#{inpatientNo} and b.pat_no=a.inpatient_no " +
+            "and b.times=a.admiss_times and b.ledger_sn=#{ledgerSn}")
     AdmMdtrtinfo selectAdmMdtrtinfo(@Param("inpatientNo") String inpatientNo, 
                                     @Param("ledgerSn") int ledgerSn);
 

+ 8 - 19
src/main/java/thyyxxk/webserver/dao/his/yibao/DictionaryDao.java

@@ -26,25 +26,6 @@ public interface DictionaryDao {
     @Select("SELECT RTRIM(code) AS code,rtrim(name) name FROM a_employee_mi WHERE name LIKE #{content}")
     List<PureCodeName> searchPhysicianByName(String content);
 
-    @Select("SELECT rtrim(code) code,rtrim(name) name FROM yb_zd_xnh_cmisno WHERE py_code LIKE #{content}")
-    List<PureCodeName> searchCmisNoByPinyin(String content);
-
-    @Select("SELECT rtrim(code) code,rtrim(name) name FROM yb_zd_xnh_cmisno WHERE code LIKE #{content}")
-    List<PureCodeName> searchCmisNoByCode(String content);
-
-    @Select("SELECT rtrim(code) code,rtrim(name) name FROM yb_zd_xnh_cmisno WHERE name LIKE #{content}")
-    List<PureCodeName> searchCmisNoByName(String content);
-
-    @Select("SELECT rtrim(code) code,rtrim(name) name FROM zd_redeem_type_xnh where LEN(RTRIM(code))>2 and py_code LIKE #{content}")
-    List<PureCodeName> searchRedeemByPinyin(String content);
-
-    @Select("SELECT rtrim(code) code,rtrim(name) name FROM zd_redeem_type_xnh where LEN(RTRIM(code))>2 and code LIKE #{content}")
-    List<PureCodeName> searchRedeemByCode(String content);
-
-    @Select("SELECT rtrim(code) code,rtrim(name) name FROM zd_redeem_type_xnh where LEN(RTRIM(code))>2 and name LIKE #{content}")
-    List<PureCodeName> searchRedeemByName(String content);
-
-
     @Select("select diagnosis_code as code, diagnosis_name as name from t_si_dl_dss_dns where py_code LIKE #{content}")
     List<PureCodeName> searchDiagnoseByPinyin(String content);
 
@@ -60,4 +41,12 @@ public interface DictionaryDao {
     @Select("select * from ${table}")
     List<SpecialDiag> selectAllSpecialDiags(@Param("table") String table);
 
+    @Select("select code,name from t_zd_injury_icd where code like #{content}")
+    List<PureCodeName> selectInjurydiagByCode(@Param("content") String content);
+
+    @Select("select code,name from t_zd_injury_icd where name like #{content}")
+    List<PureCodeName> selectInjurydiagByName(@Param("content") String content);
+
+    @Select("select code,name from t_zd_injury_icd where py_code like #{content}")
+    List<PureCodeName> selectInjurydiagByAlpha(@Param("content") String content);
 }

+ 10 - 2
src/main/java/thyyxxk/webserver/dao/his/yibao/PatientDao.java

@@ -68,7 +68,7 @@ public interface PatientDao {
             "and order_code in ('06026','06053','05973')), " +
             "dis_diag_status=RTRIM((select dis_diag_status from zy_dis_diag_yb where inpatient_no=#{inpatientNo} " +
             "and admiss_times=a.admiss_times and dis_diag_no=1))," +
-            "operation=rtrim(b.operation)," +
+            "operation=rtrim(b.operation), b.zy_serial_no," +
             "bed_no=rtrim(b.bed_no), b.admdvs, " +
             "charge_yb=(select rtrim(isnull(charge_yb, '0.00')) from zy_ledger_file where inpatient_no=#{inpatientNo} " +
             "and admiss_times=b.admiss_times and ledger_sn=a.ledger_sn), " +
@@ -119,7 +119,7 @@ public interface PatientDao {
             " yb_remark=rtrim(a.yb_remark), " +
             " pass_id=rtrim(a.pass_id), " +
             " pass_name=(select rtrim(name) FROM a_employee_mi WHERE code = a.pass_id), " +
-            " pass_date=a.pass_date, " +
+            " pass_date=a.pass_date, b.zy_serial_no," +
             " ledger_sn=rtrim(b.times_billed), " +
             " admiss_status=rtrim(b.admiss_status), " +
             " dis_diag_status=(select rtrim(dis_diag_status) from zy_dis_diag_yb where inpatient_no=#{inpatientNo} " +
@@ -217,6 +217,14 @@ public interface PatientDao {
                      @Param("admissTimes") Integer admissTimes,
                      @Param("ledgerSn") Integer ledgerSn);
 
+    @Select("select count(1) from yb_zy_review_record where inpatient_no=#{inpatientNo} and " +
+            "admiss_times=#{admissTimes} and ledger_sn=#{ledgerSn}")
+    int selectCountReview(Patient param);
+
+    @Insert("insert into yb_zy_review_record (inpatient_no,admiss_times,ledger_sn,input_id,input_date,remark,status_flag) " +
+            "values (#{inpatientNo}, #{admissTimes}, #{ledgerSn}, #{inputId}, #{inputDate}, #{remark}, 1)")
+    void insertReviewRecord(Patient param);
+
     @Update("update yb_zy_review_record set status_flag=1 where " +
             "inpatient_no=#{inpatientNo} and admiss_times=#{admissTimes} and ledger_sn=#{ledgerSn}")
     void updateStatusFlag(Patient param);

+ 2 - 0
src/main/java/thyyxxk/webserver/entity/yibao/patient/Patient.java

@@ -11,6 +11,7 @@ public class Patient {
     private String table;
     private String inpatientNo;
     private Integer admissTimes;
+    private Date midSetlDate;
     private Integer ledgerSn;
     private String staffId;
     private String socialNo;
@@ -55,6 +56,7 @@ public class Patient {
     private String hicNo;
     private String cardIden;
     private String indiId;
+    private String zySerialNo;
     private String ybJlh;
     private String centerId;
     private String ward;

+ 12 - 29
src/main/java/thyyxxk/webserver/service/yibao/DictionaryService.java

@@ -39,55 +39,38 @@ public class DictionaryService {
         switch (param.getTarget()) {
             case "physician":
                 return ResultVoUtil.success(deepinPhysician(param.getMethod(), param.getContent(), param.isAccurateSearch()));
-            case "cmis_no":
-                return ResultVoUtil.success(deepinCmisNo(param.getMethod(), param.getContent(), param.isAccurateSearch()));
-            case "redeem_type":
-                return ResultVoUtil.success(deepinRedeemType(param.getMethod(), param.getContent(), param.isAccurateSearch()));
             case "diag":
                 return ResultVoUtil.success(deepinDiag(param.getMethod(), param.getContent(), param.isAccurateSearch()));
             case "slwspcdiag":
                 return ResultVoUtil.success(deepinSlwSpcDiag(param.getContent()));
+            case "injurydiag":
+                return ResultVoUtil.success(deepinInjuryDiag(param.getMethod(), param.getContent()));
         }
         return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER);
     }
 
-    private List<PureCodeName> deepinPhysician(String method, String content, boolean accurateSearch) {
-        content = accurateSearch ? content.toUpperCase() + '%' : '%' + content.toUpperCase() + '%';
+    private List<PureCodeName> deepinInjuryDiag(String method, String content) {
+        content = "%" + content.toUpperCase() + "%";
         switch (method) {
             case "alpha":
-                return dao.searchPhysicianByPinyin(content);
+                return dao.selectInjurydiagByAlpha(content);
             case "code":
-                return dao.searchPhysicianByCode(content);
+                return dao.selectInjurydiagByCode(content);
             case "name":
-                return dao.searchPhysicianByName(content);
-            default:
-                return new ArrayList<>();
+                return dao.selectInjurydiagByName(content);
         }
+        return new ArrayList<>();
     }
 
-    private List<PureCodeName> deepinCmisNo(String method, String content, boolean accurateSearch) {
-        content = accurateSearch ? content.toUpperCase() + '%' : '%' + content.toUpperCase() + '%';
-        switch (method) {
-            case "alpha":
-                return dao.searchCmisNoByPinyin(content);
-            case "code":
-                return dao.searchCmisNoByCode(content);
-            case "name":
-                return dao.searchCmisNoByName(content);
-            default:
-                return new ArrayList<>();
-        }
-    }
-
-    private List<PureCodeName> deepinRedeemType(String method, String content, boolean accurateSearch) {
+    private List<PureCodeName> deepinPhysician(String method, String content, boolean accurateSearch) {
         content = accurateSearch ? content.toUpperCase() + '%' : '%' + content.toUpperCase() + '%';
         switch (method) {
             case "alpha":
-                return dao.searchRedeemByPinyin(content);
+                return dao.searchPhysicianByPinyin(content);
             case "code":
-                return dao.searchRedeemByCode(content);
+                return dao.searchPhysicianByCode(content);
             case "name":
-                return dao.searchRedeemByName(content);
+                return dao.searchPhysicianByName(content);
             default:
                 return new ArrayList<>();
         }

+ 5 - 1
src/main/java/thyyxxk/webserver/service/yibao/PatientService.java

@@ -153,7 +153,11 @@ public class PatientService {
             itm.setAdmissTimes(times);
         });
         log.info("提交患者医保身份信息 >>> {} ", param);
-        dao.updateStatusFlag(param.getPatient());
+        if (dao.selectCountReview(param.getPatient()) == 0) {
+            dao.insertReviewRecord(param.getPatient());
+        } else {
+            dao.updateStatusFlag(param.getPatient());
+        }
         dao.updateYbRegisterDate(param.getPatient());
         dao.deleteOldZyInYbDiag(zyh, times);
         dao.insertNewZyInYbDiag(param.getPatient().getStaffId(), param.getDiags());

+ 3 - 1
src/main/resources/application-prod.yml

@@ -62,4 +62,6 @@ si-api-url: http://10.136.68.158:22005/isp-api/powercsb/1101
 si-access-key: 04eMGRg7beAO6vqwrZiLacV8Uy3jNn7QGDUcBO
 si-secret-key: SK3Oip3a2R3NLz2xm58Mpmi69oFu96KrdKNRKglN
 
-si-fee-url: http://172.16.32.159:1100
+si-fee-url: http://172.16.32.159:1100
+si-gs-url: http://172.16.32.163:2000/siInjury
+si-gsfee-url: http://172.16.32.163:2100/siInjury/uploadFee

+ 2 - 3
src/main/resources/application.yml

@@ -64,15 +64,14 @@ hrg-api-url: http://webhis.thyy.cn:81/thmz/api/v1
 powersi-api-url: http://172.16.32.183:8916/mmg-gateway
 triage-notify-url: http://localhost:8083/triage/roomScreen/pushMsg
 si-tj-url: http://jkglcsx.server.zhongmeihealth.com/openInter
+si-fee-url: http://172.16.30.26:1100
 si-gs-url: http://172.16.30.26:2000/siInjury
+si-gsfee-url: http://172.16.30.26:2100/siInjury/uploadFee
 
 si-api-url: http://10.136.68.158:22005/isp-api/powercsb/1101
 si-access-key: 04eMGRg7beAO6vqwrZiLacV8Uy3jNn7QGDUcBO
 si-secret-key: SK3Oip3a2R3NLz2xm58Mpmi69oFu96KrdKNRKglN
 
-si-fee-url: http://localhost:1100
-#si-fee-url: http://172.16.32.159:1100
-
 #logging:
 #  level:
 #    thyyxxk.webserver.dao: debug