浏览代码

Merge branch 'new-socket' of https://172.16.32.165/lighter/web-server into new-socket

xiaochan 5 月之前
父节点
当前提交
f4ec5bcd75
共有 19 个文件被更改,包括 103 次插入898 次删除
  1. 0 310
      src/main/java/thyyxxk/webserver/api/dpcc/DpccController.java
  2. 0 30
      src/main/java/thyyxxk/webserver/api/dpcc/DpccEncryptUtil.java
  3. 0 36
      src/main/java/thyyxxk/webserver/api/dpcc/model/MedicalCheckResult.java
  4. 0 51
      src/main/java/thyyxxk/webserver/api/dpcc/model/MedicalPrescription.java
  5. 0 13
      src/main/java/thyyxxk/webserver/api/dpcc/model/PatientInfo.java
  6. 1 0
      src/main/java/thyyxxk/webserver/config/exception/ExceptionEnum.java
  7. 1 1
      src/main/java/thyyxxk/webserver/controller/examinations/InspectionsController.java
  8. 4 4
      src/main/java/thyyxxk/webserver/controller/examinations/LisDockController.java
  9. 0 35
      src/main/java/thyyxxk/webserver/entity/examinations/inspections/InspectionsIndex.java
  10. 0 22
      src/main/java/thyyxxk/webserver/entity/examinations/inspections/QueryInspectionParam.java
  11. 0 6
      src/main/java/thyyxxk/webserver/entity/examinations/inspections/request/PatType.java
  12. 3 1
      src/main/java/thyyxxk/webserver/entity/examinations/inspections/request/ReportIndexInquiry.java
  13. 2 2
      src/main/java/thyyxxk/webserver/entity/examinations/lisdock/PushResultParam.java
  14. 2 17
      src/main/java/thyyxxk/webserver/entity/jianyanjiekou/QueryNormal.java
  15. 0 56
      src/main/java/thyyxxk/webserver/factory/examreport/ExamReportService.java
  16. 0 96
      src/main/java/thyyxxk/webserver/factory/examreport/model/ExamIndexRequest.java
  17. 34 166
      src/main/java/thyyxxk/webserver/service/examinations/InspectionsService.java
  18. 53 50
      src/main/java/thyyxxk/webserver/service/examinations/LisDockService.java
  19. 3 2
      src/main/java/thyyxxk/webserver/service/jianyanjiekou/JianYanJieKouService.java

+ 0 - 310
src/main/java/thyyxxk/webserver/api/dpcc/DpccController.java

