Bläddra i källkod

医保电子处方

lighter 1 år sedan
förälder
incheckning
1663a2a0a5

+ 22 - 22
src/main/java/thyyxxk/webserver/constants/sidicts/RxItemTypeCode.java

@@ -5,37 +5,37 @@ import thyyxxk.webserver.utils.StringUtil;
 
 @Getter
 public enum RxItemTypeCode {
-    XY(11, "西药", "09"),
-    ZCY(12, "中成药", "11"),
-    ZYYP(13, "中药饮片", "10"),
-    ZL(21, "治疗", "05"),
-    JY(22, "检验", "04"),
-    JC(23, "检查", "03"),
-    SS(24, "手术", "06"),
-    MZ(25, "麻醉", ""),
-    HL(26, "护理", "07"),
-    SS2(27, "膳食", ""),
-    SX(28, "输血", ""),
-    SY(29, "输氧", ""),
-    QT(31, "其他", "14"),
-    ZK(32, "转科", ""),
-    SY2(33, "术后", ""),
-    CY(34, "出院", ""),
-    ZY(35, "转院", ""),
-    SW(36, "死亡", ""),
-    CH(37, "产后", "");
+    XY("11", "西药", "09"),
+    ZCY("12", "中成药", "11"),
+    ZYYP("13", "中药饮片", "10"),
+    ZL("21", "治疗", "05"),
+    JY("22", "检验", "04"),
+    JC("23", "检查", "03"),
+    SS("24", "手术", "06"),
+    MZ("25", "麻醉", ""),
+    HL("26", "护理", "07"),
+    SS2("27", "膳食", ""),
+    SX("28", "输血", ""),
+    SY("29", "输氧", ""),
+    QT("31", "其他", "14"),
+    ZK("32", "转科", ""),
+    SY2("33", "术后", ""),
+    CY("34", "出院", ""),
+    ZY("35", "转院", ""),
+    SW("36", "死亡", ""),
+    CH("37", "产后", "");
 
-    private final int code;
+    private final String code;
     private final String medChrgitmType;
     private final String description;
 
-    RxItemTypeCode(int code, String description, String medChrgitmType) {
+    RxItemTypeCode(String code, String description, String medChrgitmType) {
         this.code = code;
         this.description = description;
         this.medChrgitmType = medChrgitmType;
     }
 
-    public static int getCodeByMedChrgitmType(String medChrgitmType) {
+    public static String getCodeByMedChrgitmType(String medChrgitmType) {
         if (StringUtil.isBlank(medChrgitmType)) {
             return QT.getCode();
         }

+ 1 - 1
src/main/java/thyyxxk/webserver/controller/medicalinsurance/SiMzController.java

@@ -141,7 +141,7 @@ public class SiMzController {
     }
 
 
-
+    @PassToken
     @PostMapping("/rxPreCheck")
     public JSONObject rxPreCheck(@RequestBody RxPreCheckRequest request) {
         if (StringUtil.isBlank(request.getStaffId())) {

+ 32 - 0
src/main/java/thyyxxk/webserver/dao/his/medicalinsurance/DigitalReceiptDao.java

@@ -3,9 +3,13 @@ package thyyxxk.webserver.dao.his.medicalinsurance;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Select;
 import thyyxxk.webserver.entity.dictionary.CodeName;
+import thyyxxk.webserver.entity.medicalinsurance.digitalreceipt.RxDiseInfo;
+import thyyxxk.webserver.entity.medicalinsurance.digitalreceipt.RxDrugDetail;
 import thyyxxk.webserver.entity.medicalinsurance.digitalreceipt.RxMdtrtInfo;
 import thyyxxk.webserver.entity.medicalinsurance.digitalreceipt.RxPreCheck;
 
+import java.util.List;
+
 @Mapper
 public interface DigitalReceiptDao {
 
@@ -34,4 +38,32 @@ public interface DigitalReceiptDao {
     @Select("select diag_code as code,diag_name as name from t_si_mz_diag " +
             "where pat_no=#{patientId} and times=#{times} and diag_srt_no=1")
     CodeName selectMaindiag(String patientId, int times);
+
+    @Select("select " +
+            "medListCodg=case when medi_item_type=0 then " +
+            "    (select d.national_code from zd_charge_item d where d.code=a.his_item_code) " +
+            "else (select max(d.national_code) from yp_zd_dict d where d.code=a.his_item_code) end, " +
+            "fixmedinsHilistId=a.his_item_code,rxItemTypeCode=med_chrgitm_type,drugGenname=a.his_item_name, " +
+            "drugDosform=case when medi_item_type=0 then '' else " +
+            "(select d.name from yp_zd_dosage d where d.code= " +
+            "(select max(e.dosage) from yp_zd_dict e where e.code=a.his_item_code)) end, " +
+            "drugSpec=case when medi_item_type=0 then '' else " +
+            "(select max(d.specification) from yp_zd_dict d where d.code=a.his_item_code) end, " +
+            "drugDosunt=case when medi_item_type=0 then '' else " +
+            "(select d.name from yp_zd_unit d where d.code= " +
+            "(select max(e.dosage_unit) from yp_zd_dict e where e.code=a.his_item_code)) end, " +
+            "medcWayCodg=case when medi_item_type=0 then '' else 1 end, " +
+            "medcWayDscr=case when medi_item_type=0 then '' else N'口服' end, " +
+            "drugCnt=quantity,medcBegntime=a.fee_date,medcEndtime=a.fee_date+3,medcDays=3, " +
+            "sinDoscnt=1,usedFrquCodg=12,usedFrquName='BID',hospApprFlag='1' " +
+            "from t_mt_receipt a where a.patient_id=#{patientId} and a.times=#{times}")
+    List<RxDrugDetail> selectRxDrugDetailList(String patientId, int times);
+
+    @Select("select " +
+            "diag_type,diag_srt_no,diag_code,diag_name,diag_dept, " +
+            "maindiagFlag=case when diag_srt_no=1 then '1' else '0' end, " +
+            "diagDrNo=(select d.yb_code from a_employee_mi d where d.code=a.dise_dor_no), " +
+            "diagDrName=dise_dor_name,diag_time from t_si_mz_diag a " +
+            "where pat_no=#{patientId} and a.times=#{times} order by diag_srt_no")
+    List<RxDiseInfo> selectRxDiseInfo(String patientId, int times);
 }

+ 9 - 7
src/main/java/thyyxxk/webserver/service/medicalinsurance/SiMzService.java

@@ -9,10 +9,7 @@ import org.springframework.stereotype.Service;
 import thyyxxk.webserver.config.exception.BizException;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.constants.Capacity;
-import thyyxxk.webserver.constants.sidicts.DrordDrProfttl;
-import thyyxxk.webserver.constants.sidicts.Insutype;
-import thyyxxk.webserver.constants.sidicts.MedType;
-import thyyxxk.webserver.constants.sidicts.ReadCardType;
+import thyyxxk.webserver.constants.sidicts.*;
 import thyyxxk.webserver.dao.his.medicalinsurance.DigitalReceiptDao;
 import thyyxxk.webserver.dao.his.medicalinsurance.SiMzDao;
 import thyyxxk.webserver.entity.ResultVo;
@@ -556,10 +553,15 @@ public class SiMzService {
         rxMdtrtInfo.setDrProfttlName(drordDrProfttl.getName());
         rxMdtrtInfo.setDrDeptName(redis.getDeptName(rxMdtrtInfo.getDrDeptCode()));
 
+        List<RxDrugDetail> rxDrugDetailList = rxDao.selectRxDrugDetailList(patientId, times);
+        rxDrugDetailList.forEach(item -> {
+            item.setRxItemTypeCode(RxItemTypeCode.getCodeByMedChrgitmType(item.getRxItemTypeCode()));
+            item.setDrugTotlcnt(item.getDrugCnt());
+            item.setSinDosunt(item.getDrugDosunt());
+            item.setDrugTotlcntEmp(String.valueOf(item.getDrugSpec().charAt(item.getDrugSpec().length()-1)));
+        });
 
-
-        List<RxDrugDetail> rxDrugDetailList = null;
-        List<RxDiseInfo> rxDiseInfoList = null;
+        List<RxDiseInfo> rxDiseInfoList = rxDao.selectRxDiseInfo(patientId, times);
 
         request.setRxPreCheck(rxPreCheck);
         request.setRxMdtrtinfo(rxMdtrtInfo);