Browse Source

病案首页字段转义

zhangzw 4 năm trước cách đây
mục cha
commit
c4604588c1

+ 5 - 0
pom.xml

@@ -234,6 +234,11 @@
             <artifactId>jaxen</artifactId>
             <version>1.1.6</version>
         </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.6</version>
+        </dependency>
         <!--hl7解析工具-->
 
         <dependency>

+ 57 - 15
src/main/java/com/diagbot/facade/data/AMedicalRecordFacade.java

@@ -70,6 +70,8 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
 
     @Autowired
     private AHomePageFacade aHomePageFacade;
+
+    public static final Map<String,String> CITY_MAP = MapUtil.getMap("cityCode.json");
     /**
      * 终末质控-同步前一天的病历记录
      */
@@ -279,24 +281,56 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
         aHomePageVO.setFileCode(paramsObj.getString("病案号"));
         aHomePageVO.setName(paramsObj.getString("姓名"));
         aHomePageVO.setSex(paramsObj.getString("性别"));
-        aHomePageVO.setBirthday(paramsObj.getString("出生日期").replace("年","-").replace("月","-").replace("日","-"));
-        aHomePageVO.setAge(paramsObj.getString("年龄新"));//待定
-        aHomePageVO.setAgeUnit("");//待定
+        if(StringUtil.isNotEmpty(paramsObj.getString("出生日期").replaceAll("[\u4e00-\u9fa5]","").trim())){
+            aHomePageVO.setBirthday(paramsObj.getString("出生日期").replaceAll("[\u4e00-\u9fa5]","-"));
+        }
+        aHomePageVO.setAge(paramsObj.getString("新生儿年龄").replaceAll("[\u4e00-\u9fa5]",""));
+        if(paramsObj.getString("新生儿年龄").contains("天")){
+            aHomePageVO.setAgeUnit("天");
+        }else if(paramsObj.getString("新生儿年龄").contains("月")){
+            aHomePageVO.setAgeUnit("月");
+        }else {
+            aHomePageVO.setAgeUnit("岁");
+        }
         aHomePageVO.setNationality(paramsObj.getString("国籍"));
-        aHomePageVO.setNewbornMonth("");//待定
-        aHomePageVO.setNewbornDay("");//待定
         aHomePageVO.setNewbornWeight(paramsObj.getString("新生儿出生体重"));
-        aHomePageVO.setNewbornBehospitalWeight("");//待定
-        aHomePageVO.setBornAddress("");//待定
-        aHomePageVO.setBornPlace(paramsObj.getString("籍贯_市"));//待定
+        //aHomePageVO.setNewbornBehospitalWeight("");
+        String[] provinceList =  paramsObj.getString("省").split(" ");
+        String[] cityList = paramsObj.getString("市").split(" ");
+        String[] areaList = paramsObj.getString("县").split(" ");
+        if(provinceList.length > 0){
+            if(provinceList[0].length() > 1){
+                aHomePageVO.setBornAddress(CITY_MAP.get(provinceList[0]) == null ? "" : CITY_MAP.get(provinceList[0]));
+            }
+            if(provinceList[1].length() > 1){
+                aHomePageVO.setResidenceAddress(CITY_MAP.get(provinceList[1]) == null ? "" : CITY_MAP.get(provinceList[1]));
+            }
+        }
+        if(cityList.length > 0){
+            if(cityList[0].length() > 1){
+                aHomePageVO.setBornAddress(aHomePageVO.getBornAddress() + (CITY_MAP.get(cityList[0]) == null ? "" : CITY_MAP.get(cityList[0])));
+            }
+            if(cityList[1].length() > 1){
+                aHomePageVO.setResidenceAddress(aHomePageVO.getResidenceAddress() + (CITY_MAP.get(cityList[1]) == null ? "" : CITY_MAP.get(cityList[1])));
+            }
+        }
+        if(areaList.length > 0){
+            if(areaList[0].length() > 1){
+                aHomePageVO.setBornAddress(aHomePageVO.getBornAddress() + (CITY_MAP.get(areaList[0]) == null ? "" : CITY_MAP.get(areaList[0])));
+            }
+            if(areaList[1].length() > 1){
+                aHomePageVO.setResidenceAddress(aHomePageVO.getResidenceAddress() + (CITY_MAP.get(areaList[1]) == null ? "" : CITY_MAP.get(areaList[1])));
+            }
+        }
+        aHomePageVO.setResidenceAddress(aHomePageVO.getResidenceAddress()+paramsObj.getString("户口地址其它"));
+        aHomePageVO.setBornPlace(CITY_MAP.get(paramsObj.getString("籍贯_省")) + CITY_MAP.get(paramsObj.getString("籍贯_市")));
         aHomePageVO.setNation(paramsObj.getString("民族"));
         aHomePageVO.setIdentityCardNo(paramsObj.getString("身份证号"));
         aHomePageVO.setJobType(paramsObj.getString("职业"));
         aHomePageVO.setMarriage(paramsObj.getString("婚姻"));//待定
