diff --git a/src/main/java/com/docus/server/AppRunBootstrap.java b/src/main/java/com/docus/server/AppRunBootstrap.java index b1e2b1b..3fa4302 100644 --- a/src/main/java/com/docus/server/AppRunBootstrap.java +++ b/src/main/java/com/docus/server/AppRunBootstrap.java @@ -1,16 +1,23 @@ package com.docus.server; +import com.docus.core.util.Func; +import com.docus.core.util.SpringUtils; +import com.docus.infrastructure.web.api.CommonResult; +import com.docus.server.api.HospitalSubmitNodeServiceApi; +import com.docus.server.api.dto.HospitalSubmitNodeLogAddDTO; +import com.docus.server.api.enums.HospitalSubmitNodeEnum; import lombok.extern.slf4j.Slf4j; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; import java.util.Properties; @Slf4j -//@EnableFeignClients(basePackages = ("com.feign")) +@EnableFeignClients(basePackages = {"com.docus"}) //@EnableHystrix @SpringBootApplication(scanBasePackages = {"com.docus"}) @MapperScan("com.docus.server.**.mapper") @@ -22,4 +29,17 @@ public class AppRunBootstrap { System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"); SpringApplication.run(AppRunBootstrap.class, args); } + + private static void test(){ + HospitalSubmitNodeServiceApi hospitalSubmitNodeServiceApi = SpringUtils.getBean(HospitalSubmitNodeServiceApi.class); + HospitalSubmitNodeLogAddDTO dto = new HospitalSubmitNodeLogAddDTO(); + dto.setPatientId("1008611"); + dto.setContent(new String[]{"豪哥躺进了icu。狗头.pdf"}); + + dto.setCreaterName("重症提交"); + dto.setCreater("重症提交"); + dto.setSubmitNodeEnum(HospitalSubmitNodeEnum.ICU); + CommonResult commonResult = hospitalSubmitNodeServiceApi.addLog(dto); + log.info(Func.toJson(commonResult)); + } } diff --git a/src/main/java/com/docus/server/api/HospitalSubmitNodeServiceApi.java b/src/main/java/com/docus/server/api/HospitalSubmitNodeServiceApi.java new file mode 100644 index 0000000..48bbf26 --- /dev/null +++ b/src/main/java/com/docus/server/api/HospitalSubmitNodeServiceApi.java @@ -0,0 +1,45 @@ +package com.docus.server.api; + +import com.docus.infrastructure.web.api.CommonResult; +import com.docus.server.api.dto.HospitalSubmitNodeLogAddDTO; +import com.docus.server.api.dto.HospitalSubmitNodeLogQrDTO; +import com.docus.server.api.vo.HospitalSubmitNodeLogVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import java.util.List; + +/** + * 医院提交节点服务api + * + * @author 文永斌 + * @date 2023/9/5 + */ +@Api(tags = "医院提交节点服务API") +@FeignClient(name = "submitNode", url = "${docus.url.medicalrecord}") +public interface HospitalSubmitNodeServiceApi { + String PREFIX = "/basic/submitNode"; + + /** + * 提交节点,添加日志 + * @param submitNodeLogAddDTO 提交参数对象 + * @return 操作结果 + */ + @ApiOperation("提交节点,添加日志") + @RequestMapping(value = PREFIX + "/log/add", method = RequestMethod.POST) + CommonResult addLog(@RequestBody HospitalSubmitNodeLogAddDTO submitNodeLogAddDTO); + + /** + * 提交节点日志列表查询 + * @param submitNodeLogQrDTO 查询参数 + * @return 日志列表 + */ + @ApiOperation("提交节点日志列表查询") + @RequestMapping(value = PREFIX + "/log/list", method = RequestMethod.POST) + CommonResult> listLogs(@RequestBody HospitalSubmitNodeLogQrDTO submitNodeLogQrDTO); + +} diff --git a/src/main/java/com/docus/server/api/dto/CompensateTasRequest.java b/src/main/java/com/docus/server/api/dto/CompensateTasRequest.java new file mode 100644 index 0000000..2bc124c --- /dev/null +++ b/src/main/java/com/docus/server/api/dto/CompensateTasRequest.java @@ -0,0 +1,43 @@ +package com.docus.server.api.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.util.List; + +/** + * 任务补偿参数 + * + * @author wyb + */ +@Data +@ApiModel("任务补偿下发参数") +public class CompensateTasRequest { + /** + * 病案主键 + */ + @ApiModelProperty(value = "病案主键",required = true) + @NotNull(message = "病案主键不能为空") + @Size(min = 1,message = "病案主键不能为空") + private List patientIds; + /** + * 采集器类型标识 + */ + @ApiModelProperty(value = "采集器id",required = true) + @NotNull(message = "采集采集器id不能为空") + @Size(min = 1,message = "采集采集器id不能为空") + private List collectorIds; + /** + * 队列优先级 + */ + @NotNull(message = "队列优先级不能为空") + @Min(value = 1,message = "队列优先级不能小于1") + @Max(value = 10,message = "队列优先级不能大于10") + @ApiModelProperty(value = "队列优先级",required = true) + private Integer priority; +} diff --git a/src/main/java/com/docus/server/api/dto/HospitalSubmitNodeLogAddDTO.java b/src/main/java/com/docus/server/api/dto/HospitalSubmitNodeLogAddDTO.java new file mode 100644 index 0000000..e3cdb75 --- /dev/null +++ b/src/main/java/com/docus/server/api/dto/HospitalSubmitNodeLogAddDTO.java @@ -0,0 +1,45 @@ +package com.docus.server.api.dto; + +import com.docus.server.api.enums.HospitalSubmitNodeEnum; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +/** + * 医院提交节点日志添加参数 + * + * @author 文永斌 + * @date 2023/9/5 + */ +@Data +@ApiModel("提交节点日志添加参数") +public class HospitalSubmitNodeLogAddDTO { + @NotBlank(message = "提交病案主键不能为空!") + @ApiModelProperty(value = "病案主键",required = true) + private String patientId; + + @NotNull(message = "提交内容不能为空!") + @Size(min = 1,message = "提交内容不能为空!") + @ApiModelProperty(value = "提交内容",required = true) + private String[] content; + + @NotNull(message = "提交节点不能为空!") + @ApiModelProperty(value = "提交节点",required = true) + private HospitalSubmitNodeEnum submitNodeEnum; + + /** + * 创建人 + */ + @ApiModelProperty("创建人") + private String creater; + + /** + * 创建人名称 + */ + @ApiModelProperty("创建人名称") + private String createrName; +} diff --git a/src/main/java/com/docus/server/api/dto/HospitalSubmitNodeLogQrDTO.java b/src/main/java/com/docus/server/api/dto/HospitalSubmitNodeLogQrDTO.java new file mode 100644 index 0000000..209c1cc --- /dev/null +++ b/src/main/java/com/docus/server/api/dto/HospitalSubmitNodeLogQrDTO.java @@ -0,0 +1,22 @@ +package com.docus.server.api.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * 医院提交节点日志查询添加参数 + * + * @author 文永斌 + * @date 2023/9/5 + */ +@Data +@ApiModel("提交节点日志查询参数") +public class HospitalSubmitNodeLogQrDTO { + @NotBlank(message = "提交病案主键不能为空!") + @ApiModelProperty(value = "病案主键",required = true) + private String patientId; + +} diff --git a/src/main/java/com/docus/server/api/enums/HospitalSubmitNodeEnum.java b/src/main/java/com/docus/server/api/enums/HospitalSubmitNodeEnum.java new file mode 100644 index 0000000..8e5989e --- /dev/null +++ b/src/main/java/com/docus/server/api/enums/HospitalSubmitNodeEnum.java @@ -0,0 +1,33 @@ +package com.docus.server.api.enums; + +/** + * 医院提交节点枚举 + * + * @author 文永斌 + * @date 2023/9/5 + */ +public enum HospitalSubmitNodeEnum { + /** + * 护理提交节点 + */ + NURSE("NURSE"), + /** + * 电子病历提交节点 + */ + EMR("EMR"), + /** + * 重症提交节点 + */ + ICU("ICU"); + /** + * 节点code + */ + String code; + + HospitalSubmitNodeEnum(String code) { + this.code = code; + } + public String code(){ + return code; + } +} diff --git a/src/main/java/com/docus/server/api/vo/HospitalSubmitNodeLogVO.java b/src/main/java/com/docus/server/api/vo/HospitalSubmitNodeLogVO.java new file mode 100644 index 0000000..264911d --- /dev/null +++ b/src/main/java/com/docus/server/api/vo/HospitalSubmitNodeLogVO.java @@ -0,0 +1,71 @@ +package com.docus.server.api.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 医院提交节点日志时间线视图对象 + * + * @author 文永斌 + * @date 2023/9/5 + */ +@Data +public class HospitalSubmitNodeLogVO { + private String date; + private List logs; + + + @Data + @ApiModel("医院提交节点日志视图对象") + public static class LogVO { + /** + * 病案主键 + */ + @ApiModelProperty("病案主键") + private String patientId; + + /** + * 节点代码 + */ + @ApiModelProperty("节点代码") + private String nodeCode; + + /** + * 节点名称 + */ + @ApiModelProperty("节点名称") + private String nodeName; + /** + * 年月日,冗余创建时间,进行分组 + */ + @ApiModelProperty("年月日,冗余创建时间,进行分组") + private String monthDate; + + /** + * 创建人 + */ + @ApiModelProperty("创建人") + private String creater; + + /** + * 创建人名称 + */ + @ApiModelProperty("创建人名称") + private String createrName; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + private String createTime; + + /** + * 日志内容 + */ + @ApiModelProperty("日志内容") + private String content; + } +} diff --git a/src/main/java/com/docus/server/report/webservice/impl/JsIcuReportHandler.java b/src/main/java/com/docus/server/report/webservice/impl/JsIcuReportHandler.java index 5a85f09..ba44425 100644 --- a/src/main/java/com/docus/server/report/webservice/impl/JsIcuReportHandler.java +++ b/src/main/java/com/docus/server/report/webservice/impl/JsIcuReportHandler.java @@ -1,6 +1,11 @@ package com.docus.server.report.webservice.impl; +import com.docus.core.util.Func; import com.docus.infrastructure.core.exception.BaseException; +import com.docus.server.api.HospitalSubmitNodeServiceApi; +import com.docus.server.api.dto.HospitalSubmitNodeLogAddDTO; +import com.docus.server.api.enums.HospitalSubmitNodeEnum; +import com.docus.server.collection.mapper.TBasicMapper; import com.docus.server.report.api.dto.ReportDto; import com.docus.server.report.service.ReportService; import com.docus.server.report.util.JSXMLResult; @@ -23,6 +28,10 @@ import javax.annotation.Resource; public class JsIcuReportHandler implements WebserviceReceiveServerHandler { @Resource private ReportService reportService; + @Resource + private TBasicMapper tBasicMapper; + @Resource + private HospitalSubmitNodeServiceApi hospitalSubmitNodeServiceApi; @Override public String handle(String receiveMessage) { @@ -35,6 +44,7 @@ public class JsIcuReportHandler implements WebserviceReceiveServerHandler { ReportDto reportDto = convert(xmlUtil); verifyReportDto(reportDto); reportService.report(reportDto); + saveSubmitNodeLog(reportDto); return JSXMLResult.success(msgId); } catch (BaseException baseException) { log.error(baseException.getMessage(), baseException); @@ -44,4 +54,23 @@ public class JsIcuReportHandler implements WebserviceReceiveServerHandler { return JSXMLResult.failed(msgId, "系统故障!"); } } + + private void saveSubmitNodeLog(ReportDto reportDto) { + try { + // 如果出现多条出错的情况,还是得保存收到的信息,人工干预处理 + String patientId = tBasicMapper.getPatientIdByInpatientNoAndAdminssTimes(reportDto.getInpatientNo(), reportDto.getAdmisstimes()); + if(Func.isNotBlank(patientId)){ + HospitalSubmitNodeLogAddDTO dto = new HospitalSubmitNodeLogAddDTO(); + dto.setPatientId(patientId); + dto.setContent(new String[]{reportDto.getFileTitle()}); + dto.setCreaterName("重症提交"); + dto.setCreater("重症提交"); + dto.setSubmitNodeEnum(HospitalSubmitNodeEnum.ICU); + hospitalSubmitNodeServiceApi.addLog(dto); + } + } catch (Exception ex) { + log.error("保存icu提交记录出错,病案号:"+reportDto.getInpatientNo()+" ,住院次数:"+reportDto.getAdmisstimes(), ex); + } + + } } diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml index 7f5e6f3..e6370ba 100644 --- a/src/main/resources/bootstrap.yml +++ b/src/main/resources/bootstrap.yml @@ -86,6 +86,8 @@ sdry: docus: + url: + medicalrecord: http://192.168.16.85:9102 dbtype: mysql user: # 用户默认密码