|
@@ -1,9 +1,6 @@
|
|
package com.ywt.alipaympapi.service.impl;
|
|
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.alipaympapi.models.vo.MedicalCardVo;
|
|
import com.ywt.core.exception.AppMessageException;
|
|
import com.ywt.core.exception.AppMessageException;
|
|
import com.ywt.gapi.Result;
|
|
import com.ywt.gapi.Result;
|
|
@@ -22,12 +19,14 @@ import com.ywt.response.report.QueryReportDetailResponseData;
|
|
import com.ywt.response.report.QueryReportListResponseData;
|
|
import com.ywt.response.report.QueryReportListResponseData;
|
|
import com.ywt.alipaympapi.service.IsvReportService;
|
|
import com.ywt.alipaympapi.service.IsvReportService;
|
|
import com.ywt.response.report.ReportItem;
|
|
import com.ywt.response.report.ReportItem;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
|
|
+@Slf4j
|
|
@Service
|
|
@Service
|
|
public class IsvReportServiceImpl implements IsvReportService {
|
|
public class IsvReportServiceImpl implements IsvReportService {
|
|
|
|
|
|
@@ -38,19 +37,19 @@ public class IsvReportServiceImpl implements IsvReportService {
|
|
private TaiheServiceGrpc.TaiheServiceBlockingStub taiheServiceBlockingStub;
|
|
private TaiheServiceGrpc.TaiheServiceBlockingStub taiheServiceBlockingStub;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public QueryReportDetailResponseData queryReportDetail(QueryReportDetailRequest request) throws AppMessageException {
|
|
|
|
|
|
+ public QueryReportDetailResponseData queryReportDetail(QueryReportDetailRequest request) throws Exception{
|
|
QueryReportDetailResponseData data = new QueryReportDetailResponseData();
|
|
QueryReportDetailResponseData data = new QueryReportDetailResponseData();
|
|
if (StringHelper.isNullOrWhiteSpace(request.getRecordId())) {
|
|
if (StringHelper.isNullOrWhiteSpace(request.getRecordId())) {
|
|
throw new AppMessageException("没有检验检查报告Id");
|
|
throw new AppMessageException("没有检验检查报告Id");
|
|
}
|
|
}
|
|
|
|
|
|
- if (StringHelper.isNullOrWhiteSpace(request.getRecordId())) {
|
|
|
|
- throw new AppMessageException("没有报告类型");
|
|
|
|
- }
|
|
|
|
- try {
|
|
|
|
- int userId = ContextHelper.getCurrentUserIdWrapped();
|
|
|
|
|
|
+ String userIdStr = request.getUserId();
|
|
|
|
+ int userId = Integer.parseInt(userIdStr);
|
|
int hospitalId = BizUtil.getCurrentHospitalId();
|
|
int hospitalId = BizUtil.getCurrentHospitalId();
|
|
- String hisPatientId = request.getHisPatientId();
|
|
|
|
|
|
+ if(Checker.isNone(request.getHisPatientId())){
|
|
|
|
+ throw new AppMessageException("hisPatientId不能为空");
|
|
|
|
+ }
|
|
|
|
+ String hisPatientId = Checker.getStringValue(request.getHisPatientId());
|
|
MedicalCardVo card = getCard(userId, hospitalId, hisPatientId);
|
|
MedicalCardVo card = getCard(userId, hospitalId, hisPatientId);
|
|
String type = request.getType();
|
|
String type = request.getType();
|
|
if ("检查报告".equals(type)) {
|
|
if ("检查报告".equals(type)) {
|
|
@@ -64,8 +63,9 @@ public class IsvReportServiceImpl implements IsvReportService {
|
|
List<String> reportItem = new ArrayList<>();
|
|
List<String> reportItem = new ArrayList<>();
|
|
InspectionDetail detail = res.getDetail();
|
|
InspectionDetail detail = res.getDetail();
|
|
data.setRecordId(request.getRecordId());
|
|
data.setRecordId(request.getRecordId());
|
|
- data.setUserName(card.getPatientName());
|
|
|
|
- data.setUserSex(card.getSex() == 1 ? "男" : "女");
|
|
|
|
|
|
+ data.setUserName(Checker.getStringValue(card.getPatientName()));
|
|
|
|
+ data.setUserSex(card.getSex() == 1 ? "男": card.getSex() == 2 ? "女": "");
|
|
|
|
+ data.setUserAge(Checker.getStringValue(card.getAge()));
|
|
data.setCardNum(Checker.getStringValue(card.getCardNum()));
|
|
data.setCardNum(Checker.getStringValue(card.getCardNum()));
|
|
data.setDepartmentName(detail.getDeptName());
|
|
data.setDepartmentName(detail.getDeptName());
|
|
data.setApplyDoctorName(detail.getDoctorName());
|
|
data.setApplyDoctorName(detail.getDoctorName());
|
|
@@ -74,9 +74,34 @@ public class IsvReportServiceImpl implements IsvReportService {
|
|
data.setConfirmDoctorName(detail.getInspectionDoctor());
|
|
data.setConfirmDoctorName(detail.getInspectionDoctor());
|
|
data.setReportDate(detail.getInspectionDate());
|
|
data.setReportDate(detail.getInspectionDate());
|
|
data.setReportImageDesc(detail.getInspectionResult());
|
|
data.setReportImageDesc(detail.getInspectionResult());
|
|
|
|
+ return data;
|
|
|
|
|
|
|
|
+ } 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 ? "男": card.getSex() == 2 ? "女": "");
|
|
|
|
+ data.setUserAge(Checker.getStringValue(card.getAge()));
|
|
|
|
+ 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()));
|
|
|
|
+ return data;
|
|
|
|
+ }
|
|
|
|
+ throw new AppMessageException("没有此报告详情");
|
|
}
|
|
}
|
|
- throw new AppMessageException("没有此报告");
|
|
|
|
|
|
+
|
|
}
|
|
}
|
|
if ("检验报告".equals(type)) {
|
|
if ("检验报告".equals(type)) {
|
|
GetLaboratoryDetailRequest req = GetLaboratoryDetailRequest.newBuilder()
|
|
GetLaboratoryDetailRequest req = GetLaboratoryDetailRequest.newBuilder()
|
|
@@ -87,7 +112,10 @@ public class IsvReportServiceImpl implements IsvReportService {
|
|
if (res.getCode() == ResultCode.SUCCEED_VALUE) {
|
|
if (res.getCode() == ResultCode.SUCCEED_VALUE) {
|
|
List<ReportItem> reportItemList = new ArrayList<>();
|
|
List<ReportItem> reportItemList = new ArrayList<>();
|
|
List<String> reportItem = new ArrayList<>();
|
|
List<String> reportItem = new ArrayList<>();
|
|
|
|
+ data.setDiagnosis(reportItem);
|
|
data.setUserName(card.getPatientName());
|
|
data.setUserName(card.getPatientName());
|
|
|
|
+ data.setUserSex(card.getSex() == 1 ? "男": card.getSex() == 2 ? "女": "");
|
|
|
|
+ data.setUserAge(Checker.getStringValue(card.getAge()));
|
|
data.setItemName(res.getTitle());
|
|
data.setItemName(res.getTitle());
|
|
data.setReportDate(res.getTime());
|
|
data.setReportDate(res.getTime());
|
|
data.setConfirmDoctorName(res.getDoctor());
|
|
data.setConfirmDoctorName(res.getDoctor());
|
|
@@ -103,28 +131,63 @@ public class IsvReportServiceImpl implements IsvReportService {
|
|
reportItemList.add(r);
|
|
reportItemList.add(r);
|
|
}
|
|
}
|
|
data.setReportItemList(reportItemList);
|
|
data.setReportItemList(reportItemList);
|
|
-
|
|
|
|
|
|
+ return data;
|
|
|
|
+ } 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(Checker.getStringValue(card.getPatientName()));
|
|
|
|
+ data.setUserSex(card.getSex() == 1 ? "男": card.getSex() == 2 ? "女": "");
|
|
|
|
+ data.setUserAge(Checker.getStringValue(card.getAge()));
|
|
|
|
+ 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(Checker.getStringValue(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);
|
|
|
|
+ return data;
|
|
|
|
+ }
|
|
|
|
+ throw new AppMessageException("没有此报告");
|
|
}
|
|
}
|
|
- throw new AppMessageException("没有此报告");
|
|
|
|
}
|
|
}
|
|
- } catch (Exception e) {
|
|
|
|
- e.printStackTrace();
|
|
|
|
- }
|
|
|
|
return data;
|
|
return data;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public PageVO<QueryReportListResponseData> queryReportList(QueryReportListRequest request) {
|
|
|
|
|
|
+ public PageVO<QueryReportListResponseData> queryReportList(QueryReportListRequest request) throws Exception {
|
|
List<QueryReportListResponseData> list = new ArrayList<>();
|
|
List<QueryReportListResponseData> list = new ArrayList<>();
|
|
- int userId = ContextHelper.getCurrentUserIdWrapped();
|
|
|
|
|
|
+ String userIdStr = request.getUserId();
|
|
|
|
+ int userId = Integer.parseInt(userIdStr);
|
|
// 报告类型:分为"检查报告"、"检验报告"两种
|
|
// 报告类型:分为"检查报告"、"检验报告"两种
|
|
|
|
+ if(Checker.isNone(request.getType())){
|
|
|
|
+ throw new AppMessageException("报告类型不能为空");
|
|
|
|
+ }
|
|
String type = request.getType();
|
|
String type = request.getType();
|
|
int hospitalId = BizUtil.getCurrentHospitalId();
|
|
int hospitalId = BizUtil.getCurrentHospitalId();
|
|
int pageIndex = request.getPageIndex();
|
|
int pageIndex = request.getPageIndex();
|
|
int pageSize = request.getPageSize();
|
|
int pageSize = request.getPageSize();
|
|
- String hisPatientId = request.getHisPatientId();
|
|
|
|
|
|
+ if(Checker.isNone(request.getHisPatientId())){
|
|
|
|
+ throw new AppMessageException("hisPatientId不能为空");
|
|
|
|
+ }
|
|
|
|
+ String hisPatientId = Checker.getStringValue(request.getHisPatientId());
|
|
int total = 0;
|
|
int total = 0;
|
|
- try {
|
|
|
|
|
|
+ int totalT = 0;
|
|
|
|
+ int totalTh = 0;
|
|
MedicalCardVo card = getCard(userId, hospitalId, hisPatientId);
|
|
MedicalCardVo card = getCard(userId, hospitalId, hisPatientId);
|
|
|
|
|
|
if ("检查报告".equals(type)) {
|
|
if ("检查报告".equals(type)) {
|
|
@@ -141,6 +204,33 @@ public class IsvReportServiceImpl implements IsvReportService {
|
|
da.setRecordId(Checker.getStringValue(q.getReportId()));
|
|
da.setRecordId(Checker.getStringValue(q.getReportId()));
|
|
da.setUserName(card.getPatientName());
|
|
da.setUserName(card.getPatientName());
|
|
da.setCardNum(card.getCardNum());
|
|
da.setCardNum(card.getCardNum());
|
|
|
|
+ da.setStatus(Checker.getStringValue(""));
|
|
|
|
+ da.setDiagnosis(Checker.getStringValue(""));
|
|
|
|
+ da.setType(Checker.getStringValue(request.getType()));
|
|
|
|
+ da.setApplyDate(Checker.getStringValue(""));
|
|
|
|
+ da.setHisPatientId(hisPatientId);
|
|
|
|
+ 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(request.getType()));
|
|
|
|
+ da.setApplyDate(Checker.getStringValue(""));
|
|
|
|
+ da.setHisPatientId(hisPatientId);
|
|
list.add(da);
|
|
list.add(da);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -161,14 +251,35 @@ public class IsvReportServiceImpl implements IsvReportService {
|
|
da.setRecordId(Checker.getStringValue(q.getReportId()));
|
|
da.setRecordId(Checker.getStringValue(q.getReportId()));
|
|
da.setUserName(card.getPatientName());
|
|
da.setUserName(card.getPatientName());
|
|
da.setCardNum(card.getCardNum());
|
|
da.setCardNum(card.getCardNum());
|
|
|
|
+ da.setType(Checker.getStringValue(request.getType()));
|
|
|
|
+ da.setHisPatientId(hisPatientId);
|
|
|
|
+ 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.getInspectionId()));
|
|
|
|
+ da.setUserName(card.getPatientName());
|
|
|
|
+ da.setCardNum(card.getCardNum());
|
|
|
|
+ da.setType(Checker.getStringValue(request.getType()));
|
|
|
|
+ da.setHisPatientId(hisPatientId);
|
|
list.add(da);
|
|
list.add(da);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
}
|
|
}
|
|
- } catch (Exception e) {
|
|
|
|
- e.printStackTrace();
|
|
|
|
- }
|
|
|
|
- Pagination pagination = new Pagination(pageIndex, pageSize, total);
|
|
|
|
|
|
+ totalTh = total + totalT;
|
|
|
|
+ Pagination pagination = new Pagination(pageIndex, totalTh, totalTh);
|
|
PageVO<QueryReportListResponseData> res = new PageVO<>(pagination, list);
|
|
PageVO<QueryReportListResponseData> res = new PageVO<>(pagination, list);
|
|
return res;
|
|
return res;
|
|
}
|
|
}
|
|
@@ -194,14 +305,39 @@ public class IsvReportServiceImpl implements IsvReportService {
|
|
for (MedicalCard card : list) {
|
|
for (MedicalCard card : list) {
|
|
if (hisPatientId.equals(card.getPatientId())) {
|
|
if (hisPatientId.equals(card.getPatientId())) {
|
|
MedicalCardVo v = new MedicalCardVo();
|
|
MedicalCardVo v = new MedicalCardVo();
|
|
|
|
+ v.setId(card.getCardId());
|
|
v.setSex(card.getSex());
|
|
v.setSex(card.getSex());
|
|
v.setHisPatientId(card.getPatientId());
|
|
v.setHisPatientId(card.getPatientId());
|
|
v.setPatientName(card.getPatientName());
|
|
v.setPatientName(card.getPatientName());
|
|
v.setCardNum(card.getCardNo());
|
|
v.setCardNum(card.getCardNo());
|
|
|
|
+ v.setAge(getAgeFromMedicalCard(card));
|
|
return v;
|
|
return v;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
throw new AppMessageException("没有此报告");
|
|
throw new AppMessageException("没有此报告");
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ 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);
|
|
|
|
+ }
|
|
}
|
|
}
|