-        aHomePageVO.setCurAddress(paramsObj.getString("现住址_县"));
+        aHomePageVO.setCurAddress(CITY_MAP.get(paramsObj.getString("现住址_省"))+CITY_MAP.get(paramsObj.getString("现住址_市"))+CITY_MAP.get(paramsObj.getString("现住址_县"))+paramsObj.getString("现住址其它"));
         aHomePageVO.setCurPhone(paramsObj.getString("现住址电话"));
         aHomePageVO.setCurPostCode(paramsObj.getString("现住址邮编"));
-        aHomePageVO.setResidenceAddress("");//待定
         aHomePageVO.setResidencePostCode(paramsObj.getString("户口地址邮编"));
         aHomePageVO.setWorkAddress(paramsObj.getString("工作单位"));
         aHomePageVO.setWorkPhone(paramsObj.getString("工作单位电话"));
@@ -305,14 +339,20 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
         aHomePageVO.setContactRelation(paramsObj.getString("联系人关系"));
         aHomePageVO.setContactAddress(paramsObj.getString("联系人地址"));
         aHomePageVO.setContactPhone(paramsObj.getString("联系人电话"));
-        aHomePageVO.setBehospitalWay(paramsObj.getString("入院途径"));
-        aHomePageVO.setBehospitalDate(paramsObj.getString("入院时间"));//待定  2020年12月15日 09时56分
+        if(StringUtil.isNotBlank(paramsObj.getString("入院途径"))){
+            aHomePageVO.setBehospitalWay(paramsObj.getString("入院途径").split(" ")[0]);
+        }
+        if(YWDateUtils.isDate(paramsObj.getString("入院时间"),"yyyy年MM月dd日 HH时mm分")){
+            aHomePageVO.setBehospitalDate(DateUtil.format(YWDateUtils.parseDateTime(paramsObj.getString("入院时间")),DateUtil.DATE_TIME_FORMAT));
+        }
         aHomePageVO.setBehospitalDept(paramsObj.getString("入院科别"));
         aHomePageVO.setBehospitalWard(paramsObj.getString("入院病房"));
         //aHomePageVO.setBehospitalBedId();
         //aHomePageVO.setBehospitalBedCode();
         aHomePageVO.setChangeDept(paramsObj.getString("转科科别"));
-        aHomePageVO.setLeaveHospitalDate(paramsObj.getString("出院时间"));//待定
+        if(YWDateUtils.isDate(paramsObj.getString("出院时间"),"yyyy年MM月dd日 HH时mm分")){
+            aHomePageVO.setLeaveHospitalDate(DateUtil.format(YWDateUtils.parseDateTime(paramsObj.getString("出院时间")),DateUtil.DATE_TIME_FORMAT));
+        }
         aHomePageVO.setLeaveHospitalDept(paramsObj.getString("出院科别"));
         aHomePageVO.setLeaveHospitalWard(paramsObj.getString("出院病房"));
         //aHomePageVO.setLeaveHospitalBedId();
@@ -401,7 +441,7 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
                 AHomeOperationVO aHomeOperationVO = new AHomeOperationVO();
                 aHomeOperationVO.setHomePageId(behospitalCode);
                 aHomeOperationVO.setHospitalId(hospitalId);
-                //aHomeOperationVO.setOperationOrderNo();//非空字段
+                aHomeOperationVO.setOperationOrderNo(String.valueOf(i));
                 aHomeOperationVO.setOperationDate(((JSONArray) operationList).getJSONObject(i).getString("手术日期"));//待定2020-08-11
                 aHomeOperationVO.setOperationCode(((JSONArray) operationList).getJSONObject(i).getString("手术编码"));
                 aHomeOperationVO.setOperationDoctorId(((JSONArray) operationList).getJSONObject(i).getString("手术医生ID"));
@@ -416,6 +456,7 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
 
                 operationInfo.add(aHomeOperationVO);
             }
