|
|
@@ -0,0 +1,94 @@
|
|
|
+package thyyxxk.webserver.service.autocreateemr;
|
|
|
+
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import thyyxxk.webserver.config.exception.BizException;
|
|
|
+import thyyxxk.webserver.config.exception.ExceptionEnum;
|
|
|
+import thyyxxk.webserver.dao.his.zhuyuanyisheng.emr.EmrPatientDao;
|
|
|
+import thyyxxk.webserver.entity.ResultVo;
|
|
|
+import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrPatientData;
|
|
|
+import thyyxxk.webserver.service.externalhttp.emr.EmrEditor;
|
|
|
+import thyyxxk.webserver.utils.ListUtil;
|
|
|
+import thyyxxk.webserver.utils.R;
|
|
|
+import thyyxxk.webserver.utils.SnowFlakeId;
|
|
|
+import thyyxxk.webserver.utils.TokenUtil;
|
|
|
+
|
|
|
+import java.util.Date;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+@RequiredArgsConstructor
|
|
|
+public class AutoCreateEmrServer {
|
|
|
+ private final Map<String, AutoCreateEmr> autoCreateEmrList;
|
|
|
+ private final EmrPatientDao dao;
|
|
|
+ private final EmrEditor editor;
|
|
|
+
|
|
|
+ public ResultVo<String> createEmr(AutoCreateEmrParams.Params params) {
|
|
|
+ params.setCreateCode(TokenUtil.getInstance().getTokenUserId());
|
|
|
+ createEmrAsync(params);
|
|
|
+ return R.ok(ExceptionEnum.SUCCESS_AND_EL_MESSAGE, "创建成功。");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Async
|
|
|
+ public void createEmrAsync(AutoCreateEmrParams.Params params) {
|
|
|
+ if (StrUtil.isBlank(params.getCreateCode())) {
|
|
|
+ params.setCreateCode(TokenUtil.getInstance().getTokenUserId());
|
|
|
+ }
|
|
|
+ for (Map.Entry<String, AutoCreateEmr> item : autoCreateEmrList.entrySet()) {
|
|
|
+ if (ListUtil.notBlank(params.getTaskName())) {
|
|
|
+ if (!params.getTaskName().contains(item.getKey())) {
|
|
|
+ // 如果不在任务列表里面就不执行
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ String documentId = SnowFlakeId.instance().nextId();
|
|
|
+ AutoCreateEmrParams.AutoCreateEmrVo rst = item.getValue().create(params);
|
|
|
+ // 强制设置documentId
|
|
|
+ rst.setDocumentId(documentId);
|
|
|
+ EmrPatientData build = EmrPatientData.builder()
|
|
|
+ .parent(rst.getParentId())
|
|
|
+ .patNo(params.getPatNo())
|
|
|
+ .times(params.getTimes())
|
|
|
+ .createId(params.getCreateCode())
|
|
|
+ .createDate(new Date())
|
|
|
+ .emrDocumentId(documentId)
|
|
|
+ .emrCategoryCode(rst.getCategoryCode())
|
|
|
+ .parent(rst.getParentId())
|
|
|
+ .emrName(rst.getName())
|
|
|
+ .name(rst.getName())
|
|
|
+ .build();
|
|
|
+ // 调用接口
|
|
|
+ postEmrApi(rst);
|
|
|
+ // 插入数据
|
|
|
+ dao.insert(build);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("入参:{}", JSONObject.toJSONString(params));
|
|
|
+ log.error("生成病历错误", e);
|
|
|
+ throw new BizException(ExceptionEnum.ERROR_EL_MESSAGE, StrUtil.format("生成:【{}】任务错误,错误如下:{}", item.getKey(), e.getMessage()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void postEmrApi(AutoCreateEmrParams.AutoCreateEmrVo rst) {
|
|
|
+ AutoCreateEmrParams.EmrParams emrParams = new AutoCreateEmrParams.EmrParams();
|
|
|
+ emrParams.setDocumentId(rst.getDocumentId());
|
|
|
+ emrParams.setCategoryId(rst.getCategoryId());
|
|
|
+ emrParams.setCategoryCode(rst.getCategoryCode());
|
|
|
+ emrParams.setData(rst.getData());
|
|
|
+ log.info("上传数据:{}", emrParams);
|
|
|
+ JSONObject jsonObject = editor.dataFill(emrParams);
|
|
|
+ if (rst.getDocumentId().equals(jsonObject.getString("documentId"))) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ throw new RuntimeException(StrUtil.format("文档id,不一致:{}", jsonObject.toString()));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|