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

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

@ -16,7 +16,7 @@
</component>
<component name="JavacSettings">
<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>
</component>
</project>

@ -1,10 +1,13 @@
package com.docus.demo.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.docus.demo.dto.LianZhongUploadInfo;
import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.dto.SyncFileDto;
import com.docus.demo.dto.SyncLabReportDto;
import com.docus.demo.dto.UploadJpgFileParam;
import com.docus.demo.entity.CommonResult;
import com.docus.demo.facade.ISyncBasicDataService;
@ -14,10 +17,17 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
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 java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.Collections;
import java.util.List;
@ -65,6 +75,7 @@ public class SyncBasicDataController {
}
}
@ApiOperation("省厅-同步单个患者基础数据")
@GetMapping("/syncSingleBasicData")
public CommonResult<?> syncSingleBasicData(@RequestParam(name = "disDate") String disDate, @RequestParam(name = "inpatientNo") String inpatientNo) {
@ -122,6 +133,61 @@ public class SyncBasicDataController {
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("联众-同步基础数据")
@PostMapping("/syncLzBasicData")
public CommonResult<?> syncLzBasicData(@RequestBody SyncBasicDataDto syncBasicDataDto) {
@ -198,9 +264,6 @@ public class SyncBasicDataController {
}
@ApiOperation("根据 病案号、姓名、出院日期、住院次数 进行筛选数据保留一条")
@GetMapping("/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;
import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.dto.SyncLabReportDto;
import com.docus.demo.entity.CommonResult;
import java.io.IOException;
public interface IWebService {
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.http.webservice.SoapClient;
import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.dto.SyncLabReportDto;
import com.docus.demo.entity.CommonResult;
import com.docus.demo.entity.PatientListResult;
import com.docus.demo.entity.PatientReportResult;
@ -23,6 +24,7 @@ import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -46,14 +48,13 @@ public class WebServiceImpl implements IWebService {
@Override
public CommonResult<?> syncInspection(SyncBasicDataDto syncBasicDataDto) {
try {
//页码
int current;
//每页1000条数据
int limit = syncBasicDataDto.getLimit();
String StartDate = "2018-01-01 00:00:00";
String EndDate = "2025-01-01 00:00:00";
for (current = 1; ; current++) {
//查询基础数据
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) {
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());
log.info("旧数据" + oldScanAssortList.size());
if (oldScanAssortList.size() > 0) {
log.info("跳过同步" + tbasic.getInpatientNo() + " " + tbasic.getAdmissTimes());
continue;
return;
}
String pNo = tbasic.getInpatientNo();
String times = tbasic.getAdmissTimes().toString();
// String StartDate = sdf.format(tbasic.getAdmissDate());
// 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();
//获取所有的报告列表
PatientListResult patientListResult = getCommonResult(pNo, times, StartDate, EndDate);
PatientListResult patientListResult = getCommonResult(pNo, times, startDate, endDate);
// log.info("返回结果"+patientListResult);
if (patientListResult == null) {
log.error(pNo + " " + times + "调用失败");
continue;
return;
}
List<ScanAssort> scanAssortList = new ArrayList<>();
@ -143,17 +175,6 @@ public class WebServiceImpl implements IWebService {
log.info("写入结束" + scanAssortList.size());
}
}
log.info("业务结束");
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
return CommonResult.success("同步检验数据成功");
}
private PatientReportResult getReportResult(String repID) {
String paramMap =

Loading…
Cancel
Save