Przeglądaj źródła

feature: 检验检查列表与详情

wuyongyi 2 lat temu
rodzic
commit
677d5e5a3c

+ 9 - 0
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/models/vo/MedicalCardVo.java

@@ -2,6 +2,8 @@ package com.ywt.alipaympapi.models.vo;
 
 public class MedicalCardVo {
 
+    private int id;
+
     private String patientName;
 
     private String hisPatientId;
@@ -11,6 +13,13 @@ public class MedicalCardVo {
     private String cardNum;
 
 
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
 
     public String getPatientName() {
         return patientName;

+ 25 - 1
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/service/impl/InpatientServiceImpl.java

@@ -108,7 +108,7 @@ public class InpatientServiceImpl implements InpatientService {
                 data.setInpatientName(medicalCard.getPatientName());
                 data.setSex(medicalCard.getSex() == 1 ? "男" : "女");
                 Date date = DateUtil.stringToDate(medicalCard.getBirthday(), DateUtil.DADE_FROMAT_YMD);
-                data.setInpatientAge(IdCardUtil.getCurrentAgeCommon(date));
+                data.setInpatientAge(Integer.parseInt(getAgeFromMedicalCard(medicalCard)));
                 list.add(data);
             }
             return list;
@@ -419,6 +419,30 @@ public class InpatientServiceImpl implements InpatientService {
         return null;
     }
 
+    private String getAgeFromMedicalCard(MedicalCard card) {
+        int age = -1;
+        String idNo = card.getIdNo();
+        String birthday = card.getBirthday();
+        if (!StringHelper.isNullOrEmpty(idNo)) {
+            try {
+                age = IdCardUtil.getCurrentAge(idNo);
+            } catch (Exception e) {
+                log.error("IsvMedicCardServiceImpl#getAgeFromMedicalCard(idNo = {}): 无法获取年龄 {}", idNo, e.getMessage(), e);
+            }
+        } else if (!StringHelper.isNullOrEmpty(birthday)) {
+            try {
+                age = IdCardUtil.getCurrentAgeByBirthday(birthday, IdCardUtil.DATE_PATTERN2);
+            } catch (Exception e) {
+                log.error("IsvMedicCardServiceImpl#getAgeFromMedicalCard(birthday = {}): 无法获取年龄 {}", birthday, e.getMessage(), e);
+            }
+        }
+        // 不返回年龄为 "-1"
+        if (age < 0) {
+            return "";
+        }
+        return String.valueOf(age);
+    }
+
     @Override
     public InpatientDetailsResponseData inpatientDetails(InpatientDetailsRequest request) {
         return null;

+ 102 - 8
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/service/impl/IsvReportServiceImpl.java

@@ -1,9 +1,6 @@
 package com.ywt.alipaympapi.service.impl;
 
-import com.ywt.alipaympapi.core.utils.BizUtil;
-import com.ywt.alipaympapi.core.utils.Checker;
-import com.ywt.alipaympapi.core.utils.ContextHelper;
-import com.ywt.alipaympapi.core.utils.StringHelper;
+import com.ywt.alipaympapi.core.utils.*;
 import com.ywt.alipaympapi.models.vo.MedicalCardVo;
 import com.ywt.core.exception.AppMessageException;
 import com.ywt.gapi.Result;
@@ -75,8 +72,30 @@ public class IsvReportServiceImpl implements IsvReportService {
                     data.setReportDate(detail.getInspectionDate());
                     data.setReportImageDesc(detail.getInspectionResult());
 
+                } else {
+                    com.ywt.gapi.user.GetInspectionReportDetailRequest girdReq = com.ywt.gapi.user.GetInspectionReportDetailRequest.newBuilder()
+                            .setReportId(request.getRecordId())
+                            .setHospitalId(hospitalId)
+                            .build();
+                    com.ywt.gapi.user.GetInspectionReportDetailResponse girdResp = userServiceBlockingStub.getInspectionReportDetail(girdReq);
+                    if (girdResp.getResult().getCode() == ResultCode.SUCCEED) {
+                        List<String> reportItem = new ArrayList<>();
+                        com.ywt.gapi.user.InspectionReportDetail detail = girdResp.getReport();
+                        data.setRecordId(request.getRecordId());
+                        data.setUserName(card.getPatientName());
+                        data.setUserSex(card.getSex() == 1 ? "男" : "女");
+                        data.setCardNum(Checker.getStringValue(card.getCardNum()));
+                        data.setDepartmentName(detail.getDeptName());
+                        data.setApplyDoctorName(Checker.getStringValue(detail.getAppDocName()));
+                        reportItem.add(Checker.getStringValue(detail.getDiagnosis()));
+                        data.setDiagnosis(reportItem);
+                        data.setConfirmDoctorName(Checker.getStringValue(detail.getVerifyDocName()));
+                        data.setReportDate(DateUtil.convertTimestampToDateString(detail.getExaminationDate(), "yyyy年MM月dd日 HH:mm:ss"));
+                        data.setReportImageDesc(Checker.getStringValue(detail.getExamination()));
+                    }
+                    throw new AppMessageException("没有此报告");
                 }
-                throw new AppMessageException("没有此报告");
+
             }
             if ("检验报告".equals(type)) {
                 GetLaboratoryDetailRequest req = GetLaboratoryDetailRequest.newBuilder()
@@ -87,6 +106,7 @@ public class IsvReportServiceImpl implements IsvReportService {
                 if (res.getCode() == ResultCode.SUCCEED_VALUE) {
                     List<ReportItem> reportItemList = new ArrayList<>();
                     List<String> reportItem = new ArrayList<>();
+                    data.setDiagnosis(reportItem);
                     data.setUserName(card.getPatientName());
                     data.setItemName(res.getTitle());
                     data.setReportDate(res.getTime());
@@ -103,9 +123,35 @@ public class IsvReportServiceImpl implements IsvReportService {
                         reportItemList.add(r);
                     }
                     data.setReportItemList(reportItemList);
-
+                } else {
+                    com.ywt.gapi.user.GetLaboratoryReportDetailRequest glrdReq = com.ywt.gapi.user.GetLaboratoryReportDetailRequest.newBuilder()
+                            .setInspectionId(request.getRecordId())
+                            .setHospitalId(hospitalId)
+                            .build();
+                    com.ywt.gapi.user.GetLaboratoryReportDetailResponse glrdResp = userServiceBlockingStub.getLaboratoryReportDetail(glrdReq);
+                    if (glrdResp.getResult().getCode() == ResultCode.SUCCEED) {
+                        List<ReportItem> reportItemList = new ArrayList<>();
+                        List<String> reportItem = new ArrayList<>();
+                        data.setDiagnosis(reportItem);
+                        data.setUserName(card.getPatientName());
+                        data.setItemName(res.getTitle());
+                        data.setReportDate(res.getTime());
+                        data.setConfirmDoctorName(res.getDoctor());
+                        data.setCardNum(Checker.getStringValue(card.getCardNum()));
+                        data.setRecordId(request.getRecordId());
+                        for (com.ywt.gapi.user.LaboratoryReportDetail detail : glrdResp.getDetailList()) {
+                            ReportItem r = new ReportItem();
+                            r.setItemName(detail.getItemName());
+                            r.setPnFlag(Checker.getStringValue(detail.getResultFlag()));
+                            r.setReference(detail.getItemRef());
+                            r.setTxtVal(detail.getTestResult());
+                            r.setUnit(detail.getUnit());
+                            reportItemList.add(r);
+                        }
+                        data.setReportItemList(reportItemList);
+                    }
+                    throw new AppMessageException("没有此报告");
                 }
-                throw new AppMessageException("没有此报告");
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -124,6 +170,8 @@ public class IsvReportServiceImpl implements IsvReportService {
         int pageSize = request.getPageSize();
         String hisPatientId = request.getHisPatientId();
         int total = 0;
+        int totalT = 0;
+        int totalTh = 0;
         try {
             MedicalCardVo card = getCard(userId, hospitalId, hisPatientId);
 
@@ -141,6 +189,31 @@ public class IsvReportServiceImpl implements IsvReportService {
                         da.setRecordId(Checker.getStringValue(q.getReportId()));
                         da.setUserName(card.getPatientName());
                         da.setCardNum(card.getCardNum());
+                        da.setStatus(Checker.getStringValue(""));
+                        da.setDiagnosis(Checker.getStringValue(""));
+                        da.setType(Checker.getStringValue(""));
+                        da.setApplyDate(Checker.getStringValue(""));
+                        list.add(da);
+                    }
+                }
+                com.ywt.gapi.user.GetInspectionReportListRequest girlReq = com.ywt.gapi.user.GetInspectionReportListRequest.newBuilder()
+                        .setMedicalCardId(card.getId())
+                        .setUserId(userId)
+                        .setHospitalId(hospitalId)
+                        .build();
+                com.ywt.gapi.user.GetInspectionReportListResponse girlResp = userServiceBlockingStub.getInspectionReportList(girlReq);
+                if (girlResp.getResult().getCode() == ResultCode.SUCCEED) {
+                    totalT = girlResp.getReportList().size();
+                    for (com.ywt.gapi.user.InspectionReport report : girlResp.getReportList()) {
+                        QueryReportListResponseData da = new QueryReportListResponseData();
+                        da.setItemName(Checker.getStringValue(report.getReportTitle()));
+                        da.setRecordId(Checker.getStringValue(report.getReportId()));
+                        da.setUserName(card.getPatientName());
+                        da.setCardNum(card.getCardNum());
+                        da.setStatus(Checker.getStringValue(""));
+                        da.setDiagnosis(Checker.getStringValue(""));
+                        da.setType(Checker.getStringValue(""));
+                        da.setApplyDate(Checker.getStringValue(""));
                         list.add(da);
                     }
                 }
@@ -164,11 +237,31 @@ public class IsvReportServiceImpl implements IsvReportService {
                         list.add(da);
                     }
                 }
+                com.ywt.gapi.user.GetLaboratoryReportListRequest glrlReq = com.ywt.gapi.user.GetLaboratoryReportListRequest.newBuilder()
+                        .setMedicalCardId(card.getId())
+                        .setUserId(userId)
+                        .setHospitalId(hospitalId)
+                        .build();
+                com.ywt.gapi.user.GetLaboratoryReportListResponse glrlResp = userServiceBlockingStub.getLaboratoryReportList(glrlReq);
+                if (glrlResp.getResult().getCode() == ResultCode.SUCCEED) {
+                    totalT = glrlResp.getReportList().size();
+                    for (com.ywt.gapi.user.LaboratoryReport report : glrlResp.getReportList()) {
+                        QueryReportListResponseData da = new QueryReportListResponseData();
+                        da.setItemName(Checker.getStringValue(report.getInspectionName()));
+                        da.setDepartmentName(Checker.getStringValue(report.getDeptName()));
+                        da.setRecordId(Checker.getStringValue(report.getInpatientId()));
+                        da.setUserName(card.getPatientName());
+                        da.setCardNum(card.getCardNum());
+                        list.add(da);
+                    }
+                }
+
             }
         } catch (Exception e) {
             e.printStackTrace();
         }
-        Pagination pagination = new Pagination(pageIndex, pageSize, total);
+        totalTh = total + totalT;
+        Pagination pagination = new Pagination(pageIndex, pageSize, totalTh);
         PageVO<QueryReportListResponseData> res = new PageVO<>(pagination, list);
         return res;
     }
@@ -194,6 +287,7 @@ public class IsvReportServiceImpl implements IsvReportService {
         for (MedicalCard card : list) {
             if (hisPatientId.equals(card.getPatientId())) {
                 MedicalCardVo v = new MedicalCardVo();
+                v.setId(card.getCardId());
                 v.setSex(card.getSex());
                 v.setHisPatientId(card.getPatientId());
                 v.setPatientName(card.getPatientName());

+ 11 - 10
onemini-hospital-sdk/src/main/java/com/ywt/alipaympapi/controller/InpatientController.java

@@ -3,6 +3,7 @@ package com.ywt.alipaympapi.controller;
 import com.alibaba.fastjson.JSON;
 import com.ywt.core.exception.AppMessageException;
 import com.ywt.model.BaseResponse;
+import com.ywt.model.Code;
 import com.ywt.model.ResponseVO;
 import com.ywt.request.inpatient.DailyBillDetailsRequest;
 import com.ywt.request.inpatient.DailyBillRequest;
@@ -94,10 +95,10 @@ public class InpatientController {
         try {
             return ResponseVO.success(inpatientService.inpatientList(request));
         } catch (AppMessageException e) {
-            return ResponseVO.fail(BaseResponse.APP_ERROR, e.getMessage());
+            return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
         } catch (Exception e) {
             log.error("InpatientController#inpatient.list(request = {}):\n {}", request, e.getMessage(), e);
-            return ResponseVO.fail(BaseResponse.APP_EXCEPTION, e.getMessage());
+            return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
         }
     }
 
@@ -137,11 +138,11 @@ public class InpatientController {
             List<DailyBillResponseData> list = inpatientService.dailyBillList(request);
             return ResponseVO.success(list);
         } catch (AppMessageException e) {
-            return ResponseVO.fail(BaseResponse.APP_ERROR, e.getMessage());
+            return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
 
         } catch (Exception e) {
             log.error("InpatientController#list(request = {}):\n {}", request, e.getMessage(), e);
-            return ResponseVO.fail(BaseResponse.APP_EXCEPTION, e.getMessage());
+            return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
 
         }
     }
@@ -157,11 +158,11 @@ public class InpatientController {
         try {
             return ResponseVO.success(inpatientService.dailyBillDetail(request));
         } catch (AppMessageException e) {
-            return ResponseVO.fail(BaseResponse.APP_ERROR, e.getMessage());
+            return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
 
         } catch (Exception e) {
             log.error("InpatientController#dailyBill.details(request = {}):\n {}", request, e.getMessage(), e);
-            return ResponseVO.fail(BaseResponse.APP_EXCEPTION, e.getMessage());
+            return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
 
         }
 
@@ -202,10 +203,10 @@ public class InpatientController {
         try {
             return ResponseVO.success(inpatientService.queryTradeList(request));
         } catch (AppMessageException e) {
-            return ResponseVO.fail(BaseResponse.APP_ERROR, e.getMessage());
+            return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
         } catch (Exception e) {
             log.error("InpatientController#deposit.list(request = {}):\n {}", request, e.getMessage(), e);
-            return ResponseVO.fail(BaseResponse.APP_EXCEPTION, e.getMessage());
+            return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
         }
     }
 
@@ -221,10 +222,10 @@ public class InpatientController {
 
            return ResponseVO.success(inpatientService.queryTradeDetails(request));
        }catch (AppMessageException e) {
-           return ResponseVO.fail(BaseResponse.APP_ERROR, e.getMessage());
+           return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
        } catch (Exception e) {
            log.error("InpatientController#deposit.details\"(request = {}):\n {}", request, e.getMessage(), e);
-           return ResponseVO.fail(BaseResponse.APP_EXCEPTION, e.getMessage());
+           return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
        }
 
     }