+            aHomePageVO.setOperations(operationInfo);
         }
         List<Object> diagnoseList = paramsObj.getJSONArray("出院诊断");
         if(diagnoseList.size() > 0){
@@ -424,7 +465,7 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
                 AHomeDiagnoseVO aHomeDiagnoseVO = new AHomeDiagnoseVO();
                 aHomeDiagnoseVO.setHomePageId(behospitalCode);
                 aHomeDiagnoseVO.setHospitalId(hospitalId);
-                //aHomeDiagnoseVO.setDiagnoseOrderNo();//非空字段
+                aHomeDiagnoseVO.setDiagnoseOrderNo(String.valueOf(i));//非空字段
                 aHomeDiagnoseVO.setDiagnoseType(i == 0 ? "主要诊断" : "其他诊断");
                 //aHomeDiagnoseVO.setDiagnoseTypeShort();
                 aHomeDiagnoseVO.setDiagnoseName(((JSONArray) operationList).getJSONObject(i).getString("诊断名称"));
@@ -434,6 +475,7 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
                 aHomeDiagnoseVO.setIcdCode(((JSONArray) operationList).getJSONObject(i).getString("诊断编码"));
                 leaveDiags.add(aHomeDiagnoseVO);
             }
+            aHomePageVO.setLeaveDiags(leaveDiags);
         }
         aHomePageVOList.add(aHomePageVO);
         return aHomePageVOList;

+ 21 - 0
src/main/java/com/diagbot/util/MapUtil.java

@@ -1,12 +1,17 @@
 package com.diagbot.util;
 
+import com.alibaba.fastjson.JSONObject;
 import com.google.common.collect.Maps;
+import org.apache.commons.io.IOUtils;
+import org.springframework.core.io.ClassPathResource;
 
 import java.beans.BeanInfo;
 import java.beans.Introspector;
 import java.beans.PropertyDescriptor;