@@ -1,310 +0,0 @@
-package thyyxxk.webserver.api.dpcc;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-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 org.springframework.web.client.RestTemplate;
-import thyyxxk.webserver.api.dpcc.model.MedicalCheckResult;
-import thyyxxk.webserver.api.dpcc.model.MedicalPrescription;
-import thyyxxk.webserver.api.dpcc.model.PatientInfo;
-import thyyxxk.webserver.api.medicallaboratory.model.Category;
-import thyyxxk.webserver.config.auth.PassToken;
-import thyyxxk.webserver.dao.his.api.DpccDao;
-import thyyxxk.webserver.entity.examinations.inspections.request.PatType;
-import thyyxxk.webserver.entity.examinations.inspections.request.ReportIndexInquiry;
-import thyyxxk.webserver.factory.examreport.ExamReportService;
-import thyyxxk.webserver.factory.examreport.model.*;
-import thyyxxk.webserver.service.TokenService;
-import thyyxxk.webserver.utils.DateUtil;
-import thyyxxk.webserver.utils.StringUtil;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-@Slf4j
-@RestController
-@RequestMapping("/api/dpcc")
-public class DpccController {
-
-    private static final String TOKEN_URL = "https://manage.national-dpcc.com/api/sino-auth/oauth/token";
-    private static final String CHECK_URL = "https://manage.national-dpcc.com/api/sino-common/access-client/uploadHisCheckData";
-    private static final String DRUG_URL = "https://manage.national-dpcc.com/api/sino-common/access-client/uploadHisDrugData";
-
-    private final DpccDao dao;
-    private final TokenService tokenService;
-
-    @Autowired
-    public DpccController(DpccDao dao, TokenService tokenService) {
-        this.dao = dao;
-        this.tokenService = tokenService;
-    }
-
-    @PassToken
-    @GetMapping("/getToken")
-    public String getToken() {
-        String clientName = "sino-client-csthyy";
-        String clientSecret = "sino-client-csthyy";
-        HttpHeaders headers = new HttpHeaders();
-        headers.setBasicAuth(clientName, clientSecret);
-
-        String url = TOKEN_URL + "?grant_type=access_client&" +
-                "username=sino-client-csthyy&" +
-                "password=d60dc4bf4acfa8956cd6819dba6966d0dab1ddac";
-
-        JSONObject response = new RestTemplate().postForObject(url,
-                new HttpEntity<>(null, headers), JSONObject.class);
-        log.info("DPCC获取TOKEN:{}", response);
-        if (null == response) {
-            return "ERROR:NETWORK_ERROR";
-        }
-        Integer code = response.getInteger("code");
-        if (null == code) {
-            return "ERROR:NETWORK_ERROR";
-        }
-        if (code != 200) {
-            return "ERROR:" +  response.getString("msg");
-        }
-        return response.getJSONObject("data").getString("access_token");
-    }
-
-    @PassToken
-    @GetMapping("/uploadHisData")
-    public String uploadHisData(@RequestParam("token") String token) throws Exception {
-        log.info("DPCC上传请求:{}", token);
-        List<PatientInfo> inpatientList = dao.getInpatientList();
-        List<PatientInfo> outpatientList = dao.getOutpatientList();
-        if (inpatientList.isEmpty() && outpatientList.isEmpty()) {
-            return "没有需要上传的数据。";
-        }
-
-        ReportIndexInquiry inquiry = getReportIndexInquiry();
-
-        uploadInpatientCheck(inpatientList, inquiry, token);
-        uploadOutpatientCheck(outpatientList, inquiry, token);
-
-        uploadInpatientDrug(inpatientList, token);
-        uploadOutpatientDrug(outpatientList, token);
-        return "OK";
-    }
-
-    @PassToken
-    @GetMapping("/uploadMzDpcc")
-    public String uploadMzYp(@RequestParam("pat") String pat,
-                             @RequestParam("day") Integer day) throws Exception {
-        String token = tokenService.getDpccToken();
-        ReportIndexInquiry inquiry = getReportIndexInquiry();
-        log.info("DPCC上传请求:{}, {}", pat, day);
-        List<PatientInfo> outpatientList;
-        if (pat.contains("_")) {
-            String[] patinfo = pat.split("_");
-            String patientId = patinfo[0];
-            int times = Integer.parseInt(patinfo[1]);
-            String socialNo = dao.getSocialNo(patientId);
-            PatientInfo pi = new PatientInfo();
-            pi.setPatNo(patientId);
-            pi.setTimes(times);
-            pi.setSource("1");
-            pi.setIdCard(socialNo);
-            outpatientList = new ArrayList<>();
-            outpatientList.add(pi);
-            Map<String, String> map = dao.getStartAndEndDate(patientId, times);
-            if (null != map) {
-                inquiry.setReqStartTime(map.get("start"));
-                inquiry.setReqEndTime(map.get("endd"));
-            }
-        } else {
-            outpatientList = dao.getOutpatientList2(day);
-        }
-        if (outpatientList.isEmpty()) {
-            return "没有需要上传的数据。";
-        }
-        uploadOutpatientCheck(outpatientList,inquiry,token);
-        uploadOutpatientDrug(outpatientList, token);
-        return "OK";
-    }
-
-    private ReportIndexInquiry getReportIndexInquiry() {
-        String now = DateUtil.formatDate(new Date());
-        String start = now + " 00:00:00";
-        String end = now + " 23:59:59";
-        ReportIndexInquiry inquiry = new ReportIndexInquiry();
-        inquiry.setReqStartTime(start);
-        inquiry.setReqEndTime(end);
-        inquiry.setReportCategory(Category.JY);
-        return inquiry;
-    }
-
-    private void uploadInpatientCheck(List<PatientInfo> inpatientList, ReportIndexInquiry inquiry, String token) throws Exception {
-        inquiry.setPatType(PatType.InPatient);
-        for (PatientInfo inpatient : inpatientList) {
-            queryCheckAndUpload(inquiry, inpatient, token);
-        }
-    }
-
-    private void uploadOutpatientCheck(List<PatientInfo> outpatientList, ReportIndexInquiry inquiry, String token) throws Exception {
-        inquiry.setPatType(PatType.OutPatient);
-        for (PatientInfo outpatient : outpatientList) {
-            queryCheckAndUpload(inquiry, outpatient, token);
-        }
-    }
-
-    private List<ExamIndexResponse> getExamIndex(ReportIndexInquiry inquiry) {
-        ExamIndexRequest request = new ExamIndexRequest.Builder()
-                .patientNumType(inquiry.getPatType()).patientNum(inquiry.getPatNo())
-                .startDate(inquiry.getReqStartTime()).endDate(inquiry.getReqEndTime()).build();
-        ExamReportService examReportService = new ExamReportService();
-        return examReportService.queryExamIndex(request);
-    }
-
-    private ExamDetailResponse getExamDetail(String reportId) {
-        ExamReportService examReportService = new ExamReportService();
-        return examReportService.queryExamDetail(reportId);
-    }
-
-    private boolean reportTimeValid(ExamDetailOrder order) {
-        Date auditTime = DateUtil.parse(order.getAudtTime());
-        if (null == auditTime) {
-            return false;
-        }
-        Date now = new Date();
-        long diff = now.getTime() - auditTime.getTime();
-        return diff / 1000 / 60 / 60 <= 72;
-    }
-
-    private void queryCheckAndUpload(ReportIndexInquiry inquiry, PatientInfo patient, String token) throws Exception {
-        List<MedicalCheckResult> checkResultBatches = new ArrayList<>();
-        inquiry.setPatNo(patient.getPatNo());
-        List<ExamIndexResponse> indexList = getExamIndex(inquiry);
-        for (ExamIndexResponse index : indexList) {
-            ExamDetailResponse detail = getExamDetail(index.getReportId());
-            if (reportTimeValid(detail.getOrder())) {
-                patient.setReportId(index.getReportId());
-                patient.setInspectTime(detail.getOrder().getInspectTime());
-                if (StringUtil.isBlank(patient.getInspectTime())) {
-                    patient.setInspectTime(detail.getOrder().getAudtTime());
-                }
-                for (ExamDetailItem item : detail.getItems()) {
-                    if (StringUtil.isBlank(item.getItmUnit())) {
-                        continue;
-                    }
-                    if (StringUtil.isBlank(item.getItmValue()) && StringUtil.isBlank(item.getItmStrValue())) {
-                        continue;
-                    }
-                    checkResultBatches.add(getMedicalCheckResult(patient, item));
-                    if (checkResultBatches.size() == 100) {
-                        executeUploadChecks(checkResultBatches, token, patient.getPatNo(), patient.getTimes());
-                    }
-                }
-            }
-        }
-        if (!checkResultBatches.isEmpty()) {
-            executeUploadChecks(checkResultBatches, token, patient.getPatNo(), patient.getTimes());
-        }
-    }
-
-    private MedicalCheckResult getMedicalCheckResult(PatientInfo patient, ExamDetailItem item) {
-        MedicalCheckResult checkResult = new MedicalCheckResult();
-        checkResult.setSource(patient.getSource());
-        checkResult.setIdCard(patient.getIdCard());
-        checkResult.setPatientNo(patient.getPatNo());
-        checkResult.setCheckNo(patient.getReportId());
-        checkResult.setTestTime(patient.getInspectTime());
-        checkResult.setHisItemCode(item.getItmCode());
-        checkResult.setHisItemName(item.getItmName());
-        checkResult.setHisItemResult(item.getItmValue());
-        if (StringUtil.isBlank(checkResult.getHisItemResult())) {
-            checkResult.setHisItemResult(item.getItmStrValue());
-        }
-        checkResult.setHisItemUnit(item.getItmUnit());
-        checkResult.setUniqueIndex(patient.getReportId() + "_" + item.getItmId());
-        return checkResult;
-    }
-
-    private void uploadInpatientDrug(List<PatientInfo> inpatientList, String token) throws Exception {
-        List<MedicalPrescription> drugBatches = new ArrayList<>();
-        for (PatientInfo inpatient : inpatientList) {
-            String patNo = inpatient.getPatNo();
-            List<MedicalPrescription> drugs = dao.getInpatientDrugs(inpatient);
-            for (MedicalPrescription item : drugs) {
-                item.setIdCard(inpatient.getIdCard());
-                drugBatches.add(item);
-                if (drugBatches.size() == 100) {
-                    executeUploadDrugs(drugBatches, token, patNo, -1);
-                    drugBatches.clear();
-                }
-            }
-            if (!drugBatches.isEmpty()) {
-                executeUploadDrugs(drugBatches, token, patNo, -1);
-            }
-        }
-    }
-
-    private void uploadOutpatientDrug(List<PatientInfo> outpatientList, String token) throws Exception {
-        for (PatientInfo outpatient : outpatientList) {
-            String patNo = outpatient.getPatNo();
-            int times = outpatient.getTimes();
-            List<MedicalPrescription> drugBatches = new ArrayList<>();
-            List<MedicalPrescription> drugs = dao.getOutpatientDrugs(outpatient);
-            for (MedicalPrescription item : drugs) {
-                item.setIdCard(outpatient.getIdCard());
-                drugBatches.add(item);
-                if (drugBatches.size() == 100) {
-                    executeUploadDrugs(drugBatches, token, patNo, times);
-                    drugBatches.clear();
-                }
-            }
-            if (!drugBatches.isEmpty()) {
-                executeUploadDrugs(drugBatches, token, patNo, times);
-            }
-        }
-    }
-
-    private void executeUploadChecks(List<MedicalCheckResult> checkBatches,
-                                     String token, String patNo, int times) throws Exception {
-        String json = JSON.toJSONString(checkBatches);
-        log.info("DPCC上传检验:{}, {}", patNo, times);
-        uploadToSino(DpccEncryptUtil.encrypt(json), Type.CHECK, token);
-    }
-
-    private void executeUploadDrugs(List<MedicalPrescription> drugBatches,
-                                    String token, String patNo, int times) throws Exception {
-        String json = JSON.toJSONString(drugBatches);
-        log.info("DPCC上传药品:{}, {}", patNo, times);
-        int res = uploadToSino(DpccEncryptUtil.encrypt(json), Type.DRUG, token);
-        if (res == 200 && times != -1) {
-            dao.updateDpccFlag(patNo, times);
-        }
-    }
-
-    private int uploadToSino(String encrypt, Type type, String token) {
-        String url = type == Type.CHECK ? CHECK_URL : DRUG_URL;
-        String label = type == Type.CHECK ? "检验" : "药品";
-        HttpHeaders headers = new HttpHeaders();
-        headers.add("Sino-auth", token);
-        JSONObject data = new JSONObject();
-        data.put("data", encrypt);
-        HttpEntity<JSONObject> body = new HttpEntity<>(data, headers);
-        String response = new RestTemplate().postForObject(url, body, String.class);
-        log.info("DPCC上传{}返回:{}", label, response);
-        if (StringUtil.notBlank(response)) {
-            JSONObject json = JSON.parseObject(response);
-            Integer code = json.getInteger("code");
-            return null == code ? -1 : code;
-        }
-        return -1;
-    }
-
-    enum Type {
-        CHECK,
-        DRUG,
-    }
-}

