Browse Source

病案首页添加3级地址

lighter 2 years ago
parent
commit
5a39e049a4

+ 25 - 0
src/main/java/thyyxxk/webserver/dao/his/casefrontsheet/CaseFrontSheetDao.java

@@ -3,6 +3,7 @@ package thyyxxk.webserver.dao.his.casefrontsheet;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.*;
 import thyyxxk.webserver.entity.casefrontsheet.*;
+import thyyxxk.webserver.entity.covid.Region;
 import thyyxxk.webserver.entity.dictionary.PureCodeName;
 
 import java.util.Date;
@@ -338,6 +339,13 @@ public interface CaseFrontSheetDao extends BaseMapper<CaseFrontsheetMain> {
             "where inpatient_no=#{bah}")
     void updateAPatientMi(CaseFrontsheetMain sheet);
 
+    @Update("update a_patient_mi set province_code=#{province},city_code=#{city},district_code=#{district} " +
+            "where inpatient_no=#{bah}")
+    void updateAddressCascader(@Param("bah") String bah,
+                               @Param("province") Integer province,
+                               @Param("city") Integer city,
+                               @Param("district") Integer district);
+
     @Update("update zy_actpatient set autopsy_mark=#{autopsy},clinic_diag_str=#{clinicDiagStr}, " +
             "diagnose_conform1=#{dc1},diagnose_conform2=#{dc2},diagnose_conform3=#{dc3}," +
             "diagnose_conform4=#{dc4}, diagnose_conform5=#{dc5}, operation=#{hasSurgery}," +
@@ -648,4 +656,21 @@ public interface CaseFrontSheetDao extends BaseMapper<CaseFrontsheetMain> {
 
     @Select("select rtrim(yb_code) as code, rtrim(yb_name) as name from zd_icd_code_new where code=#{code}")
     PureCodeName selectSiDiagByBaDiag(@Param("code") String code);
+
+    @Select("select province_code,city_code,district_code," +
+            "provinceName=(select name from t_region where code=province_code), " +
+            "cityName=(select name from t_region where code=city_code), " +
+            "districtName=(select name from t_region where code=district_code) " +
+            "from a_patient_mi where inpatient_no=#{bah}")
+    StandardAddressMember selectStandardAddressMember(@Param("bah") String bah);
+
+    @Select("select rtrim(social_no) from a_patient_mi where inpatient_no=#{bah}")
+    String selectSocialNo(@Param("bah") String bah);
+
+    @Select("select parent_code as code, name=(select t.name from t_region t where t.code=a.parent_code) " +
+            "from t_region a where code=#{region}")
+    Region selectParentRegion(@Param("region") Integer region);
+
+    @Select("select name from t_region where code=#{region}")
+    String selectRegionName(@Param("region") Integer region);
 }

+ 10 - 0
src/main/java/thyyxxk/webserver/entity/casefrontsheet/CaseFrontsheetMain.java

@@ -155,11 +155,21 @@ public class CaseFrontsheetMain implements Serializable {
      */
     private String marriage;
 
+    /**
+     * 三级地址代码
+     * */
+    private Integer[] standardAddress;
+
     /**
      * 现住址
      */
     private String livePlace;
 
+    /**
+     * 住址拼接
+     * */
+    private String livePlaceCombo;
+
     /**
      * 手机号
      */

+ 30 - 0
src/main/java/thyyxxk/webserver/entity/casefrontsheet/StandardAddressMember.java

@@ -0,0 +1,30 @@
+package thyyxxk.webserver.entity.casefrontsheet;
+
+import lombok.Data;
+
+@Data
+public class StandardAddressMember {
+    private Integer provinceCode;
+    private Integer cityCode;
+    private Integer districtCode;
+    private String provinceName;
+    private String cityName;
+    private String districtName;
+
+    public Integer[] makeStandardAddress() {
+        if (null == provinceCode) {
+            return null;
+        }
+        if (null == cityCode) {
+            return new Integer[]{provinceCode};
+        }
+        if (null == districtCode) {
+            return new Integer[]{provinceCode,cityCode};
+        }
+        return new Integer[]{provinceCode, cityCode, districtCode};
+    }
+
+    public String makeAddressCombo() {
+        return provinceName + cityName + districtName;
+    }
+}

+ 57 - 0
src/main/java/thyyxxk/webserver/service/casefrontsheet/CaseFrontSheetMainService.java

@@ -2,6 +2,7 @@ package thyyxxk.webserver.service.casefrontsheet;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import io.swagger.models.auth.In;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
@@ -15,6 +16,7 @@ import thyyxxk.webserver.dao.his.casefrontsheet.CaseFrontSheetDao;
 import thyyxxk.webserver.dao.his.casefrontsheet.SheetCreatedDao;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.casefrontsheet.*;
+import thyyxxk.webserver.entity.covid.Region;
 import thyyxxk.webserver.entity.dictionary.PureCodeName;
 import thyyxxk.webserver.service.externalhttp.PowersiSrvc;
 import thyyxxk.webserver.utils.*;
@@ -195,12 +197,19 @@ public class CaseFrontSheetMainService {
         CaseFrontsheetMain sheet;
         String bah = overview.getBah();
         Integer times = overview.getTimes();
+        StandardAddressMember standardAddressMember = getStandardAddressMember(bah);
         int fileStatus = overview.getFileStatus();
         if (fileStatus == 1) {
             sheet = dao.selectSignedSheetMain(bah, times);
             if (null != sheet) {
                 sheet.setDisdiagList(getSheetDisDiags(bah, times, fileStatus));
                 sheet.setSurgeryList(getSheetSurgeries(bah, times, fileStatus));
+                if (null != standardAddressMember) {
+                    sheet.setStandardAddress(standardAddressMember.makeStandardAddress());
+                    sheet.setLivePlaceCombo(standardAddressMember.makeAddressCombo() + sheet.getLivePlace());
+                } else {
+                    sheet.setLivePlaceCombo(sheet.getLivePlace());
+                }
                 if (sheet.getAge() == 0 && null == sheet.getAgeDays()) {
                     sheet.setAgeDays(DateUtil.calculateNewBornAge(sheet.getBirthDate(), sheet.getAdmissDate()));
                     dao.updateNewBornAge(bah, times, sheet.getAgeDays());
@@ -279,9 +288,48 @@ public class CaseFrontSheetMainService {
         }
         sheet.setDisdiagList(getSheetDisDiags(bah, times, fileStatus));
         sheet.setSurgeryList(getSheetSurgeries(bah, times, fileStatus));
+        if (null != standardAddressMember) {
+            sheet.setStandardAddress(standardAddressMember.makeStandardAddress());
+            sheet.setLivePlaceCombo(standardAddressMember.makeAddressCombo() + sheet.getLivePlace());
+        } else {
+            sheet.setLivePlaceCombo(sheet.getLivePlace());
+        }
         return ResultVoUtil.success(sheet);
     }
 
+    private StandardAddressMember getStandardAddressMember(String bah) {
+        StandardAddressMember member = dao.selectStandardAddressMember(bah);
+        if (null != member) {
+            return member;
+        }
+        String socialNo = dao.selectSocialNo(bah);
+        if (null == socialNo || socialNo.trim().length() < 15) {
+            return null;
+        }
+        Integer district;
+        try {
+            district = Integer.parseInt(socialNo.substring(0, 6));
+        } catch (Exception e) {
+            return null;
+        }
+        Region city = dao.selectParentRegion(district);
+        if (null == city) {
+            return null;
+        }
+        Region province = dao.selectParentRegion(city.getCode());
+        if (null == province) {
+            return null;
+        }
+        member = new StandardAddressMember();
+        member.setCityCode(city.getCode());
+        member.setCityName(city.getName());
+        member.setDistrictCode(district);
+        member.setDistrictName(dao.selectRegionName(district));
+        member.setProvinceCode(province.getCode());
+        member.setProvinceName(province.getName());
+        return member;
+    }
+
     private List<CaseFrontsheetDisdiag> getSheetDisDiags(String bah, int times, int status) {
         List<CaseFrontsheetDisdiag> disdiags = status == 1 ?
                 dao.selectSignedSheetDiags(bah, times) : dao.getDisdiags(bah, times);
@@ -330,6 +378,15 @@ public class CaseFrontSheetMainService {
         String bah = sheet.getBah();
         int times = sheet.getAdmissTimes();
         dao.updateAPatientMi(sheet);
+
+        Integer[] addrs = sheet.getStandardAddress();
+        if (null != addrs && addrs.length > 0) {
+            Integer province = addrs[0];
+            Integer city = addrs.length > 1 ? addrs[1] : null;
+            Integer district = addrs.length > 2 ? addrs[2] : null;
+            dao.updateAddressCascader(bah, province, city, district);
+        }
+
         dao.updateZyActPatient(bah, times, sheet.getAutopsy(), sheet.getDiagConform1(),
                 sheet.getDiagConform2(), sheet.getDiagConform3(), sheet.getDiagConform4(),
                 sheet.getDiagConform5(), sheet.getHasSurgery(), sheet.getPathologicDiagStr(),

+ 4 - 1
src/main/java/thyyxxk/webserver/service/casefrontsheet/VerifyCaseFrontSheet.java

@@ -99,8 +99,11 @@ public class VerifyCaseFrontSheet {
         if (StringUtil.invalidValue(info.getMarriage())) {
             array.add(new PureCodeName("marriage","患者婚姻状况不能为空!"));
         }
+        if (null == info.getStandardAddress() || info.getStandardAddress().length == 0 || null == info.getStandardAddress()[0]) {
+            array.add(new PureCodeName("livePlace1","患者现住址(省/市/区)不能为空!"));
+        }
         if (StringUtil.invalidValue(info.getLivePlace())) {
-            array.add(new PureCodeName("livePlace","患者现住址不能为空!"));
+            array.add(new PureCodeName("livePlace2","患者现住址(街道/小区/乡镇)不能为空!"));
         }
         try {
             byte[] livePlaceBytes = info.getLivePlace().getBytes("GBK");