+import java.io.InputStreamReader;
 import java.lang.reflect.Method;
 import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.Map;
 
 /**
@@ -123,4 +128,20 @@ public class MapUtil {
         return retMap;
     }
 
+    public static Map<String, String> getMap(String path){
+        Map<String,String> map = new LinkedHashMap();
+        try {
+            //路径
+            ClassPathResource classPathResource = new ClassPathResource(path);
+            //读取文件信息
+            String str = IOUtils.toString(new InputStreamReader(classPathResource.getInputStream(),"UTF-8"));
+            //转换为Map对象
+            map = JSONObject.parseObject(str, LinkedHashMap.class);
+        }
+        catch (Exception e) {
+            e.printStackTrace();
+        }
+        return map;
+    }
+
 }

+ 109 - 0
src/main/java/com/diagbot/util/YWDateUtils.java

@@ -1,6 +1,10 @@
 package com.diagbot.util;
 
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.time.DateUtils;
+
 import java.text.DateFormat;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
@@ -74,4 +78,109 @@ public class YWDateUtils {
         return df.format(calendar.getTime());
     }
 
+    public static Date parseDateTime(String datetime) {
+        Date date = null;
+        try {
+            datetime = remove_ctl(datetime);
+
+            if (datetime.contains("至")) {
+                datetime = datetime.split("至")[1].replaceAll("[\\u4e00-\\u9fa5]", "");
+            }
+
+            if (datetime.endsWith(":")) {
+                datetime = datetime.substring(0, datetime.length() - 1);
+            }
+
+            if (datetime.length() > 0 && !"-".equals(datetime)) {
+                date = DateUtils.parseDate(datetime, dateFormats);
+            }
+        } catch (ParseException ex) {
+            ex.printStackTrace();
+        }
+        return date;
+    }
+
+    public static String remove_ctl(String str) {
+        String trim = "";
+        if (StringUtils.isNotEmpty(str)) {
+            trim = str.replaceAll("\r|\n|\r\n|/r/n", "").trim();
+        }
+        return trim;
+    }
+
+    public static String[] dateFormats = {
+            "yyyy年MM月dd日HH时mm分",
+            "yyyy年MM月dd日HH:mm",
+            "yyyy年MM月dd日H时mm分",
+            "yyyy年MM月dd日HH时m分",
+            "yyyy年MM月dd日H时m分",
+            "yyyy年M月dd日HH时mm分",
+            "yyyy年M月dd日H时mm分",
+            "yyyy年M月dd日HH时m分",
+            "yyyy年M月dd日H时m分",
+            "yyyy年MM月d日HH时mm分",
+            "yyyy年MM月d日H时mm分",
+            "yyyy年MM月d日HH时m分",
+            "yyyy年MM月d日H时m分",
+            "yyyy年M月d日HH时mm分",
+            "yyyy年M月d日H时mm分",
+            "yyyy年M月d日HH时m分",
+            "yyyy年M月d日H时m分",
+            "yyyy-MM-ddHH:mm:ss",
+            "yyyy-MM-ddHH:mm",
+            "yyyy-MM-ddHH:m",
+            "yyyy-MM-ddH:mm",
+            "yyyy-MM-ddH:m",
+            "yyyy-M-ddHH:mm",
+            "yyyy-M-ddHH:m",
+            "yyyy-M-ddH:mm",
+            "yyyy-M-ddH:m",
+            "yyyy-MM-dHH:mm",
+            "yyyy-MM-dHH:m",
+            "yyyy-MM-dH:mm",
+            "yyyy-MM-dH:m",
+            "yyyy-M-dHH:mm",
+            "yyyy-M-dHH:m",
+            "yyyy-M-dH:mm",
+            "yyyy-M-dH:m",
+            "yyyy-MM-dd",
+            "yyyy年MM月dd日H时",
+            "yyyy/MM/ddHH:mm:ss",
+            "yyyy/MM/ddHH:mm",
+            "yyyy/MM/ddHH:m",
+            "yyyy/MM/ddH:mm",
+            "yyyy/MM/ddH:m",
+            "yyyy/M/ddHH:mm",
+            "yyyy/M/ddHH:m",
+            "yyyy/M/ddH:mm",
+            "yyyy/M/ddH:m",
+            "yyyy/MM/dHH:mm",
+            "yyyy/MM/dHH:m",
+            "yyyy/MM/dH:mm",
+            "yyyy/MM/dH:m",
+            "yyyy/M/dHH:mm",
+            "yyyy/M/dHH:m",
+            "yyyy/M/dH:mm",
+            "yyyy/M/dH:m",
+            "yyyy/MM/dd",
+            "yyyy.MM.dd",
+            "yyyy-MM-ddHH:mm:ss.000",
+            "yyyyMMddHH:mm",
+            "yyyy-MM-dd'T'HH:mm:ss",
+            "yyyy"
+    };
+
+    public static boolean isDate(String dttm, String format) {
+        boolean retValue = false;
+        if (dttm != null) {
+            SimpleDateFormat formatter = new SimpleDateFormat(format);
+            try {
+                formatter.parse(dttm);
+                retValue = true;
+            } catch (ParseException e) {
+            }
+        }
+        return retValue;
+    }
+
 }

+ 73 - 1
src/main/java/com/diagbot/util/YiWuFirstPageRecordXmlUtil.java

@@ -2,6 +2,7 @@ package com.diagbot.util;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.diagbot.enums.data.*;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -20,6 +21,8 @@ import java.util.Set;
  * @time: 2020/3/28 14:23
  */
 public class YiWuFirstPageRecordXmlUtil {
+
+    public static final Map<String,String> CITY_MAP = MapUtil.getMap("cityCode.json");
     public static Map<String, String> leaveDiagMap = ImmutableMap.<String, String>builder()
             .put("出院诊断", "诊断名称")
             .put("出院诊断编码", "诊断编码")
@@ -373,7 +376,7 @@ public class YiWuFirstPageRecordXmlUtil {
             "联系电话=现住址电话",
             "损伤中毒外部因素=损伤中毒因素",
             "诊断类_实验室诊断费=实验室诊断费",
-            "年龄=新生儿年龄",
+            "年龄=新生儿年龄",
             "诊断类_临床诊断项目费=临床诊断项目费",
             "耗材类_治疗用一次性医用材料费=治疗用一次性医用材料费",
             "诊断符合情况_临床与病理=临床与病理",
@@ -421,4 +424,73 @@ public class YiWuFirstPageRecordXmlUtil {
             "工作单位邮政编码=工作单位邮编"
     );
 
+    public static Map<String,Object> processToValue(Map<String,Object> map){
+
+        String[] provinceList =  String.valueOf(map.get("省")).split(" ");
+        String[] cityList = String.valueOf(map.get("市")).split(" ");
+        String[] areaList = String.valueOf(map.get("县")).split(" ");
+        if(StringUtil.isNotEmpty(String.valueOf(map.get("性别")))){
+            map.put("性别",SexEnum.getName(String.valueOf(map.get("性别"))));
+        }
+        if(StringUtil.isNotEmpty(String.valueOf(map.get("婚姻")))){
+            map.put("婚姻", MarriageEnum.getName(String.valueOf(map.get("婚姻"))));
+        }
+        if(StringUtil.isNotEmpty(String.valueOf(map.get("入院途径")))){
+            //入院途径,1:急诊,2:门诊,3:其他医疗机构,9:其他
+            map.put("入院途径", BehospitalWayEnum.getName(String.valueOf(map.get("入院途径")).split(" ")[0]));
+        }
+        if(StringUtil.isNotEmpty(String.valueOf(map.get("血型")))){
+            map.put("血型", BloodTypeEnum.getName(String.valueOf(map.get("血型"))));
+        }
+        if(StringUtil.isNotEmpty(String.valueOf(map.get("Rh")))){
+            map.put("Rh", RHEnum.getName(String.valueOf(map.get("Rh"))));
+        }
+        if(StringUtil.isNotEmpty(String.valueOf(map.get("离院方式")))){
+            map.put("离院方式", LeaveHospitalTypeEnum.getName(String.valueOf(map.get("离院方式"))));
+        }
+        if(StringUtil.isNotEmpty(String.valueOf(map.get("门诊与住院")))){
+            map.put("门诊与住院", DiagnoseTypeEnum.getName(String.valueOf(map.get("门诊与住院"))));
+        }
+        if(StringUtil.isNotEmpty(String.valueOf(map.get("入院与出院")))){
+            map.put("入院与出院", DiagnoseTypeEnum.getName(String.valueOf(map.get("入院与出院"))));
+        }
+        if(StringUtil.isNotEmpty(String.valueOf(map.get("术前与术后")))){
+            map.put("术前与术后", DiagnoseTypeEnum.getName(String.valueOf(map.get("术前与术后"))));
+        }
+        if(StringUtil.isNotEmpty(String.valueOf(map.get("临床与病理")))){
+            map.put("临床与病理", DiagnoseTypeEnum.getName(String.valueOf(map.get("临床与病理"))));
+        }
+        if(StringUtil.isNotEmpty(String.valueOf(map.get("放射与病理")))){
+            map.put("放射与病理", DiagnoseTypeEnum.getName(String.valueOf(map.get("放射与病理"))));
+        }
+        if(StringUtil.isNotEmpty(String.valueOf(map.get("药物过敏")))){
+            map.put("药物过敏", IsMedAllergyEnum.getName(String.valueOf(map.get("药物过敏"))));
+        }
+        if(StringUtil.isNotEmpty(String.valueOf(map.get("三十一天内再住院计划")))){
+            map.put("三十一天内再住院计划", IsMedAllergyEnum.getName(String.valueOf(map.get("三十一天内再住院计划"))));
+        }
+        if(provinceList.length > 0){
+            if(provinceList[0].length() > 1){
+                map.put("出生地",CITY_MAP.get(provinceList[0]) + CITY_MAP.get(cityList[0]) + CITY_MAP.get(areaList[0]));
+            }
+            if(provinceList[1].length() > 1){
+                map.put("户口地址",CITY_MAP.get(provinceList[1]) + CITY_MAP.get(cityList[1]) + CITY_MAP.get(areaList[1]) + map.get("户口地址其它"));
+            }
+        }
+        if(StringUtil.isNotEmpty(String.valueOf(map.get("籍贯_省")).replaceAll("[\u4e00-\u9fa5]",""))){
+            map.put("籍贯",CITY_MAP.get(map.get("籍贯_省"))+CITY_MAP.get(map.get("籍贯_市")));
+        }
+        map.put("现住址",CITY_MAP.get(map.get("现住址_省")) +CITY_MAP.get(map.get("现住址_市")) + CITY_MAP.get(map.get("现住址_县")) + map.get("现住址其它"));
+        if(StringUtil.isEmpty(String.valueOf(map.get("出生日期")).replaceAll("[\u4e00-\u9fa5]","").trim())){
+            map.put("出生日期","");
+        }
+        if(!YWDateUtils.isDate(String.valueOf(map.get("入院时间")),"yyyy年MM月dd日 HH时mm分")){
+            map.put("入院日期","");
+        }
+        if(!YWDateUtils.isDate(String.valueOf(map.get("出院时间")),"yyyy年MM月dd日 HH时mm分")){
+            map.put("出院时间","");
+        }
+        return map;
+    }
+
 }

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 3247 - 0
src/main/resources/cityCode.json