Browse Source

可以使用读卡出院

lighter 3 years ago
parent
commit
91dc6631ce

+ 23 - 5
src/main/java/thyyxxk/webserver/constants/sidicts/MdtrtCertType.java

@@ -9,20 +9,22 @@ import thyyxxk.webserver.utils.StringUtil;
  */
 public enum MdtrtCertType {
 
-    MEDICAL_INSURANCE_ELECTRONIC_VOUCHER("01", "医保电子凭证"),
+    MEDICAL_INSURANCE_ELECTRONIC_VOUCHER("01", "医保电子凭证", "qrcode"),
 
-    RESIDENT_IDENTITY_CARD("02", "居民身份证"),
+    RESIDENT_IDENTITY_CARD("02", "居民身份证", "idcard"),
 
-    SOCIAL_SECURITY_CARD("03", "社会保障卡"),
+    SOCIAL_SECURITY_CARD("03", "社会保障卡", "sicard"),
 
-    OTHER("99", "社会保障卡");
+    OTHER("99", "社会保障卡", "sicard");
 
     private final String code;
     private final String name;
+    private final String label;
 
-    MdtrtCertType(String code, String name) {
+    MdtrtCertType(String code, String name, String label) {
         this.code = code;
         this.name = name;
+        this.label = label;
     }
 
     public String getCode() {
@@ -33,6 +35,10 @@ public enum MdtrtCertType {
         return name;
     }
 
+    public String getLabel() {
+        return label;
+    }
+
     public static MdtrtCertType get(String code) {
         if (StringUtil.isBlank(code)) {
             return null;
@@ -44,4 +50,16 @@ public enum MdtrtCertType {
         }
         return null;
     }
+
+    public static MdtrtCertType getByLabel(String label) {
+        if (StringUtil.isBlank(label)) {
+            return RESIDENT_IDENTITY_CARD;
+        }
+        for (MdtrtCertType mdtrtCertType : MdtrtCertType.values()) {
+            if (label.trim().equals(mdtrtCertType.getLabel())) {
+                return mdtrtCertType;
+            }
+        }
+        return RESIDENT_IDENTITY_CARD;
+    }
 }

+ 0 - 26
src/main/java/thyyxxk/webserver/controller/yibao/ReadCardCallbackController.java

@@ -1,26 +0,0 @@
-package thyyxxk.webserver.controller.yibao;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-import thyyxxk.webserver.entity.ResultVo;
-import thyyxxk.webserver.service.yibao.ReadCardCallbackService;
-
-@RestController
-@RequestMapping("/readCardCallback")
-public class ReadCardCallbackController {
-    private final ReadCardCallbackService service;
-
-    @Autowired
-    public ReadCardCallbackController(ReadCardCallbackService service) {
-        this.service = service;
-    }
-
-    @GetMapping("/request")
-    public ResultVo<String> readCard(@RequestParam(value = "inpatientNo") String inpatientNo) {
-        return service.readCard(inpatientNo);
-    }
-
-}

+ 0 - 33
src/main/java/thyyxxk/webserver/controller/yibao/ReadCardWaiterController.java

@@ -1,33 +0,0 @@
-package thyyxxk.webserver.controller.yibao;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-import thyyxxk.webserver.config.auth.PassToken;
-import thyyxxk.webserver.service.yibao.ReadCardCallbackService;
-
-@Slf4j
-@RestController
-@RequestMapping("/apps")
-public class ReadCardWaiterController {
-    private final ReadCardCallbackService service;
-
-    @Autowired
-    public ReadCardWaiterController(ReadCardCallbackService service) {
-        this.service = service;
-    }
-
-    @PassToken
-    @GetMapping("/readCardCallback")
-    Integer setReadCardResult(@RequestParam(value = "inpatientNo") String inpatientNo,
-                          @RequestParam(value = "result") String result,
-                          @RequestParam(value = "cardIden") String cardIden,
-                          @RequestParam(value = "cardNo") String cardNo,
-                          @RequestParam(value = "indiId") String indiId) {
-        log.info("收到新请求,读卡结果:{}", result);
-        return service.setReadCardResult(inpatientNo, result, cardIden, cardNo, indiId);
-    }
-}

+ 3 - 0
src/main/java/thyyxxk/webserver/entity/medicalinsurance/inpatient/ZyPatientInfo.java

@@ -50,6 +50,9 @@ public class ZyPatientInfo {
     private String mdtrtId;
     private String admRegMsgid;
 
+    private String mdtrtCertType;
+    private String mdtrtCertNo;
+
     private Integer feeSize;
 
     List<Integer> detailSns;

+ 5 - 1
src/main/java/thyyxxk/webserver/service/medicalinsurance/SiZyService.java

@@ -370,7 +370,11 @@ public class SiZyService {
         if (null == preSetlmt || StringUtil.isBlank(preSetlmt.getMdtrtId())) {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "此患者没有有效的医保在院信息!");
         }
-        preSetlmt.setMdtrtCertType(MdtrtCertType.RESIDENT_IDENTITY_CARD.getCode());
+        MdtrtCertType mdtrtCertType = MdtrtCertType.getByLabel(p.getMdtrtCertType());
+        preSetlmt.setMdtrtCertType(mdtrtCertType.getCode());
+        if (mdtrtCertType != MdtrtCertType.RESIDENT_IDENTITY_CARD) {
+            preSetlmt.setMdtrtCertNo(p.getMdtrtCertNo());
+        }
         preSetlmt.setPsnSetlway(p.getDbg() ? PsnSetlWay.SETTLE_BY_QUOTA.getCode() : PsnSetlWay.SETTLE_BY_ITEMS.getCode());
         preSetlmt.setAcctUsedFlag(YesOrNo.NO.getCodeStr());
         preSetlmt.setMidSetlFlag(YesOrNo.NO.getCodeStr());

+ 0 - 60
src/main/java/thyyxxk/webserver/service/yibao/ReadCardCallbackService.java

@@ -1,60 +0,0 @@
-package thyyxxk.webserver.service.yibao;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import thyyxxk.webserver.config.exception.ExceptionEnum;
-import thyyxxk.webserver.dao.his.yibao.ReadCardCallbackDao;
-import thyyxxk.webserver.entity.ResultVo;
-import thyyxxk.webserver.utils.ReadCardUtil;
-import thyyxxk.webserver.utils.ResultVoUtil;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author dj
- */
-@Slf4j
-@Service
-public class ReadCardCallbackService {
-    private final ReadCardCallbackDao dao;
-    private final static int CARD_LENGTH = 32;
-
-    @Autowired
-    public ReadCardCallbackService(ReadCardCallbackDao dao) {
-        this.dao = dao;
-    }
-
-    public Integer setReadCardResult(String inpatientNo, String result, String cardIden, String cardNo, String indiId) {
-        inpatientNo = inpatientNo.replaceAll("/", "");
-        if (cardIden != null && cardIden.length() == CARD_LENGTH) {
-            log.info("写入读卡信息:update a_patient_mi set card_iden={}, card_no={}, indi_id={} " +
-                    "where inpatient_no={}", cardIden, cardNo, indiId, inpatientNo);
-            dao.updateCardIden(inpatientNo, cardIden, cardNo, indiId);
-        }
-        ReadCardUtil.instance().put(inpatientNo, result);
-        return 1;
-    }
-
-    public ResultVo<String> readCard(String inpatientNo) {
-        int count = 0;
-        String result = "wait";
-        ReadCardUtil.instance().put(inpatientNo, result);
-        do {
-            result = ReadCardUtil.instance().get(inpatientNo);
-            count++;
-            try {
-                TimeUnit.MILLISECONDS.sleep(1500);
-            } catch (Exception e) {
-                log.error("读卡抛出异常", e);
-            }
-        } while ("wait".equals(result) && count < 30);
-        log.info("读卡 >>> {}, {}", inpatientNo, result);
-        if ("success".equals(result)) {
-            return ResultVoUtil.success();
-        } else {
-            return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, "读卡失败。");
-        }
-    }
-
-}