+ 0 - 30
src/main/java/thyyxxk/webserver/api/dpcc/DpccEncryptUtil.java

@@ -1,30 +0,0 @@
-package thyyxxk.webserver.api.dpcc;
-
-import javax.crypto.Cipher;
-import javax.crypto.spec.SecretKeySpec;
-import java.nio.charset.StandardCharsets;
-import java.util.Base64;
-
-public class DpccEncryptUtil {
-    private static final String key = "d60dc4bf4acfa895";
-
-    public static String encrypt(String plainText) throws Exception {
-        byte[] keyBytes = key.getBytes(StandardCharsets.UTF_8);
-        SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");
-        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
-        cipher.init(Cipher.ENCRYPT_MODE, keySpec);
-        byte[] plainTextBytes = plainText.getBytes(StandardCharsets.UTF_8);
-        byte[] cipherTextBytes = cipher.doFinal(plainTextBytes);
-        return Base64.getEncoder().encodeToString(cipherTextBytes);
-    }
-
-    public static String decrypt(String cipherTextBase64) throws Exception {
-        byte[] keyBytes = key.getBytes(StandardCharsets.UTF_8);
-        SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");
-        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
-        cipher.init(Cipher.DECRYPT_MODE, keySpec);
-        byte[] cipherTextBytes = Base64.getDecoder().decode(cipherTextBase64);
-        byte[] plainTextBytes = cipher.doFinal(cipherTextBytes);
-        return new String(plainTextBytes, StandardCharsets.UTF_8);
-    }
-}

+ 0 - 36
src/main/java/thyyxxk/webserver/api/dpcc/model/MedicalCheckResult.java

@@ -1,36 +0,0 @@
-package thyyxxk.webserver.api.dpcc.model;
-
-import lombok.Data;
-
-@Data
-public class MedicalCheckResult {
-    // 患者身份证号(无身份证号时传"无身份证号传-1")
-    private String idCard;
-
-    // 患者门诊号/住院号
-    private String patientNo;
-
-    // 检验号
-    private String checkNo;
-
-    // 检测指标代码(医院检验指标code)
-    private String hisItemCode;
-
-    // 检测项目名称(例:谷草转氨酶等)
-    private String hisItemName;
-
-    // 检测项目结果值
-    private String hisItemResult;
-
-    // 检测项目结果值单位(例:U/L等)
-    private String hisItemUnit;
-
-    // 检测时间(格式:yyyy-MM-dd HH:mm:ss)
-    private String testTime;
-
-    // 当前记录在视图内唯一标识(最大长度64,可以是id或其他唯一字符)
-    private String uniqueIndex;
-
-    // 数据来源(1表示门诊数据,2表示住院数据)
-    private String source;
-}

+ 0 - 51
src/main/java/thyyxxk/webserver/api/dpcc/model/MedicalPrescription.java

@@ -1,51 +0,0 @@
-package thyyxxk.webserver.api.dpcc.model;
-
-import lombok.Data;
-
-@Data
-public class MedicalPrescription {
-    // 患者身份证号(非必填,无身份证号时传-1)
-    private String idCard;
-
-    // 患者门诊号/住院号
-    private String patientNo;
-
-    // 处方号
-    private String prescriptionNo;
-
-    // 药品编码(医院药品唯一标识)
-    private String hisDrugCode;
-
-    // 药品名称(医院药品名称)
-    private String hisDrugName;
-
-    // 用药频率编码(医院频次唯一标识)
-    private String hisDrugFrequencyCode;
-
-    // His用药频次中文名称(例:每日三次等)
-    private String hisDrugFrequencyName;
-
-    // His用药单位(例:片、mg等)
-    private String hisDrugUnit;
-
-    // 药品用法(例:口服、注射等)
-    private String hisDrugUsage;
-
-    // 用药剂量
-    private String hisDrugDosage;
-
-    // 处方时间(格式:yyyy-MM-dd HH:mm:ss)
-    private String prescriptionTime;
-
-    // 当前记录在视图内唯一标识(最大长度64)
-    private String uniqueIndex;
-
-    // 数据来源(1表示门诊,2表示住院数据)
-    private String source;
-
-    // 门诊用药描述(当source为1时,可不为空;source为2时,忽略)
-    private String oecPrdesc;
-
-    // 住院用药类型code(必填,1表示出院用药,0为非出院用药)
-    private String isCydy;
-}

+ 0 - 13
src/main/java/thyyxxk/webserver/api/dpcc/model/PatientInfo.java

@@ -1,13 +0,0 @@
-package thyyxxk.webserver.api.dpcc.model;
-
-import lombok.Data;
-
-@Data
-public class PatientInfo {
-    private String patNo;
-    private Integer times;
-    private String idCard;
-    private String source;
-    private String reportId;
-    private String inspectTime;
-}

+ 1 - 0
src/main/java/thyyxxk/webserver/config/exception/ExceptionEnum.java

