|
@ -1,487 +0,0 @@
|
|
|
package com.yihu.hos.rest.services.crawler;
|
|
|
|
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
|
import com.yihu.hos.core.datatype.CollectionUtil;
|
|
|
import com.yihu.hos.core.datatype.DateUtil;
|
|
|
import com.yihu.hos.core.datatype.StringUtil;
|
|
|
import com.yihu.hos.core.log.Logger;
|
|
|
import com.yihu.hos.core.log.LoggerFactory;
|
|
|
import com.yihu.hos.rest.common.format.AdapterBase;
|
|
|
import com.yihu.hos.rest.common.format.StdBase;
|
|
|
import com.yihu.hos.rest.models.crawler.adapter.AdapterDataSet;
|
|
|
import com.yihu.hos.rest.models.crawler.adapter.StdDataSet;
|
|
|
import com.yihu.hos.rest.models.crawler.config.SysConfig;
|
|
|
import com.yihu.hos.rest.models.crawler.patient.Patient;
|
|
|
import com.yihu.hos.rest.models.crawler.qc.QcDaily;
|
|
|
import com.yihu.hos.rest.models.crawler.qc.QcPatientIndex;
|
|
|
import com.yihu.hos.rest.models.rs.RsJobConfig;
|
|
|
import com.yihu.hos.rest.models.standard.adapter.AdapterDatasetModel;
|
|
|
import com.yihu.hos.rest.models.standard.adapter.AdapterDictEntryModel;
|
|
|
import com.yihu.hos.rest.models.standard.adapter.AdapterSchemeModel;
|
|
|
import com.yihu.hos.rest.models.standard.adapter.AdapterSchemeVersionModel;
|
|
|
import com.yihu.hos.rest.models.standard.bo.AdapterVersion;
|
|
|
import com.yihu.hos.rest.models.standard.bo.StandardVersion;
|
|
|
import com.yihu.hos.rest.models.standard.standard.StdMetaDataModel;
|
|
|
import com.yihu.hos.rest.services.standard.adapter.*;
|
|
|
import com.yihu.hos.rest.services.standard.standard.StdMetadataService;
|
|
|
import com.yihu.hos.web.framework.model.DataGridResult;
|
|
|
import com.yihu.hos.web.framework.model.DictItem;
|
|
|
import com.yihu.hos.web.framework.model.Result;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.util.*;
|
|
|
|
|
|
@Service("qCCrawlerManager")
|
|
|
public class QCCrawlerManager {
|
|
|
public static final String BEAN_ID = "qCCrawlerManager";
|
|
|
private static String unstructured = "unstructured";
|
|
|
private static Logger logger = LoggerFactory.getLogger(QCCrawlerManager.class);
|
|
|
@Resource
|
|
|
private AdapterDatasetService adapterDatasetService;
|
|
|
@Resource
|
|
|
private AdapterMetadataService adapterMetadataService;
|
|
|
@Resource
|
|
|
private AdapterDictService adapterDictService;
|
|
|
@Resource
|
|
|
private AdapterSchemeVersionService adapterSchemeVersionService;
|
|
|
@Resource
|
|
|
private DatacollectManager datacollect;
|
|
|
@Resource
|
|
|
private StdMetadataService StdMetadataService;
|
|
|
@Resource(name = AdapterSchemeService.BEAN_ID)
|
|
|
private AdapterSchemeService adapterSchemeService;
|
|
|
@Resource
|
|
|
private ObjectMapper objectMapper;
|
|
|
|
|
|
private static DataCollectDispatcher dispatch = DataCollectDispatcher.getInstance();
|
|
|
private static SysConfig sysConfig = SysConfig.getInstance();
|
|
|
private static Map<String, Map<String, AdapterDataSet>> adapterDataSetVersionMap = new HashMap<>();
|
|
|
private static Map<String, Map<String, StdDataSet>> stdDataSetVersionMap = new HashMap<>();
|
|
|
|
|
|
private static Map<Integer, List<StdMetaDataModel>> stdMetaDataMap = new HashMap<>();
|
|
|
|
|
|
private Map<String, AdapterDataSet> adapterDataSetMap;
|
|
|
private Map<String, StdDataSet> stdDataSetMap;
|
|
|
|
|
|
private Boolean adapterFlg = false;
|
|
|
private Boolean stdFlg = false;
|
|
|
private String schemeVersion;
|
|
|
private List<DictItem> datasetList;
|
|
|
|
|
|
public void finalize() throws Throwable {
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 病人事件列表
|
|
|
*
|
|
|
* @param jobId
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public List<Patient> PatientListByJobId(String jobId) throws Exception {
|
|
|
RsJobConfig rsJobConfig = datacollect.getJobById(jobId);
|
|
|
logger.info("质控服务-病人列表获取jobId:" + jobId);
|
|
|
Date begin = rsJobConfig.getRepeatStartTime();
|
|
|
Date end = rsJobConfig.getRepeatEndTime();
|
|
|
|
|
|
if (end == null) {
|
|
|
int totalOffset = rsJobConfig.getDelayTime();
|
|
|
Calendar instance = Calendar.getInstance();
|
|
|
instance.setTime(new Date(DateUtil.getSysDateTime().getTime()));
|
|
|
instance.add(Calendar.SECOND, -totalOffset); //调整截止时间,当前时间-偏移量
|
|
|
end = instance.getTime();
|
|
|
}
|
|
|
|
|
|
if ((end.getTime() - begin.getTime()) <= 0) {
|
|
|
System.out.println("质控服务-错误:采集结束时间小于开始时间!"); //结束时间小于开始时间时,不获取
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
end = DateUtil.fromatDateToTimestamp(end);
|
|
|
|
|
|
if (!rsJobConfig.getJobType().equals("0")) {
|
|
|
//调整截止时间,当前时间-偏移量
|
|
|
end = DateUtil.addDate(-rsJobConfig.getDelayTime(), DateUtil.getSysDateTime());
|
|
|
if ((end.getTime() - begin.getTime()) <= 0) {
|
|
|
System.out.println("质控服务-错误:采集结束时间小于开始时间!"); //结束时间小于开始时间时,不获取
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (DateUtil.getDifferenceOfDays(begin, end) > 1) {
|
|
|
end = DateUtil.addDate(1, begin);
|
|
|
end = DateUtil.fromatDateToTimestamp(end);
|
|
|
}
|
|
|
|
|
|
DataGridResult dataGridResult = datacollect.getJobDatasetByJobId(jobId);
|
|
|
this.datasetList = dataGridResult.getDetailModelList();
|
|
|
this.schemeVersion = rsJobConfig.getSchemeVersion();
|
|
|
List<Patient> patientList = getPatientList(begin, end);
|
|
|
return patientList;
|
|
|
}
|
|
|
|
|
|
public List<Patient> getPatientList(Date beginDate, Date endDate) {
|
|
|
Map<String, Object> condition = new HashMap<>();
|
|
|
condition.put("beginDate", beginDate);
|
|
|
condition.put("endDate", endDate);
|
|
|
Integer count = 0;
|
|
|
Integer totalCount = 0;
|
|
|
String message;
|
|
|
/**
|
|
|
* 适配基本数据准备
|
|
|
*/
|
|
|
if (!getDataForPrepare()) {
|
|
|
message = "适配数据尚未准备";
|
|
|
logger.error(message);
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
List<Patient> patientList = dispatch.getPatientList(condition, adapterDataSetMap);
|
|
|
|
|
|
return patientList;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 上传档案/质控上传
|
|
|
* @param jobId
|
|
|
* @param checkType
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public Result dataCrawlerByJobId(String jobId,String checkType) throws Exception {
|
|
|
RsJobConfig rsJobConfig = datacollect.getJobById(jobId);
|
|
|
|
|
|
String random = UUID.randomUUID().toString();
|
|
|
logger.info("质控数据采集上传开始,流水号:" + random + ",jobId:"+jobId);
|
|
|
Date begin = rsJobConfig.getRepeatStartTime();
|
|
|
Date end = rsJobConfig.getRepeatEndTime();
|
|
|
|
|
|
if (end == null) {
|
|
|
int totalOffset = rsJobConfig.getDelayTime();
|
|
|
Calendar instance = Calendar.getInstance();
|
|
|
instance.setTime(new Date(DateUtil.getSysDateTime().getTime()));
|
|
|
instance.add(Calendar.SECOND, - totalOffset); //调整截止时间,当前时间-偏移量
|
|
|
end = instance.getTime();
|
|
|
}
|
|
|
|
|
|
if ((end.getTime() - begin.getTime()) <= 0) {
|
|
|
return Result.error("错误:采集结束时间小于开始时间!"); //结束时间小于开始时间时,不获取
|
|
|
}
|
|
|
|
|
|
end = DateUtil.fromatDateToTimestamp(end);
|
|
|
|
|
|
if (!rsJobConfig.getJobType().equals("0")) {
|
|
|
//调整截止时间,当前时间-偏移量
|
|
|
end = DateUtil.addDate(-rsJobConfig.getDelayTime(), DateUtil.getSysDateTime());
|
|
|
if ((end.getTime() - begin.getTime()) <= 0) {
|
|
|
return Result.success("错误:采集结束时间小于开始时间!"); //结束时间小于开始时间时,不获取
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (DateUtil.getDifferenceOfDays(begin, end) > 1) {
|
|
|
end = DateUtil.addDate(1, begin);
|
|
|
end = DateUtil.fromatDateToTimestamp(end);
|
|
|
}
|
|
|
|
|
|
DataGridResult dataGridResult = datacollect.getJobDatasetByJobId(jobId);
|
|
|
this.datasetList = dataGridResult.getDetailModelList();
|
|
|
this.schemeVersion = rsJobConfig.getSchemeVersion();
|
|
|
Result result = dataCrawler(begin, end,checkType);
|
|
|
if (!rsJobConfig.getJobType().equals("0")) {
|
|
|
rsJobConfig.setRepeatStartTime(end);
|
|
|
// rsJobConfig.setRepeatEndTime(DateUtil.formatYMDToYMDHMS(DateUtil.getSysDateTime().toString()));
|
|
|
}
|
|
|
datacollect.updateJob(rsJobConfig);
|
|
|
logger.info("质控采集上传结束,流水号:" + random + ",jobId:" + jobId + ",message:" + result.getMessage());
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
public Result dataCrawler(Date beginDate, Date endDate,String checkType) {
|
|
|
Map<String, Object> condition = new HashMap<>();
|
|
|
condition.put("beginDate", beginDate);
|
|
|
condition.put("endDate", endDate);
|
|
|
Integer count = 0;
|
|
|
Integer totalCount = 0;
|
|
|
String message;
|
|
|
/**
|
|
|
* 适配基本数据准备
|
|
|
*/
|
|
|
if (!getDataForPrepare()) {
|
|
|
message = "适配数据尚未准备";
|
|
|
logger.error(message);
|
|
|
return Result.error(message);
|
|
|
}
|
|
|
|
|
|
List<Patient> patientList = dispatch.getPatientList(condition, adapterDataSetMap);
|
|
|
if (!CollectionUtil.isEmpty(patientList)) {
|
|
|
totalCount = patientList.size();
|
|
|
QcDaily qcDaily = genQcDaily(patientList);
|
|
|
QcPatientIndex qcPatientIndex =null;
|
|
|
for (Patient patient : patientList) {
|
|
|
Boolean result = collectProcess(patient,checkType);
|
|
|
qcPatientIndex = new QcPatientIndex(patient.getPatientId(),patient.getEventNo(),patient.getReferenceTime());
|
|
|
qcDaily.addTotal(qcPatientIndex,patient.getDataSet());
|
|
|
if (result) {
|
|
|
count++;
|
|
|
qcDaily.addReal(qcPatientIndex,patient.getDataSet());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (qcDaily!=null){
|
|
|
qcDaily.setOrg_code(patientList.get(0).getOrgCode());
|
|
|
qcDaily.setInner_version(this.schemeVersion);
|
|
|
qcDaily.setCreate_date(DateUtil.getCurrentString(DateUtil.DATE_WORLD_FORMAT));
|
|
|
qcDaily.setTotal_outpatient_num(qcDaily.getTotal_outpatient().size());
|
|
|
qcDaily.setTotal_hospital_num(qcDaily.getTotal_hospital().size());
|
|
|
qcDaily.setReal_outpatient_num(qcDaily.getReal_outpatient().size());
|
|
|
qcDaily.setReal_hospital_num(qcDaily.getReal_hospital().size());
|
|
|
boolean b = dispatch.uploadQcDaily(objectMapper.convertValue(qcDaily, JsonNode.class),patientList.get(0));
|
|
|
if (!b){
|
|
|
logger.debug("质控服务-日报包上传失败!!!");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
message = "本次上传病人共" + totalCount + "条,成功上传信息"+ count + "条";
|
|
|
return Result.success(message);
|
|
|
}
|
|
|
|
|
|
//单个病人质控数据采集上传
|
|
|
public Boolean collectProcess(Patient patient, String collectType) {
|
|
|
if (!getDataForPrepare()) {
|
|
|
logger.error("适配数据尚未准备");
|
|
|
return false;
|
|
|
}
|
|
|
patient.setReUploadFlg(StringUtil.toString(false));
|
|
|
logger.trace("采集->质控分析->打包上传,patient_id:" + patient.getPatientId() + ", event_no:" + patient.getEventNo());
|
|
|
try {
|
|
|
|
|
|
if (StringUtil.isEmpty(sysConfig.getVersionMap().get(patient.getOrgCode()))) {
|
|
|
Map.Entry<String, AdapterDataSet> next = adapterDataSetMap.entrySet().iterator().next();
|
|
|
Integer schemeId = next.getValue().getAdapterDataSetT().getSchemeId();
|
|
|
AdapterSchemeModel schemeModel = adapterSchemeService.getEntity(AdapterSchemeModel.class, schemeId);
|
|
|
if (schemeModel.getStdVersion() != null) {
|
|
|
SysConfig.getInstance().getVersionMap().put(patient.getOrgCode(), schemeModel.getStdVersion());
|
|
|
} else {
|
|
|
logger.error("版本获取失败");
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Map<String, AdapterDataSet> dataSetMap = new HashMap<>();
|
|
|
Map<String, JsonNode> dataMap = new HashMap<>();
|
|
|
int realCount = 0;
|
|
|
List<String> realList = new ArrayList<>();
|
|
|
ObjectNode qcDataSet = dispatch.genQcDataSet(patient);//获取质控数据结构
|
|
|
qcDataSet.put("total_num",adapterDataSetMap.size());
|
|
|
for (String key : adapterDataSetMap.keySet()) {
|
|
|
/**
|
|
|
* 获取数据
|
|
|
*/
|
|
|
AdapterDataSet adapterDataSet = adapterDataSetMap.get(key);
|
|
|
String stdVersion = adapterDatasetService.getStdVersionByAdapterDataSet(this.schemeVersion);
|
|
|
JsonNode jsonObject = dispatch.fecthData(patient, adapterDataSet,stdVersion);
|
|
|
if (StringUtil.isEmpty(jsonObject)) {
|
|
|
continue;
|
|
|
}
|
|
|
dataSetMap.put(adapterDataSet.getAdapterDataSetT().getStdDatasetCode(), adapterDataSet);
|
|
|
dataMap.put(key, jsonObject);
|
|
|
realCount++;
|
|
|
realList.add(key);
|
|
|
/**
|
|
|
* 注册病人
|
|
|
*/
|
|
|
// if (SysConfig.getInstance().getRegisterDataSet().equals(adapterDataSet.getAdapterDataSetT().getStdDatasetCode())) {
|
|
|
// if (!StringUtil.isEmpty(jsonObject.get("data")) && !StringUtil.isEmpty(jsonObject.get("data").get(0))) {
|
|
|
// if (!StringUtil.isEmpty(jsonObject.get("data").get(0).get(SysConfig.getInstance().getRegisterIdCardNo()))) {
|
|
|
// logger.info("注册病人");
|
|
|
// dispatch.register(patient, jsonObject.toString());
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
}
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
|
qcDataSet.put("real_num",realCount);
|
|
|
qcDataSet.set("total", objectMapper.convertValue(adapterDataSetMap.keySet().toArray(), JsonNode.class));
|
|
|
qcDataSet.set("real", objectMapper.convertValue(realList, JsonNode.class));
|
|
|
boolean b = dispatch.toQcDataSetFile(qcDataSet, patient);//生成数据集质控文件
|
|
|
logger.info("采集病人数据成功,patient_id:" + patient.getPatientId() + ", event_no:" + patient.getEventNo());
|
|
|
//上传档案
|
|
|
logger.info("上传病人档案及质控数据");
|
|
|
try {
|
|
|
if (!CollectionUtil.isEmpty(dataMap.keySet())) {
|
|
|
if (StringUtil.isEmpty(collectType)) {
|
|
|
//采集档案
|
|
|
if (!dispatch.upload(dataMap, patient, dataSetMap, stdDataSetMap)) {
|
|
|
logger.error("上传档案失败");
|
|
|
return false;
|
|
|
}
|
|
|
} else {
|
|
|
//TODO 规则检验
|
|
|
if (!dispatch.uploadQcData(dataMap, patient, dataSetMap, stdDataSetMap,collectType)) {
|
|
|
logger.error("上传质控包失败");
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
if (!dispatch.upload(dataMap, patient, dataSetMap, stdDataSetMap)) {
|
|
|
logger.error("上传档案失败");
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
logger.error("质控数据上传失败,patient_id:" + patient.getPatientId() + ", event_no:" + patient.getEventNo());
|
|
|
return false;
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
logger.error("采集质控数据失败,patient_id:" + patient.getPatientId() + ", event_no:" + patient.getEventNo(), e);
|
|
|
return false;
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
|
|
|
public Boolean getDataForPrepare() {
|
|
|
if (adapterFlg && stdFlg) {
|
|
|
return true;
|
|
|
}
|
|
|
AdapterBase.setAdapterMetadataService(adapterMetadataService);
|
|
|
AdapterBase.setAdapterDictService(adapterDictService);
|
|
|
AdapterBase.setAdapterSchemeVersionService(adapterSchemeVersionService);
|
|
|
StdBase.setStdMetadataService(StdMetadataService);
|
|
|
logger.info("适配基本相关数据准备");
|
|
|
try {
|
|
|
adapterDataSetMap = new HashMap<>();
|
|
|
stdDataSetMap = new HashMap<>();
|
|
|
AdapterVersion adapterVersion;
|
|
|
StandardVersion standardVersion = null;
|
|
|
List<AdapterDatasetModel> adapterDataSetModelList;
|
|
|
if (!CollectionUtil.isEmpty(datasetList)) {
|
|
|
/**
|
|
|
* 拉模式接口调用,由任务配置决定适配版本
|
|
|
*/
|
|
|
adapterVersion = new AdapterVersion(schemeVersion);
|
|
|
List<Integer> datasetIdList = new ArrayList<>();
|
|
|
for (DictItem dictItem : datasetList) {
|
|
|
Integer dataSetId = Integer.parseInt(dictItem.getCode());
|
|
|
datasetIdList.add(dataSetId);
|
|
|
}
|
|
|
adapterDataSetModelList = adapterDatasetService.getAdapterDatasetByAdapterIdList(adapterVersion, datasetIdList);
|
|
|
if (adapterDataSetModelList != null && !adapterDataSetModelList.isEmpty()) {
|
|
|
AdapterSchemeModel adapterScheme = adapterSchemeService.getEntity(AdapterSchemeModel.class, adapterDataSetModelList.get(0).getSchemeId());
|
|
|
standardVersion = new StandardVersion(adapterScheme.getStdVersion());
|
|
|
for (DictItem dictItem : datasetList) {
|
|
|
Integer dataSetId = Integer.parseInt(dictItem.getCode());
|
|
|
if (!stdMetaDataMap.containsKey(dataSetId)) {
|
|
|
stdMetaDataMap.put(dataSetId, new StdDataSet(dataSetId, standardVersion).getStdMetaDataModelList());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
/**
|
|
|
* 推模式接口调用,默认只使用最新版本的适配
|
|
|
*/
|
|
|
AdapterSchemeVersionModel adapterSchemeVersionModel = adapterSchemeVersionService.getEhrAdapterVersionLasted();
|
|
|
|
|
|
if (adapterSchemeVersionModel == null) {
|
|
|
logger.error("获取最新ehr适配版本错误");
|
|
|
return false;
|
|
|
} else {
|
|
|
this.schemeVersion = adapterSchemeVersionModel.getVersion();
|
|
|
adapterVersion = new AdapterVersion(schemeVersion);
|
|
|
}
|
|
|
if (adapterDataSetVersionMap.get(schemeVersion) != null) {
|
|
|
adapterDataSetMap = adapterDataSetVersionMap.get(schemeVersion);
|
|
|
adapterFlg = true;
|
|
|
}
|
|
|
|
|
|
if (stdDataSetVersionMap.get(schemeVersion) != null) {
|
|
|
stdDataSetMap = stdDataSetVersionMap.get(schemeVersion);
|
|
|
stdFlg = true;
|
|
|
}
|
|
|
|
|
|
if (adapterFlg && stdFlg) {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
Map<String, String> condition = new HashMap<>();
|
|
|
condition.put("column", "adapter_dataset_code");
|
|
|
ObjectMapper mapper = new ObjectMapper();
|
|
|
String conditionStr = mapper.writeValueAsString(condition);
|
|
|
adapterDataSetModelList = adapterDatasetService.getAdapterDatasetNotNullList(adapterVersion, conditionStr);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 字典项初始化
|
|
|
*/
|
|
|
List<AdapterDictEntryModel> adapterDictEntryModelList = adapterDatasetService.getList(AdapterDictEntryModel.class, adapterVersion.getDictEntryTableName(), null, null, null, null);
|
|
|
Map<Integer, List<AdapterDictEntryModel>> adapterDictEntryModelMap = new HashMap<>();
|
|
|
for (AdapterDictEntryModel adapterDictEntryModel : adapterDictEntryModelList) {
|
|
|
List<AdapterDictEntryModel> entryModelList = adapterDictEntryModelMap.get(adapterDictEntryModel.getStdDictId());
|
|
|
if (CollectionUtil.isEmpty(entryModelList)) {
|
|
|
entryModelList = new ArrayList<>();
|
|
|
}
|
|
|
entryModelList.add(adapterDictEntryModel);
|
|
|
adapterDictEntryModelMap.put(adapterDictEntryModel.getStdDictId(), entryModelList);
|
|
|
}
|
|
|
/**
|
|
|
* 数据集初始化
|
|
|
*/
|
|
|
for (AdapterDatasetModel adapterDatasetModel : adapterDataSetModelList) {
|
|
|
adapterDataSetMap.put(adapterDatasetModel.getStdDatasetCode(), new AdapterDataSet(adapterDatasetModel, adapterVersion, adapterDictEntryModelMap));
|
|
|
stdDataSetMap.put(adapterDatasetModel.getStdDatasetCode(), new StdDataSet(adapterDatasetModel.getStdDatasetId(), standardVersion));
|
|
|
}
|
|
|
adapterDataSetVersionMap.put(schemeVersion, adapterDataSetMap);
|
|
|
stdDataSetVersionMap.put(schemeVersion, stdDataSetMap);
|
|
|
adapterFlg = true;
|
|
|
stdFlg = true;
|
|
|
return true;
|
|
|
} catch (Exception e) {
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 解析病人索引信息
|
|
|
*
|
|
|
* @param patientInfo 病人索引信息
|
|
|
* @return
|
|
|
*/
|
|
|
public Patient parsePatient(String patientInfo) {
|
|
|
try {
|
|
|
ObjectMapper mapper = new ObjectMapper();
|
|
|
Patient patient = mapper.readValue(patientInfo, Patient.class);
|
|
|
return patient;
|
|
|
} catch (Exception e) {
|
|
|
logger.error("patient参数错误:" + patientInfo, e);
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public void setSchemeVersion(String schemeVersion) {
|
|
|
this.schemeVersion = schemeVersion;
|
|
|
}
|
|
|
|
|
|
public void setDatasetList(List<DictItem> datasetList) {
|
|
|
this.datasetList = datasetList;
|
|
|
}
|
|
|
|
|
|
public QcDaily genQcDaily(List<Patient> patients){
|
|
|
QcDaily qcDaily = new QcDaily();
|
|
|
if (patients!=null && patients.isEmpty()){
|
|
|
qcDaily.setOrg_code(patients.get(0).getOrgCode());
|
|
|
qcDaily.setInner_version(SysConfig.getInstance().getVersionMap().get(patients.get(0).getOrgCode()));
|
|
|
qcDaily.setCreate_date(DateUtil.getUtcDate(new Date()));
|
|
|
|
|
|
}
|
|
|
return qcDaily;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|