feat: 广州市一检验报告接口添加

lianzhong-receive
wyb 3 months ago
parent 56f6a984a1
commit 79ef689b6e

@ -16,7 +16,7 @@
</component> </component>
<component name="JavacSettings"> <component name="JavacSettings">
<option name="ADDITIONAL_OPTIONS_OVERRIDE"> <option name="ADDITIONAL_OPTIONS_OVERRIDE">
<module name="jp2demo" options="-parameters -extdirs C:\my\jiashi\project\jp2demo/lib" /> <module name="jp2demo" options="-parameters -extdirs F:\xiamen-jiashi\code\jp2demo/lib" />
</option> </option>
</component> </component>
</project> </project>

@ -1,10 +1,13 @@
package com.docus.demo.controller; package com.docus.demo.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.docus.demo.dto.LianZhongUploadInfo; import com.docus.demo.dto.LianZhongUploadInfo;
import com.docus.demo.dto.SyncBasicDataDto; import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.dto.SyncFileDto; import com.docus.demo.dto.SyncFileDto;
import com.docus.demo.dto.SyncLabReportDto;
import com.docus.demo.dto.UploadJpgFileParam; import com.docus.demo.dto.UploadJpgFileParam;
import com.docus.demo.entity.CommonResult; import com.docus.demo.entity.CommonResult;
import com.docus.demo.facade.ISyncBasicDataService; import com.docus.demo.facade.ISyncBasicDataService;
@ -14,10 +17,17 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters; import java.time.temporal.TemporalAdjusters;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@ -65,6 +75,7 @@ public class SyncBasicDataController {
} }
} }
@ApiOperation("省厅-同步单个患者基础数据") @ApiOperation("省厅-同步单个患者基础数据")
@GetMapping("/syncSingleBasicData") @GetMapping("/syncSingleBasicData")
public CommonResult<?> syncSingleBasicData(@RequestParam(name = "disDate") String disDate, @RequestParam(name = "inpatientNo") String inpatientNo) { public CommonResult<?> syncSingleBasicData(@RequestParam(name = "disDate") String disDate, @RequestParam(name = "inpatientNo") String inpatientNo) {
@ -122,6 +133,61 @@ public class SyncBasicDataController {
return webService.syncInspection(syncBasicDataDto); return webService.syncInspection(syncBasicDataDto);
} }
@ApiOperation("同步检验图片数据V2")
@PostMapping("/syncLabReport")
public CommonResult<?> syncLabReport(@RequestBody SyncLabReportDto syncLabReportDto) {
try {
validateAndSet(syncLabReportDto);
webService.syncLabReport(syncLabReportDto);
return CommonResult.success("同步检验数据成功");
} catch (Exception ex) {
log.error("同步检验图片数据,出错了," + ex.getMessage(), ex);
return CommonResult.failed("同步检验数据出错," + ex.getMessage());
}
}
private void validateAndSet(SyncLabReportDto syncLabReportDto) {
List<SyncLabReportDto.SyncLabReportBasicDto> basicDtoList = syncLabReportDto.getBasicDtoList();
if (CollUtil.isEmpty(basicDtoList)) {
throw new RuntimeException("患者基础数据为空!");
}
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
for (SyncLabReportDto.SyncLabReportBasicDto basicDto : basicDtoList) {
if (StrUtil.isBlank(basicDto.getInpatientNo()) || StrUtil.isBlank(basicDto.getDisDate())) {
throw new RuntimeException("患者基础数据病案号或出院日期为空!");
}
LocalDate.parse(basicDto.getDisDate(), dateTimeFormatter);
}
final String startDefault = "2018-01-01";
final String endDefault = LocalDate.now().toString() ;
String startDate = syncLabReportDto.getStartDate();
String endDate = syncLabReportDto.getEndDate();
if (StrUtil.isBlank(startDate)) {
startDate = startDefault;
}
if (StrUtil.isBlank(endDate)) {
endDate = endDefault;
}
LocalDate startLocalDate = LocalDate.parse(startDate, dateTimeFormatter);
LocalDate endLocalDate = LocalDate.parse(endDate, dateTimeFormatter);
if (startLocalDate.isAfter(endLocalDate)) {
throw new RuntimeException("三方查询接口开始时间不合法!");
}
syncLabReportDto.setStartDate(startLocalDate + " 00:00:00");
syncLabReportDto.setEndDate(endLocalDate + " 23:59:59");
}
@ApiOperation("联众-同步基础数据") @ApiOperation("联众-同步基础数据")
@PostMapping("/syncLzBasicData") @PostMapping("/syncLzBasicData")
public CommonResult<?> syncLzBasicData(@RequestBody SyncBasicDataDto syncBasicDataDto) { public CommonResult<?> syncLzBasicData(@RequestBody SyncBasicDataDto syncBasicDataDto) {
@ -198,9 +264,6 @@ public class SyncBasicDataController {
} }
@ApiOperation("根据 病案号、姓名、出院日期、住院次数 进行筛选数据保留一条") @ApiOperation("根据 病案号、姓名、出院日期、住院次数 进行筛选数据保留一条")
@GetMapping("/choose") @GetMapping("/choose")
public CommonResult<?> choose() { public CommonResult<?> choose() {

@ -0,0 +1,32 @@
package com.docus.demo.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author YongBin Wen
* @date 2025/4/16 0016 17:05
*/
@ApiModel("检验报告同步参数")
@Data
public class SyncLabReportDto {
@ApiModelProperty("三方查询接口开始时间,接口格式为 yyyy-MM-dd后端转带时分秒格式为空默认为 2018-01-01 00:00:00")
private String startDate;
@ApiModelProperty("三方查询接口开始时间,接口格式为 yyyy-MM-dd后端转带时分秒格式为空默认为 接口调用时间")
private String endDate;
@ApiModelProperty("患者基础数据")
private List<SyncLabReportBasicDto> basicDtoList;
@Data
@ApiModel("检验报告同步患者基础数据参数")
public static class SyncLabReportBasicDto {
@ApiModelProperty("病案号")
private String inpatientNo;
@ApiModelProperty("出院日期,格式为 yyyy-MM-dd")
private String disDate;
}
}

@ -1,12 +1,13 @@
package com.docus.demo.facade; package com.docus.demo.facade;
import com.docus.demo.dto.SyncBasicDataDto; import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.dto.SyncLabReportDto;
import com.docus.demo.entity.CommonResult; import com.docus.demo.entity.CommonResult;
import java.io.IOException;
public interface IWebService { public interface IWebService {
CommonResult<?> syncInspection(SyncBasicDataDto syncBasicDataDto); CommonResult<?> syncInspection(SyncBasicDataDto syncBasicDataDto);
void syncLabReport(SyncLabReportDto syncLabReportDto);
} }

@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.XmlUtil; import cn.hutool.core.util.XmlUtil;
import cn.hutool.http.webservice.SoapClient; import cn.hutool.http.webservice.SoapClient;
import com.docus.demo.dto.SyncBasicDataDto; import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.dto.SyncLabReportDto;
import com.docus.demo.entity.CommonResult; import com.docus.demo.entity.CommonResult;
import com.docus.demo.entity.PatientListResult; import com.docus.demo.entity.PatientListResult;
import com.docus.demo.entity.PatientReportResult; import com.docus.demo.entity.PatientReportResult;
@ -23,6 +24,7 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -46,14 +48,13 @@ public class WebServiceImpl implements IWebService {
@Override @Override
public CommonResult<?> syncInspection(SyncBasicDataDto syncBasicDataDto) { public CommonResult<?> syncInspection(SyncBasicDataDto syncBasicDataDto) {
try { try {
//页码 //页码
int current; int current;
//每页1000条数据 //每页1000条数据
int limit = syncBasicDataDto.getLimit(); int limit = syncBasicDataDto.getLimit();
String StartDate = "2018-01-01 00:00:00";
String EndDate = "2025-01-01 00:00:00";
for (current = 1; ; current++) { for (current = 1; ; current++) {
//查询基础数据 //查询基础数据
List<Tbasic> tbasicList = basicMapper.getOldBasicListLimit((current - 1) * limit, limit, syncBasicDataDto.getInpatientNoList(), syncBasicDataDto); List<Tbasic> tbasicList = basicMapper.getOldBasicListLimit((current - 1) * limit, limit, syncBasicDataDto.getInpatientNoList(), syncBasicDataDto);
@ -61,35 +62,66 @@ public class WebServiceImpl implements IWebService {
if (tbasicList.size() == 0) { if (tbasicList.size() == 0) {
break; break;
} }
for (int j = 0; j < tbasicList.size(); j++) {
Tbasic tbasic = tbasicList.get(j);
syncInspection(tbasic, StartDate, EndDate);
}
log.info("业务结束");
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
return CommonResult.success("同步检验数据成功");
}
for (int j = 0; j < tbasicList.size(); j++) { @Override
public void syncLabReport(SyncLabReportDto syncLabReportDto) {
//页码
int offset = 0;
//每页1000条数据
int limit = 1000;
String startDate = syncLabReportDto.getStartDate();
String endDate = syncLabReportDto.getEndDate();
List<SyncLabReportDto.SyncLabReportBasicDto> basicDtoList = syncLabReportDto.getBasicDtoList();
for (SyncLabReportDto.SyncLabReportBasicDto syncLabReportBasicDto : basicDtoList) {
String disDate = syncLabReportBasicDto.getDisDate();
String inpatientNo = syncLabReportBasicDto.getInpatientNo();
SyncBasicDataDto syncBasicDataDto = new SyncBasicDataDto();
syncBasicDataDto.setStartDate(disDate + " 00:00:00");
syncBasicDataDto.setEndDate(disDate + " 23:59:59");
List<Tbasic> tbasicList = basicMapper.getOldBasicListLimit(offset, limit, Collections.singletonList(inpatientNo), syncBasicDataDto);
for (Tbasic tbasic : tbasicList) {
syncInspection(tbasic, startDate, endDate);
}
}
}
Tbasic tbasic = tbasicList.get(j);
log.info("正在同步" + tbasic.getInpatientNo() + " " + tbasic.getAdmissTimes());
public void syncInspection(Tbasic tbasic, String startDate, String endDate) {
log.info("正在同步" + tbasic.getInpatientNo() + " " + tbasic.getAdmissTimes());
List<ScanAssort> oldScanAssortList = scanAssortMapper.getListByAssortId("A5A7AA6796D1715A2F1E35699C706C84", tbasic.getPatientId()); List<ScanAssort> oldScanAssortList = scanAssortMapper.getListByAssortId("A5A7AA6796D1715A2F1E35699C706C84", tbasic.getPatientId());
log.info("旧数据" + oldScanAssortList.size()); log.info("旧数据" + oldScanAssortList.size());
if (oldScanAssortList.size() > 0) { if (oldScanAssortList.size() > 0) {
log.info("跳过同步" + tbasic.getInpatientNo() + " " + tbasic.getAdmissTimes()); log.info("跳过同步" + tbasic.getInpatientNo() + " " + tbasic.getAdmissTimes());
continue; return;
} }
String pNo = tbasic.getInpatientNo(); String pNo = tbasic.getInpatientNo();
String times = tbasic.getAdmissTimes().toString(); String times = tbasic.getAdmissTimes().toString();
// String StartDate = sdf.format(tbasic.getAdmissDate()); // String StartDate = sdf.format(tbasic.getAdmissDate());
// String EndDate = sdf.format(tbasic.getDisDate()); // String EndDate = sdf.format(tbasic.getDisDate());
String StartDate = "2018-01-01 00:00:00";
String EndDate = "2025-01-01 00:00:00";
String patientId = tbasic.getPatientId(); String patientId = tbasic.getPatientId();
//获取所有的报告列表 //获取所有的报告列表
PatientListResult patientListResult = getCommonResult(pNo, times, StartDate, EndDate); PatientListResult patientListResult = getCommonResult(pNo, times, startDate, endDate);
// log.info("返回结果"+patientListResult); // log.info("返回结果"+patientListResult);
if (patientListResult == null) { if (patientListResult == null) {
log.error(pNo + " " + times + "调用失败"); log.error(pNo + " " + times + "调用失败");
continue; return;
} }
List<ScanAssort> scanAssortList = new ArrayList<>(); List<ScanAssort> scanAssortList = new ArrayList<>();
@ -143,17 +175,6 @@ public class WebServiceImpl implements IWebService {
log.info("写入结束" + scanAssortList.size()); log.info("写入结束" + scanAssortList.size());
} }
} }
log.info("业务结束");
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
return CommonResult.success("同步检验数据成功");
}
private PatientReportResult getReportResult(String repID) { private PatientReportResult getReportResult(String repID) {
String paramMap = String paramMap =

Loading…
Cancel
Save