@@ -32,6 +32,7 @@ public enum ExceptionEnum {
     INVALID_PARAM(1007, "参数异常,请检查。"),
     NO_PERMISSION_TO_VIEW(1008, "无权查看。"),
     UNAUTHORIZED_OPERATION(1009, "无权操作。"),
+    API_FUNC_ERROR(1010, "接口错误,请联系管理员。"),
 
     // 以下是需要弹窗提示的错误
     LOGICAL_ERROR(2001, "错误。"),

+ 1 - 1
src/main/java/thyyxxk/webserver/controller/examinations/InspectionsController.java

@@ -55,7 +55,7 @@ public class InspectionsController {
     @PassToken
     @PostMapping("/checkExamDetail")
     public ResultVo<ExamDetailResponse> checkExamDetail(@RequestBody ReportDetailInquiry param) {
-        return ResultVoUtil.success(service.checkExamDetail(param));
+        return ResultVoUtil.success(service.checkExamDetail(param.getReportId()));
     }
 
     @PostMapping("/checkTestIndex")

+ 4 - 4
src/main/java/thyyxxk/webserver/controller/examinations/LisDockController.java

@@ -5,10 +5,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import thyyxxk.webserver.config.auth.PassToken;
 import thyyxxk.webserver.entity.ResultVo;
-import thyyxxk.webserver.entity.examinations.inspections.InspectionsIndex;
-import thyyxxk.webserver.entity.examinations.inspections.QueryInspectionParam;
+import thyyxxk.webserver.entity.examinations.inspections.request.ReportIndexInquiry;
 import thyyxxk.webserver.entity.examinations.lisdock.HealthCardResult;
 import thyyxxk.webserver.entity.examinations.lisdock.PushResultParam;
+import thyyxxk.webserver.factory.examreport.model.ExamIndexResponse;
 import thyyxxk.webserver.service.examinations.LisDockService;
 
 import java.util.List;
@@ -29,12 +29,12 @@ public class LisDockController {
     }
 
     @PostMapping("/scanBarCode")
-    public ResultVo<Map<String, Object>> scanBarCode(@RequestBody QueryInspectionParam param) throws Exception {
+    public ResultVo<Map<String, Object>> scanBarCode(@RequestBody ReportIndexInquiry param) throws Exception {
         return service.scanBarCode(param);
     }
 
     @PostMapping("/getIndexByTjNo")
-    public ResultVo<List<InspectionsIndex>> getIndexByTjNo(@RequestBody QueryInspectionParam param) throws Exception {
+    public ResultVo<List<ExamIndexResponse>> getIndexByTjNo(@RequestBody ReportIndexInquiry param) throws Exception {
         return service.getIndexByTjNo(param);
     }
 

+ 0 - 35
src/main/java/thyyxxk/webserver/entity/examinations/inspections/InspectionsIndex.java

@@ -1,35 +0,0 @@
-package thyyxxk.webserver.entity.examinations.inspections;
-
-import lombok.Data;
-
-@Data
-public class InspectionsIndex {
-    // 报告ID
-    private String ORDR_ID;
-    // 病历号类型   0|1|3 -- 门诊号|住院号|体检号
-    private String PTNT_NO_TYPE;
-    // 患者姓名
-    private String PTNT_NAME;
-    // 患者性别
-    private String PTNT_SEX;
-    // 出生日期
-    private String PTNT_BIRTH;
-    // 年龄
-    private String PTNT_AGE;
-    // 样本编号
-    private String SAMPLE_NUMBER;
-    // 报告类别   1|2 -- 普通报告|微生物报告
-    private String INFO_TYPE;
-    // 报告录入时间
-    private String ORDR_CREATE_DATE;
-    // 患者类别   0|1|3 -- 门诊|住院|体检
-    private String PATIENT_TYPE;
-    // 患者编号
-    private String PTNT_ID;
-    // 身份证号
-    private String ID_CARD;
-    // 就诊卡号
-    private String IC_CARD;
-    // 检查目的
-    private String APLY_CTNT;
-}

+ 0 - 22
src/main/java/thyyxxk/webserver/entity/examinations/inspections/QueryInspectionParam.java

@@ -1,22 +0,0 @@
-package thyyxxk.webserver.entity.examinations.inspections;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-
-import java.util.Date;
-
-/**
- * @author dj
- */
-@Data
-public class QueryInspectionParam {
-    /**
-     * 患者类别 0=门诊,1=住院,3=体检
-     * */
-    private Integer type;
-    private String content;
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-    private Date start;
-    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
-    private Date end;
-}

+ 0 - 6
src/main/java/thyyxxk/webserver/entity/examinations/inspections/request/PatType.java

@@ -1,6 +0,0 @@
-package thyyxxk.webserver.entity.examinations.inspections.request;
-
-public enum PatType {
-    InPatient,
-    OutPatient,
-}

+ 3 - 1
src/main/java/thyyxxk/webserver/entity/examinations/inspections/request/ReportIndexInquiry.java

@@ -2,13 +2,15 @@ package thyyxxk.webserver.entity.examinations.inspections.request;
 
 import lombok.Data;
 import thyyxxk.webserver.api.medicallaboratory.model.Category;
+import thyyxxk.webserver.entity.examinations.inspections.consts.PatientNumType;
 
 @Data
 public class ReportIndexInquiry {
-    private PatType patType;
+    private PatientNumType patType;
     private Category reportCategory;
     private String patNo;
     private String socialNo;
     private String reqStartTime;
     private String reqEndTime;
+    private String content;
 }

+ 2 - 2
src/main/java/thyyxxk/webserver/entity/examinations/lisdock/PushResultParam.java

@@ -1,7 +1,7 @@
 package thyyxxk.webserver.entity.examinations.lisdock;
 
 import lombok.Data;
-import thyyxxk.webserver.entity.examinations.inspections.InspectionsIndex;
+import thyyxxk.webserver.factory.examreport.model.ExamIndexResponse;
 
 import java.util.List;
 
@@ -12,5 +12,5 @@ import java.util.List;
 public class PushResultParam {
     private CustomerInfo customerInfo;
     private String tjNo;
-    private List<InspectionsIndex> inspectionsIndex;
+    private List<ExamIndexResponse> inspectionsIndex;
 }

+ 2 - 17
src/main/java/thyyxxk/webserver/entity/jianyanjiekou/QueryNormal.java

@@ -4,6 +4,8 @@ import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import thyyxxk.webserver.entity.examinations.inspections.consts.CardType;
+import thyyxxk.webserver.entity.examinations.inspections.consts.PatientNumType;
 
 @Data
 @Builder
@@ -63,21 +65,4 @@ public class QueryNormal {
      * 查询截止日期:yyyy-MM-dd
      */
     private String endDate;
-
-    public enum CardType {
-        SocialSecurityCard,
-        HealthCard,
-        MedicalCard,
-        IDCard,
-        Undefine
-    }
-
-    public enum PatientNumType {
-        OutPatient,
-        InPatient,
-        Lis,
-        Pis,
-        Marry,
-        None
-    }
 }

+ 0 - 56
src/main/java/thyyxxk/webserver/factory/examreport/ExamReportService.java

@@ -1,56 +0,0 @@
-package thyyxxk.webserver.factory.examreport;
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import org.springframework.web.client.RestTemplate;
-import thyyxxk.webserver.config.exception.BizException;
-import thyyxxk.webserver.config.exception.ExceptionEnum;
-import thyyxxk.webserver.factory.examreport.model.ExamDetailResponse;
-import thyyxxk.webserver.factory.examreport.model.ExamIndexRequest;
-import thyyxxk.webserver.factory.examreport.model.ExamIndexResponse;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ExamReportService {
-    private static final String URL = "http://172.16.32.178/apis/third/report/query";
-
-    public List<ExamIndexResponse> queryExamIndex(ExamIndexRequest request) {
-        JSONObject response = new RestTemplate()
-                .postForObject(URL + "/self", request, JSONObject.class);
-        if (null == response) {
-            throw new BizException(ExceptionEnum.NETWORK_ERROR);
-        }
-        Boolean code = response.getBoolean("code");
-        if (null == code || !code) {
-            throw new BizException(response.getString("message"));
-        }
-        JSONObject data = response.getJSONObject("data");
-        JSONArray items = data.getJSONArray("items");
-        List<ExamIndexResponse> examIndexList = new ArrayList<>();
-        for (int i = 0; i < items.size(); i++) {
-            JSONObject item = items.getJSONObject(i);
-            ExamIndexResponse examIndexResponse = JSONObject.toJavaObject(item, ExamIndexResponse.class);
-            examIndexList.add(examIndexResponse);
-        }
-        return examIndexList;
-    }
-
-    public ExamDetailResponse queryExamDetail(String reportId) {
-        JSONObject params = new JSONObject();
-        params.put("reportId", reportId);
-        params.put("responseMode", "Json");
-        JSONObject response = new RestTemplate().postForObject(
-                URL + "/detail", params, JSONObject.class);
-        if (null == response) {
-            throw new BizException(ExceptionEnum.NETWORK_ERROR);
-        }
-        Boolean code = response.getBoolean("code");
-        if (null == code || !code) {
-            throw new BizException(response.getString("message"));
-        }
-        JSONObject data = response.getJSONObject("data");
-        return JSONObject.toJavaObject(data, ExamDetailResponse.class);
-    }
-}
-

+ 0 - 96
src/main/java/thyyxxk/webserver/factory/examreport/model/ExamIndexRequest.java

@@ -1,96 +0,0 @@
-package thyyxxk.webserver.factory.examreport.model;
-
-import lombok.Data;
-import thyyxxk.webserver.entity.examinations.inspections.request.PatType;
-
-@Data
-public class ExamIndexRequest {
-    /**
-     * 卡类型,枚举值。
-     * 值域:
-     * SocialSecurityCard = 国家社保卡
-     * HealthCard = 居民健康卡
-     * MedicalCard = 院内诊疗卡
-     * IDCard = 居民身份证
-     * Undefine = 未知(默认值)
-     * */
-    private String cardType;
-    private String cardNo;
-    /**
-     * 患者病历号类别(对应检验网的验单录入界面的病历号类型),枚举值。
-     * 值域:
-     * OutPatient = 门诊号
-     * InPatient = 住院号
-     * Lis = 验单号
-     * Pis = 体检号
-     * Marry = 婚检号
-     * None = 未知(默认值)
-     * */
-    private PatType patientNumType;
-    /**
-     * 对应 patientNumType 参数的具体号码
-     * */
-    private String patientNum;
-    /**
-     * 查询起始日期: yyyy-MM-dd
-     * */
-    private String startDate;
-    /**
-     * 查询截止日期: yyyy-MM-dd
-     * */
-    private String endDate;
-
-    private ExamIndexRequest() {}
-
-    private ExamIndexRequest(String cardType, String cardNo, PatType patientNumType, String patientNum, String startDate, String endDate) {
-        this.cardType = cardType;
-        this.cardNo = cardNo;
-        this.patientNumType = patientNumType;
-        this.patientNum = patientNum;
-        this.startDate = startDate;
-        this.endDate = endDate;
-    }
-
-    public static class Builder {
-        private String cardType = "Undefine";
-        private String cardNo = "";
-        private PatType patientNumType;
-        private String patientNum;
-        private String startDate;
-        private String endDate;
-
-        public Builder cardType(String cardType) {
-            this.cardType = cardType;
-            return this;
-        }
-
-        public Builder cardNo(String cardNo) {
-            this.cardNo = cardNo;
-            return this;
-        }
-
-        public Builder patientNumType(PatType patientNumType) {
-            this.patientNumType = patientNumType;
-            return this;
-        }
-
-        public Builder patientNum(String patientNum) {
-            this.patientNum = patientNum;
-            return this;
-        }
-
-        public Builder startDate(String startDate) {
-            this.startDate = startDate;
-            return this;
-        }
-
-        public Builder endDate(String endDate) {
-            this.endDate = endDate;
-            return this;
-        }
-
-        public ExamIndexRequest build() {
-            return new ExamIndexRequest(cardType, cardNo, patientNumType, patientNum, startDate, endDate);
-        }
-    }
-}

+ 34 - 166
src/main/java/thyyxxk/webserver/service/examinations/InspectionsService.java

@@ -1,42 +1,32 @@
 package thyyxxk.webserver.service.examinations;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
 import thyyxxk.webserver.config.exception.BizException;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.dao.his.examinations.InspectionsDao;
 import thyyxxk.webserver.entity.ResultVo;
-import thyyxxk.webserver.entity.examinations.inspections.InspectionsIndex;
-import thyyxxk.webserver.entity.examinations.inspections.QueryInspectionParam;
-import thyyxxk.webserver.entity.examinations.inspections.detail.*;
-import thyyxxk.webserver.entity.examinations.inspections.request.PatType;
+import thyyxxk.webserver.entity.examinations.inspections.consts.PatientNumType;
+import thyyxxk.webserver.entity.examinations.inspections.consts.ResponseMode;
 import thyyxxk.webserver.entity.examinations.inspections.request.ReportDetailInquiry;
 import thyyxxk.webserver.entity.examinations.inspections.request.ReportIndexInquiry;
 import thyyxxk.webserver.entity.examinations.inspections.response.TestReport;
 import thyyxxk.webserver.factory.electro.ElectroService;
 import thyyxxk.webserver.factory.electro.model.ElectroIndex;
-import thyyxxk.webserver.factory.examreport.ExamReportService;
 import thyyxxk.webserver.factory.examreport.model.ExamDetailResponse;
-import thyyxxk.webserver.factory.examreport.model.ExamIndexRequest;
 import thyyxxk.webserver.factory.examreport.model.ExamIndexResponse;
 import thyyxxk.webserver.factory.pathology.PathologyService;
 import thyyxxk.webserver.factory.pathology.model.PathologyIndex;
-import thyyxxk.webserver.service.examinations.lis.PushService;
-import thyyxxk.webserver.service.externalhttp.ThmzSystem;
 import thyyxxk.webserver.utils.*;
 
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
-import java.util.Map;
+import java.util.Objects;
 
 /**
  * @author dj
@@ -44,169 +34,47 @@ import java.util.Map;
 @Service
 @Slf4j
 public class InspectionsService {
+    @Value(value = "${thirdpartApi}")
+    private String thirdpartApi;
     private final InspectionsDao dao;
-    private final ThmzSystem thmz;
-    private static final String UNDEFINED = "undefined";
-    private static final String SUCCESS = "1";
-    private static final String ERROR = "0";
-    @Value("${thmz-api-url}")
-    private String thmzApiUrl;
+    private final RestTemplate template;
 
     @Autowired
-    public InspectionsService(InspectionsDao dao, ThmzSystem thmz) {
+    public InspectionsService(InspectionsDao dao, RestTemplate template) {
         this.dao = dao;
-        this.thmz = thmz;
+        this.template = template;
     }
 
-    public ResultVo<List<InspectionsIndex>> queryInspectionsIndex(QueryInspectionParam param) {
-        if (param.getType() == 0) {
-            Map<String, Object> parent = thmz.getParentIdByPatientId(thmzApiUrl, param.getContent());
-            if ((int) parent.get("code") == 0) {
-                List<Map<String, String>> list = FilterUtil.cast(parent.get("data"));
-                param.setContent(list.get(0).get("parentPatientId"));
-            }
-        }
-        String message = "<message>" + "<PATIENT_TYPE>" + param.getType() + "</PATIENT_TYPE>" + "<PTNT_NO>" + param.getContent() + "</PTNT_NO>" + "<START_TIME>" + DateUtil.formatDate(param.getStart()) + "</START_TIME>" + "<END_TIME>" + DateUtil.formatDate(param.getEnd()) + "</END_TIME>" + "</message>";
-        String xml = new PushService().getPushServiceSoap().getLabReportIndex(message);
-        return analyzeReportIndex(xml);
-    }
-
-    public ResultVo<InspectionDetail> queryInspectionDetail(String orderId) {
-        if (orderId == null || orderId.trim().isEmpty() || UNDEFINED.equals(orderId.trim())) {
-            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "报告ID不能为空!");
+    public List<ExamIndexResponse> checkExamIndex(ReportIndexInquiry inquiry) {
+        JSONObject js = JSON.parseObject(JSON.toJSONString(inquiry));
+        String url = thirdpartApi + "/inspection/queryExamIndex";
+        ResultVo<List<ExamIndexResponse>> response = template.postForObject(url, js, ResultVo.class);
+        if (null == response) {
+            throw new BizException(ExceptionEnum.NETWORK_ERROR);
         }
-        String message = "<message><ORDR_ID>" + orderId + "</ORDR_ID></message>";
-        String xml = new PushService().getPushServiceSoap().getLabReport(message);
-        return analyzeReportDetail(xml);
-    }
-
-    private Element getReturnElement(String xml) {
-        try {
-            Document document = DocumentHelper.parseText(xml);
-            Element root = document.getRootElement();
-            return root.element("return");
-        } catch (DocumentException e) {
-            log.error("解析检验报告返回内容出错", e);
+        if (!Objects.equals(response.getCode(), ExceptionEnum.SUCCESS.getCode())) {
+            throw new BizException(ExceptionEnum.API_FUNC_ERROR);
         }
-        return null;
+        return response.getData();
     }
 
-    private ResultVo<List<InspectionsIndex>> analyzeReportIndex(String xml) {
-        Element retEle = getReturnElement(xml);
-        if (retEle == null) {
-            return null;
+    public ExamDetailResponse checkExamDetail(String reportId) {
+        JSONObject js = new JSONObject();
+        js.put("reportId", reportId);
+        js.put("responseMode", ResponseMode.Json);
+        String url = thirdpartApi + "/inspection/queryExamIndex";
+        ResultVo<ExamDetailResponse> response = template.postForObject(url, js, ResultVo.class);
+        if (null == response) {
+            throw new BizException(ExceptionEnum.NETWORK_ERROR);
         }
-        Element codeEl = retEle.element("Code");
-        String code = codeEl.getStringValue();
-        if (SUCCESS.equals(code)) {
-            List<InspectionsIndex> list = new ArrayList<>();
-            Element resEl = retEle.element("Result");
-            List<Element> reports = FilterUtil.cast(resEl.elements("ReportList"));
-            reports.forEach(item -> {
-                InspectionsIndex pojo = new InspectionsIndex();
-                Field[] fields = pojo.getClass().getDeclaredFields();
-                for (Field field : fields) {
-                    try {
-                        field.setAccessible(true);
-                        String name = field.getName();
-                        Method m = pojo.getClass().getMethod("set" + name, String.class);
-                        m.invoke(pojo, item.elementTextTrim(name));
-                    } catch (Exception e) {
-                        log.error("解析检验报告列表出错", e);
-                    }
-                }
-                list.add(pojo);
-            });
-            return ResultVoUtil.success(list);
-        } else {
-            Element errorMsgEl = retEle.element("ErrorMsg");
-            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, errorMsgEl.getStringValue());
+        if (!Objects.equals(response.getCode(), ExceptionEnum.SUCCESS.getCode())) {
+            throw new BizException(ExceptionEnum.API_FUNC_ERROR);
         }
+        return response.getData();
     }
+    
 
-    private ResultVo<InspectionDetail> analyzeReportDetail(String xml) {
-        Element retEle = getReturnElement(xml);
-        if (retEle == null) {
-            return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "结果集为空!");
-        }
-        String code = retEle.elementTextTrim("Code");
-        if (ERROR.equals(code)) {
-            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, retEle.elementTextTrim("ErrorMsg"));
-        }
-        InspectionDetail detail = new InspectionDetail();
-        Element reportListEle = retEle.element("Result").element("ReportList");
-        InspectionHeader header = new InspectionHeader();
-        detail.setInspectionHeader((InspectionHeader) reflect(header, reportListEle.element("ReportHeader")));
-        List<InspectionItem> inspectionItems = new ArrayList<>();
-        List<Element> reportItemElements = FilterUtil.cast(reportListEle.elements("ReportItem"));
-        reportItemElements.forEach(reportItemElement -> {
-            InspectionItem inspectionItem = new InspectionItem();
-            reflect(inspectionItem, reportItemElement);
-            List<Element> bacteriaResultElements = FilterUtil.cast(reportItemElement.elements("BacteriaResult"));
-            if (!bacteriaResultElements.isEmpty()) {
-                List<BacteriaResult> bacteriaResults = new ArrayList<>();
-                bacteriaResultElements.forEach(bacterialResultElement -> {
-                    BacteriaResult bacteriaResult = new BacteriaResult();
-                    reflect(bacteriaResult, bacterialResultElement);
-                    List<Element> antibioticResultElements = FilterUtil.cast(bacterialResultElement.elements("AntibioticResult"));
-                    if (!antibioticResultElements.isEmpty()) {
-                        List<AntibioticResult> antibioticResults = new ArrayList<>();
-                        antibioticResultElements.forEach(antibioticResultElement -> {
-                            AntibioticResult antibioticResult = new AntibioticResult();
-                            antibioticResults.add((AntibioticResult) reflect(antibioticResult, antibioticResultElement));
-                        });
-                        bacteriaResult.setAntibioticResults(antibioticResults);
-                    }
-                    if (StringUtil.notBlank(bacteriaResult.getBAC_ID())) {
-                        bacteriaResults.add(bacteriaResult);
-                    }
-                });
-                inspectionItem.setBacteriaResults(bacteriaResults);
-            }
-            if (StringUtil.notBlank(inspectionItem.getITM_VALUE()) || StringUtil.notBlank(inspectionItem.getITM_STR_VALUE()) || inspectionItem.getBacteriaResults().size() > 0) {
-                inspectionItems.add(inspectionItem);
-            }
-        });
-        detail.setInspectionItems(inspectionItems);
-        return ResultVoUtil.success(detail);
-    }
 
-    private Object reflect(Object pojo, Element element) {
-        Field[] fields = pojo.getClass().getDeclaredFields();
-        for (Field field : fields) {
-            try {
-                String name = field.getName();
-                if ("bacteriaResults".equals(name) || "antibioticResults".equals(name)) {
-                    continue;
-                }
-                Method m = pojo.getClass().getMethod("set" + name, String.class);
-                m.invoke(pojo, element.elementTextTrim(name));
-            } catch (Exception e) {
-                log.error("解析检验报告详情出错", e);
-            }
-        }
-        return pojo;
-    }
-
-
-
-
-    public List<ExamIndexResponse> checkExamIndex(ReportIndexInquiry inquiry) {
-        ExamIndexRequest request = new ExamIndexRequest.Builder()
-                .patientNumType(inquiry.getPatType()).patientNum(inquiry.getPatNo())
-                .startDate(inquiry.getReqStartTime()).endDate(inquiry.getReqEndTime()).build();
-        ExamReportService examReportService = new ExamReportService();
-        List<ExamIndexResponse> list = examReportService.queryExamIndex(request);
-        list.sort(Comparator.comparing(ExamIndexResponse::getTrscDate));
-        return list;
-    }
-
-    public ExamDetailResponse checkExamDetail(ReportDetailInquiry param) {
-        if (StringUtil.isBlank(param.getReportId())) {
-            throw new BizException("报告ID不能为空!");
-        }
-        return new ExamReportService().queryExamDetail(param.getReportId());
-    }
 
     public List<TestReport> checkTestIndex(ReportIndexInquiry inquiry) {
         return dao.selectTestReportIndex(inquiry);
@@ -247,8 +115,8 @@ public class InspectionsService {
         return list;
     }
 
-    private String getPatSocialNo(PatType patType, String patNo) {
-        if (patType == PatType.InPatient) {
+    private String getPatSocialNo(PatientNumType patType, String patNo) {
+        if (patType == PatientNumType.InPatient) {
             return dao.selectInpatientSocialNo(patNo);
         }
         return dao.selectOutpatientSocialNo(patNo);

+ 53 - 50
src/main/java/thyyxxk/webserver/service/examinations/LisDockService.java

@@ -10,15 +10,16 @@ import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.constants.Capacity;
 import thyyxxk.webserver.dao.his.examinations.InspectionsDao;
 import thyyxxk.webserver.entity.ResultVo;
-import thyyxxk.webserver.entity.examinations.inspections.InspectionsIndex;
-import thyyxxk.webserver.entity.examinations.inspections.QueryInspectionParam;
-import thyyxxk.webserver.entity.examinations.inspections.detail.InspectionDetail;
-import thyyxxk.webserver.entity.examinations.inspections.detail.InspectionHeader;
-import thyyxxk.webserver.entity.examinations.inspections.detail.InspectionItem;
+import thyyxxk.webserver.entity.examinations.inspections.consts.PatientNumType;
+import thyyxxk.webserver.entity.examinations.inspections.request.ReportIndexInquiry;
 import thyyxxk.webserver.entity.examinations.lisdock.CustomerInfo;
 import thyyxxk.webserver.entity.examinations.lisdock.HealthCardResult;
 import thyyxxk.webserver.entity.examinations.lisdock.ItemResult;
 import thyyxxk.webserver.entity.examinations.lisdock.PushResultParam;
+import thyyxxk.webserver.factory.examreport.model.ExamDetailItem;
+import thyyxxk.webserver.factory.examreport.model.ExamDetailOrder;
+import thyyxxk.webserver.factory.examreport.model.ExamDetailResponse;
+import thyyxxk.webserver.factory.examreport.model.ExamIndexResponse;
 import thyyxxk.webserver.service.TokenService;
 import thyyxxk.webserver.service.externalhttp.Html2ImgSrvc;
 import thyyxxk.webserver.utils.Md5Util;
@@ -53,8 +54,8 @@ public class LisDockService {
         this.tokenService = tokenService;
     }
 
-    public ResultVo<Map<String, Object>> scanBarCode(QueryInspectionParam param) {
-        JSONObject customerInfo = getCustomerInfo(param.getContent());
+    public ResultVo<Map<String, Object>> scanBarCode(ReportIndexInquiry inquiry) {
+        JSONObject customerInfo = getCustomerInfo(inquiry.getContent());
         if (null == customerInfo) {
             return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "未查询到此条码对应的身份信息。");
         }
@@ -62,34 +63,36 @@ public class LisDockService {
         map.put("customerInfo", customerInfo);
         String tjNo = dao.selectTjNo(customerInfo.getString("idCard"));
         map.put("tjNo", tjNo);
-        param.setType(3);
-        param.setContent(tjNo);
-        List<InspectionsIndex> list = service.queryInspectionsIndex(param).getData();
-        list.removeIf(item -> !item.getAPLY_CTNT().contains("大便培养") && !item.getAPLY_CTNT().contains("大便体检") &&
-                !item.getAPLY_CTNT().contains("甲肝抗体") && !item.getAPLY_CTNT().contains("戊肝抗体") &&
-                !item.getAPLY_CTNT().contains("核酸检测"));
-        map.put("inspectionsIndex", list);
+        inquiry.setPatType(PatientNumType.Pis);
+        inquiry.setPatNo(tjNo);
+        map.put("inspectionsIndex", getFilteredList(inquiry));
         return ResultVoUtil.success(map);
     }
 
-    public ResultVo<List<InspectionsIndex>> getIndexByTjNo(QueryInspectionParam param) {
-        param.setType(3);
-        List<InspectionsIndex> list = service.queryInspectionsIndex(param).getData();
-        list.removeIf(item -> !item.getAPLY_CTNT().contains("大便培养") && !item.getAPLY_CTNT().contains("大便体检") &&
-                !item.getAPLY_CTNT().contains("甲肝抗体") && !item.getAPLY_CTNT().contains("戊肝抗体") &&
-                !item.getAPLY_CTNT().contains("核酸检测"));
-        return ResultVoUtil.success(list);
+    public ResultVo<List<ExamIndexResponse>> getIndexByTjNo(ReportIndexInquiry inquiry) {
+        inquiry.setPatType(PatientNumType.Pis);
+        inquiry.setPatNo(inquiry.getContent());
+        return ResultVoUtil.success(getFilteredList(inquiry));
+    }
+
+    private List<ExamIndexResponse> getFilteredList(ReportIndexInquiry inquiry) {
+        List<ExamIndexResponse> list = service.checkExamIndex(inquiry);
+        list.removeIf(item ->
+                !item.getExamPurpose().contains("大便培养") && !item.getExamPurpose().contains("大便体检") &&
+                        !item.getExamPurpose().contains("甲肝抗体") && !item.getExamPurpose().contains("戊肝抗体") &&
+                        !item.getExamPurpose().contains("核酸检测"));
+        return list;
     }
 
     public ResultVo<Map<String, String>> pushSelectedResult(PushResultParam param) {
         String itemCode;
         CustomerInfo customerInfo = param.getCustomerInfo();
         Map<String, String> map = new HashMap<>(Capacity.TWO);
-        for (InspectionsIndex index : param.getInspectionsIndex()) {
-            if (index.getAPLY_CTNT().contains("大便培养") || index.getAPLY_CTNT().contains("大便体检")) {
+        for (ExamIndexResponse index : param.getInspectionsIndex()) {
+            if (index.getExamPurpose().contains("大便培养") || index.getExamPurpose().contains("大便体检")) {
                 customerInfo.setType("0");
                 itemCode = STOOL_CULTURE;
-            } else if (index.getAPLY_CTNT().contains("核酸检测")) {
+            } else if (index.getExamPurpose().contains("核酸检测")) {
                 customerInfo.setType("2");
                 itemCode = COVID_EXAM;
             } else {
@@ -99,37 +102,37 @@ public class LisDockService {
             HealthCardResult result = new HealthCardResult();
             result.setAppId(APP_ID);
             result.setCustomerInfo(customerInfo);
-            InspectionDetail detail = service.queryInspectionDetail(index.getORDR_ID()).getData();
-            InspectionHeader header = detail.getInspectionHeader();
+            ExamDetailResponse detail = service.checkExamDetail(index.getReportId());
+            ExamDetailOrder header = detail.getOrder();
             List<ItemResult> itemResults = new ArrayList<>();
             ItemResult model = new ItemResult();
             model.setItemName("");
-            model.setOpter(header.getTEST_USR_NAME());
-            model.setAuditOpter(header.getAUDT_USR_NAME());
-            model.setTestTime(header.getORDR_CREATE_DATE().substring(0, 10));
-            model.setAuditTime(header.getAUDT_TIME().substring(0, 10));
+            model.setOpter(header.getTestUsrName());
+            model.setAuditOpter(header.getAudtUsrName());
+            model.setTestTime(header.getOrdrCreateDate().substring(0, 10));
+            model.setAuditTime(header.getAudtTime().substring(0, 10));
             model.setResult("未见异常");
             model.setStatus("0");
             model.setReference("");
             model.setUnit("");
             model.setItemCode(itemCode);
             if (STOOL_CULTURE.equals(itemCode)) {
-                for (InspectionItem item : detail.getInspectionItems()) {
-                    if (item.getITM_NAME().contains("大便培养") || item.getITM_NAME().contains("大便体检")) {
+                for (ExamDetailItem item : detail.getItems()) {
+                    if (item.getItmName().contains("大便培养") || item.getItmName().contains("大便体检")) {
                         fillResultItem(itemResults, model, item);
-                    } else if (item.getITM_NAME().contains("阿米巴")){
+                    } else if (item.getItmName().contains("阿米巴")){
                         ItemResult ambxlj = model.clone();
                         ambxlj.setItemName("阿米巴性痢疾");
-                        if (!item.getITM_STR_VALUE().contains("未见")) {
-                            ambxlj.setResult(item.getITM_STR_VALUE());
+                        if (!item.getItmStrValue().contains("未见")) {
+                            ambxlj.setResult(item.getItmStrValue());
                             ambxlj.setStatus("1");
                         }
                         itemResults.add(ambxlj);
-                    } else if (item.getITM_NAME().contains("微生物培养")) {
+                    } else if (item.getItmName().contains("微生物培养")) {
                         fillResultItem(itemResults, model, item);
                         ItemResult ambxlj = model.clone();
                         ambxlj.setItemName("阿米巴性痢疾");
-                        if (!item.getITM_STR_VALUE().contains("未检出")) {
+                        if (!item.getItmStrValue().contains("未检出")) {
                             ambxlj.setResult("检出");
                             ambxlj.setStatus("1");
                         }
@@ -137,19 +140,19 @@ public class LisDockService {
                     }
                 }
             } else {
-                for (InspectionItem item : detail.getInspectionItems()) {
+                for (ExamDetailItem item : detail.getItems()) {
                     ItemResult results = model.clone();
-                    if (item.getITM_NAME().contains("甲肝")) {
-                        item.setITM_NAME("甲型肝炎抗体IGM");
-                    } else if (item.getITM_NAME().contains("戊肝")) {
-                        item.setITM_NAME("戊型肝炎抗体IGM");
-                    } else if (item.getITM_NAME().contains("核酸") || item.getITM_NAME().contains("新冠")
-                            || item.getITM_NAME().contains("新型冠状")) {
-                        item.setITM_NAME("新型冠状病毒感染性肺炎");
+                    if (item.getItmName().contains("甲肝")) {
+                        item.setItmName("甲型肝炎抗体IGM");
+                    } else if (item.getItmName().contains("戊肝")) {
+                        item.setItmName("戊型肝炎抗体IGM");
+                    } else if (item.getItmName().contains("核酸") || item.getItmName().contains("新冠")
+                            || item.getItmName().contains("新型冠状")) {
+                        item.setItmName("新型冠状病毒感染性肺炎");
                     }
-                    results.setItemName(item.getITM_NAME());
-                    results.setResult(item.getITM_STR_VALUE());
-                    results.setStatus(item.getITM_STR_VALUE().contains("阴性") ? "0" : "1");
+                    results.setItemName(item.getItmName());
+                    results.setResult(item.getItmStrValue());
+                    results.setStatus(item.getItmStrValue().contains("阴性") ? "0" : "1");
                     itemResults.add(results);
                 }
             }
@@ -167,10 +170,10 @@ public class LisDockService {
         return ResultVoUtil.success(map);
     }
 
-    private void fillResultItem(List<ItemResult> itemResults, ItemResult model, InspectionItem item) {
+    private void fillResultItem(List<ItemResult> itemResults, ItemResult model, ExamDetailItem item) {
         ItemResult xjxlj = model.clone();
         xjxlj.setItemName("细菌性痢疾");
-        if (!item.getITM_STR_VALUE().contains("未检出") && !item.getITM_STR_VALUE().contains("未见")) {
+        if (!item.getItmStrValue().contains("未检出") && !item.getItmStrValue().contains("未见")) {
             xjxlj.setResult("检出");
             xjxlj.setStatus("1");
         }

+ 3 - 2
src/main/java/thyyxxk/webserver/service/jianyanjiekou/JianYanJieKouService.java

@@ -9,6 +9,7 @@ import org.springframework.stereotype.Service;
 import thyyxxk.webserver.config.exception.BizException;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.entity.ResultVo;
+import thyyxxk.webserver.entity.examinations.inspections.consts.ResponseMode;
 import thyyxxk.webserver.entity.jianyanjiekou.QueryNormal;
 import thyyxxk.webserver.utils.ResultVoUtil;
 import thyyxxk.webserver.utils.StringUtil;
@@ -74,7 +75,7 @@ public class JianYanJieKouService {
     public ResultVo<JSONObject> getDetail(String reportId) {
         JSONObject js = new JSONObject();
         js.put("reportId", reportId);
-        js.put("responseMode", "Json");
+        js.put("responseMode", ResponseMode.Json);
         Res res = postHttp("/third/report/query/detail", js);
         if (res.getCode()) {
             return ResultVoUtil.success(JSONObject.parseObject(res.getData()));
@@ -85,7 +86,7 @@ public class JianYanJieKouService {
     public JSONObject getImage(String reportId) {
         JSONObject js = new JSONObject();
         js.put("reportId", reportId);
-        js.put("responseMode", "Json");
+        js.put("responseMode", ResponseMode.Json);
         Res res = postHttp("/third/report/query/pic", js);
         if (res.getCode()) {
             return JSONObject.parseObject(res.getData());