浏览代码

采集原始数据

hzp 9 年之前
父节点
当前提交
d7640cacf6

+ 5 - 5
Hos-resource/src/main/java/com/yihu/ehr/datacollect/model/DtoDictCol.java

@ -11,7 +11,7 @@ public class DtoDictCol implements java.io.Serializable {
	private String stdMetadataCode;
	private String adapterDataType;
	private String adapterDictId;
	private String stdDictId;
	private JSONArray dictList;
	public String getStdMetadataCode() {
@ -30,12 +30,12 @@ public class DtoDictCol implements java.io.Serializable {
		this.adapterDataType = adapterDataType;
	}
	public String getAdapterDictId() {
		return adapterDictId;
	public String getStdDictId() {
		return stdDictId;
	}
	public void setAdapterDictId(String adapterDictId) {
		this.adapterDictId = adapterDictId;
	public void setStdDictId(String stdDictId) {
		this.stdDictId = stdDictId;
	}
	public JSONArray getDictList() {

+ 79 - 3
Hos-resource/src/main/java/com/yihu/ehr/datacollect/service/DatacollectService.java

@ -138,6 +138,81 @@ public class DatacollectService implements IDatacollectService {
        }
    }
    /**
     * 字典全转换成中文
     */
    private List<JSONObject> translateDictCN(List<JSONObject> list,JSONArray colList,String schemeVersion) throws Exception
    {
        //获取字典列表
        List<DtoDictCol> dictColList = new ArrayList<>();
        for(int i=0; i< colList.length();i++)
        {
            JSONObject col = colList.getJSONObject(i);
            String dictId = col.optString("adapterDictId");
            if(dictId!=null && dictId.length()>0)
            {
                String dictType = col.optString("adapterDataType");
                String stdMetadataCode = col.optString("stdMetadataCode");
                DtoDictCol dictCol = new DtoDictCol();
                dictCol.setStdMetadataCode(stdMetadataCode);
                dictCol.setStdDictId(dictId);
                dictCol.setAdapterDataType(dictType.length() > 0 ? dictType : "1");//默认通过code转换字典
                //获取字典数据
                List dictString = stdService.getDictByScheme(schemeVersion,dictId);
                JSONArray dictAdapterArray = new JSONArray(dictString);
                dictCol.setDictList(dictAdapterArray);
                dictColList.add(dictCol);
            }
        }
        //翻译列表
        for(JSONObject data :list)
        {
            //遍历字典字段
            for (DtoDictCol col : dictColList) {
                String colNmae = col.getStdMetadataCode();
                String oldValue = data.optString(colNmae);
                String newValue = translateDictValueCN(oldValue,col.getAdapterDataType(),col.getDictList());
                if(newValue!=null && newValue.length()>0)
                {
                    data.put(colNmae,newValue);
                }
            }
        }
        return list;
    }
    /**
     * 转译字典成中文
     * @return
     */
    private String translateDictValueCN(String oldValue,String type,JSONArray dictAdapterList) throws Exception
    {
        if(type.equals("0")) //原本就是值
        {
            return oldValue;
        }
        //遍历字典数据(编码->名称)
        for(int i=0; i< dictAdapterList.length();i++)
        {
            JSONObject dictItem = dictAdapterList.getJSONObject(i);
            if(oldValue!=null && dictItem.has("stdEntryCode")) {
                if (oldValue.equals(dictItem.getString("stdEntryCode"))) {
                    String newValue = dictItem.getString("stdEntryValue"); //名称
                    return newValue;
                }
            }
        }
        return oldValue;
    }
    /**
     * 字典转换
     * @param list
@ -160,7 +235,7 @@ public class DatacollectService implements IDatacollectService {
                String stdMetadataCode = col.optString("stdMetadataCode");
                DtoDictCol dictCol = new DtoDictCol();
                dictCol.setStdMetadataCode(stdMetadataCode);
                dictCol.setAdapterDictId(dictId);
                dictCol.setStdDictId(dictId);
                dictCol.setAdapterDataType(dictType.length()>0?dictType:"1");//默认通过code转换字典
                //获取字典数据
                List dictString = stdService.getDictByScheme(schemeVersion,dictId);
@ -215,7 +290,8 @@ public class DatacollectService implements IDatacollectService {
            }
        }
        return oldValue;
        //找不到适配字典数据则返回空
        return "";
    }
@ -276,7 +352,7 @@ public class DatacollectService implements IDatacollectService {
            if(list!=null && list.size()>0)
            {
                //字典未转换前采集到原始库
                boolean b = mongoOrigin.insert(stdDatasetCode,list);
                boolean b = mongoOrigin.insert(stdDatasetCode,translateDictCN(list, colList,schemeVersion));
                //字典转换
                list = translateDict(list, colList,schemeVersion);

+ 2 - 2
Hos-resource/src/main/java/com/yihu/ehr/datacollect/service/DatapushService.java

@ -103,10 +103,10 @@ public class DatapushService implements IDatapushService {
                                String val = data.optString(adapterColName);
                                String newValue =val;
                                //判断是否字典
                                if(metadata.getAdapterDictId()!=null&&metadata.getAdapterDictId()!=0)
                                if(metadata.getStdDictId()!=null&&metadata.getStdDictId()!=0)
                                {
                                    //获取字典列表
                                    List dictString = stdService.getDictByScheme(version,metadata.getAdapterDictId().toString());
                                    List dictString = stdService.getDictByScheme(version,metadata.getStdDictId().toString());
                                    JSONArray dictAdapterArray = new JSONArray(dictString);
                                    String type = "";
                                    if(metadata.getAdapterDataType()!=null)