Commit 4159b6121eb2151e1f6554d265b54c017330594c

Authored by gengxiaokai
1 parent d4c1f8d21e

诸城妇幼分娩接口

Showing 2 changed files with 697 additions and 0 deletions

platform-operate-api/src/main/java/com/lyms/hospitalapi/zcfy/ConnTools.java View file @ 4159b61
... ... @@ -14,6 +14,12 @@
14 14 private static String hisUser = "lyms1";
15 15 private static String hisPassword = "lyms";
16 16  
  17 + private static String fmDirverClassName = "oracle.jdbc.driver.OracleDriver";
  18 + private static String fmUrl = "jdbc:oracle:thin:@192.168.30.103:1521:crds3db";
  19 + private static String fmUser = "lymsfm";
  20 + private static String fmPassword = "lyms123";
  21 +
  22 +
17 23 public static Connection makeHisConnection() {
18 24 Connection conn = null;
19 25 try {
... ... @@ -28,6 +34,26 @@
28 34 }
29 35 return conn;
30 36 }
  37 +
  38 + /**
  39 + * 诸城分娩连接源
  40 + * @return
  41 + */
  42 + public static Connection makeFmConnection() {
  43 + Connection conn = null;
  44 + try {
  45 + Class.forName(fmDirverClassName);
  46 + } catch (ClassNotFoundException e) {
  47 + e.printStackTrace();
  48 + }
  49 + try {
  50 + conn = DriverManager.getConnection(fmUrl, fmUser, fmPassword);
  51 + } catch (SQLException e) {
  52 + e.printStackTrace();
  53 + }
  54 + return conn;
  55 + }
  56 +
31 57  
32 58 }
platform-operate-api/src/main/java/com/lyms/hospitalapi/zcfy/ZcfyFmService.java View file @ 4159b61
  1 +package com.lyms.hospitalapi.zcfy;
  2 +
  3 +/**
  4 + * Created by Administrator on 2018/1/3.
  5 + */
  6 +
  7 +import com.lyms.hospitalapi.dzfy.DzfyHisService;
  8 +import com.lyms.hospitalapi.dzfy.Fm;
  9 +import com.lyms.hospitalapi.qhdfy.FmItem;
  10 +import com.lyms.platform.biz.service.PatientsService;
  11 +import com.lyms.platform.common.enums.*;
  12 +import com.lyms.platform.common.utils.DateUtil;
  13 +import com.lyms.platform.common.utils.ExceptionUtils;
  14 +import com.lyms.platform.common.utils.StringUtils;
  15 +import com.lyms.platform.operate.web.facade.BabyBookbuildingFacade;
  16 +import com.lyms.platform.operate.web.facade.MatDeliverFacade;
  17 +import com.lyms.platform.operate.web.request.BabyBookbuildingAddRequest;
  18 +import com.lyms.platform.operate.web.request.MatDeliverAddRequest;
  19 +import com.lyms.platform.permission.model.Users;
  20 +import com.lyms.platform.permission.model.UsersQuery;
  21 +import com.lyms.platform.permission.service.UsersService;
  22 +import com.lyms.platform.pojo.MaternalDeliverModel;
  23 +import com.lyms.platform.pojo.Patients;
  24 +import com.lyms.platform.query.PatientsQuery;
  25 +import org.apache.commons.collections.CollectionUtils;
  26 +import org.apache.commons.dbutils.DbUtils;
  27 +import org.apache.commons.dbutils.QueryRunner;
  28 +import org.apache.commons.dbutils.handlers.BeanListHandler;
  29 +import org.springframework.beans.factory.annotation.Autowired;
  30 +import org.springframework.stereotype.Service;
  31 +
  32 +import java.sql.Connection;
  33 +import java.text.DecimalFormat;
  34 +import java.text.ParseException;
  35 +import java.text.SimpleDateFormat;
  36 +import java.util.*;
  37 +
  38 +/**
  39 + * Created by gengxiaokai on 2017/11/23.
  40 + */
  41 +@Service("zcfyFmService")
  42 +public class ZcfyFmService {
  43 +
  44 + @Autowired
  45 + private PatientsService patientsService;
  46 +
  47 + @Autowired
  48 + private MatDeliverFacade matDeliverFacade;
  49 +
  50 + @Autowired
  51 + private UsersService usersService;
  52 +
  53 + @Autowired
  54 + private BabyBookbuildingFacade babyBookbuildingFacade;
  55 +
  56 + @Autowired
  57 + private DzfyHisService dzfyHisService;
  58 +
  59 + private static Map<Integer, String> ONE_ENUMS = new HashMap<>();
  60 +
  61 + private static Map<String, List> babyMap = new HashMap<>();
  62 +
  63 + private static final String HOSPITALID = "216";
  64 + static {
  65 + ONE_ENUMS.put(0, "长");
  66 + ONE_ENUMS.put(1, "次");
  67 + ONE_ENUMS.put(2, "三");
  68 + ONE_ENUMS.put(3, "四");
  69 + ONE_ENUMS.put(4, "五");
  70 + ONE_ENUMS.put(5, "六");
  71 + ONE_ENUMS.put(6, "七");
  72 +
  73 +
  74 + List<String> b1 = new ArrayList<>();
  75 + b1.add("长女");
  76 + b1.add("次女");
  77 + babyMap.put("00", b1);
  78 +
  79 + List<String> b2 = new ArrayList<>();
  80 + b2.add("长子");
  81 + b2.add("次子");
  82 + babyMap.put("11", b2);
  83 +
  84 + List<String> b3 = new ArrayList<>();
  85 + b3.add("之子");
  86 + b3.add("之女");
  87 +
  88 + List<String> b4 = new ArrayList<>();
  89 + b4.add("之女");
  90 + b4.add("之子");
  91 + babyMap.put("01", b4);
  92 + babyMap.put("10", b3);
  93 + List<String> b5 = new ArrayList<>();
  94 + b5.add("之子");
  95 + List<String> b6 = new ArrayList<>();
  96 + b6.add("之女");
  97 +
  98 + babyMap.put("1", b5);
  99 + babyMap.put("0", b6);
  100 + }
  101 +
  102 + public void fmTimerWork() {
  103 + SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  104 + Date end = new Date(new Date().getTime()-1000*60*60);
  105 + Date start = new Date(end.getTime()-1000*60*60*2);
  106 + String startStr = fmt.format(start);
  107 + String endStr = fmt.format(end);
  108 + System.out.println("start=" + startStr + "end=" + endStr);
  109 + //queryFmPatient(startStr, endStr, null);
  110 + }
  111 +
  112 + public void syncByPhone(String startStr,String endStr,String phone) {
  113 + queryFmPatient(startStr, endStr, phone);
  114 + }
  115 +
  116 +
  117 + public void queryFmPatient(String start,String end,String phone) {
  118 +
  119 + String cloumns = " ID as ID,\n" +
  120 + " 住院编号 as BHNUM,\n" +
  121 + " 就诊卡号 as VCCARDNO,\n" +
  122 + " 手机号码 as PHONE,\n" +
  123 + " 姓名 as NAME,\n" +
  124 + " 身份证号 as IDCARD,\n" +
  125 + " CREATED as CREATED,\t\n" +
  126 + " CONVERT(char(19),婴儿产出时日,120) as BABY_DELIVERY_TIME,\n" +
  127 + " 婴儿性别 as BABY_SEX,\n" +
  128 + " 孕周 as DUE_WEEK,\n" +
  129 + // " DUE_DAY as DUE_DAY,\n" +
  130 + " 胎次 as FETUS_NUM,\n" +
  131 + " 窒息 as BABY_ASPHYXIAM,\n" +
  132 + " CONVERT(int,left(体重,len(体重)-1)) as BABY_WEIGHT,\n" +
  133 + " CONVERT(int,left(身长,len(身长)-2)) as BABY_HEIGHT,\n" +
  134 + " CONVERT(int,left(Apgar评分1,len(Apgar评分1)-1)) as BABY_APGAR_SCORE_ONE,\n" +
  135 + " CONVERT(int,left(Apgar评分5,len(Apgar评分5)-1)) as BABY_APGAR_SCORE_FIVE,\n" +
  136 + " CONVERT(int,left(Apgar评分10,len(Apgar评分10)-1)) as BABY_APGAR_SCORE_TEN,\n" +
  137 + " 妊娠结局 as BABY_PREGNANCY_OUT,\n" +
  138 + " 分娩方式 as TMCSIDE,\n" +
  139 + // " TMCTYPE as TMCTYPE,\n" +
  140 + " 产妇离开产室情况 as MATERNAL_INFO,\n" +
  141 + " 会阴切开术 as PERINEAL_CONDITION,\n" +
  142 + //" 失血量 as SH_LOSE_BLOOD,\n" +
  143 + " 失血量 as sxl,\n" +
  144 + // " TH_LOSE_BLOOD as TH_LOSE_BLOOD,\n" +
  145 + // " 接生者 as DELIVER_DOCTOR,\n" +
  146 + // " 产程第一期 as PROD_PROCESS_ONE,\n" +
  147 + " 产程第一期 as ccOne,\n" +
  148 + // " 第二期 as PROD_PROCESS_TWO,\n" +
  149 + " 第二期 as ccTwo,\n" +
  150 + // " 第三期 as PROD_PROCESS_THREE,\n" +
  151 + " 第三期 as ccThree,\n" +
  152 + //" 总计 as TOTAL_PROCESS,\n" +
  153 + " 总计 as total,\n" +
  154 + " CONVERT(int,胎盘数量) as PLACENTA_NUM,\n" +
  155 + //" DELIVER_HOSPITAL as DELIVER_HOSPITAL,\n" +
  156 + " 产妇居住地址 as ADDR,\n"+
  157 + " 接生者 as DELIVER_DOCTOR";
  158 +
  159 +
  160 + Connection conn = com.lyms.hospitalapi.llfy.ConnTools.makeHisConnection();
  161 + QueryRunner queryRunner = new QueryRunner();
  162 + SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  163 + try {
  164 +
  165 + String sql ="select "+cloumns+" from xlhhis..v_fmjl where " +
  166 + " CREATED > CONVERT(char(19), '"+start+"', 120) and CREATED <= CONVERT(char(19), '"+start+"', 120)" ;
  167 + if (phone != null)
  168 + {
  169 + sql+=" and 手机号码 = '"+phone+"'";
  170 + }
  171 + List<Fm> list = queryRunner.query(conn, sql, new BeanListHandler<Fm>(Fm.class));
  172 + ExceptionUtils.catchException("size====" + list.size());
  173 +
  174 + /*List<Fm> list=new ArrayList<Fm>();
  175 + list.add(fm1);*/
  176 + if(CollectionUtils.isNotEmpty(list)){
  177 +
  178 + for(Fm fm:list){
  179 + System.out.println("fm=" + fm.toString());
  180 + int a = 0;//用来判断是否建了儿童档案,如果建了儿童档案就不保存分娩记录
  181 + int count = 0;
  182 + List<Users> users = new ArrayList<Users>();
  183 + String id = fm.getID();//获取所有的孕妇ID,方便孕妇产下双胞胎而用
  184 +
  185 + //用来查询这个孕妇分娩的最近日期的sql
  186 + String dateSql = "select max(CONVERT(char(19),CREATED,120)) as babyDate from xlhhis..v_fmjl where " +
  187 + " ID='"+id+"'" ;
  188 +
  189 + //获取到这个孕妇的最近的分娩日期
  190 + List<Fm> dateList = queryRunner.query(conn, dateSql, new BeanListHandler<Fm>(Fm.class));
  191 + Calendar calendar = Calendar.getInstance();
  192 + calendar.setTime(fmt.parse(dateList.get(0).getBabyDate()));
  193 + calendar.add(Calendar.DAY_OF_MONTH, -1);
  194 + Date sDate = calendar.getTime();
  195 + String startDate = fmt.format(sDate);
  196 + String endDate = dateList.get(0).getBabyDate();
  197 +
  198 + //查询这个孕妇最近日期所有分娩记录的sql
  199 + String allSql = "select "+cloumns+" from xlhhis..v_fmjl where " +
  200 + " CREATED > CONVERT(char(19),'"+startDate+"',120) and CREATED <= CONVERT(char(19),'"+endDate+"',120)" +
  201 + " and ID='"+id+"'" ;
  202 +
  203 + //查出这个ID对应孕妇在这个时间段的分娩记录
  204 + List<Fm> allList = queryRunner.query(conn, allSql, new BeanListHandler<Fm>(Fm.class));
  205 +
  206 + /*List<Fm> allList = new ArrayList<Fm>();
  207 + allList.add(fm);*/
  208 +
  209 + Date dueDate = null;
  210 + List<MatDeliverAddRequest.Baby> babies = new ArrayList<>();
  211 + MatDeliverAddRequest deliverAddRequest = new MatDeliverAddRequest();
  212 + for(Fm allFm:allList){
  213 +
  214 + if ("死胎".equals(allFm.getBABY_PREGNANCY_OUT()))
  215 + {
  216 + continue;
  217 + }
  218 + if (StringUtils.isEmpty(allFm.getPHONE()) && StringUtils.isEmpty(allFm.getIDCARD()))
  219 + {
  220 + continue;
  221 + }
  222 +
  223 + //将中间字段的值整理赋值到正式字段中
  224 + int sxl = allFm.getSxl().length();
  225 + allFm.setSH_LOSE_BLOOD(Integer.parseInt(allFm.getSxl().substring(0,sxl-2)));//失血量
  226 +
  227 + String[] oneShi = allFm.getCcOne().split("时");
  228 + int one = Integer.parseInt(oneShi[0])*60;
  229 + String[] oneFen = oneShi[1].split("分");
  230 + allFm.setPROD_PROCESS_ONE(one+Integer.parseInt(oneFen[0]));//第一产程
  231 +
  232 + String[] twoShi = allFm.getCcTwo().split("时");
  233 + int two = Integer.parseInt(twoShi[0])*60;
  234 + String[] twoFen = twoShi[1].split("分");
  235 + allFm.setPROD_PROCESS_TWO(two+Integer.parseInt(twoFen[0]));//第二产程
  236 +
  237 + String[] threeShi = allFm.getCcThree().split("时");
  238 + int three = Integer.parseInt(threeShi[0])*60;
  239 + String[] threeFen = threeShi[1].split("分");
  240 + allFm.setPROD_PROCESS_THREE(three+Integer.parseInt(threeFen[0]));//第三产程
  241 +
  242 + String[] totalShi = allFm.getTotal().split("时");
  243 + int total = Integer.parseInt(totalShi[0])*60;
  244 + String[] totalFen = totalShi[1].split("分");
  245 + allFm.setTOTAL_PROCESS(String.valueOf(total+Integer.parseInt(totalFen[0])));//总产程
  246 +
  247 +
  248 + PatientsQuery query = new PatientsQuery();
  249 + query.setYn(YnEnums.YES.getId());
  250 + query.setType(1); //孕妇
  251 + query.setDueStatus(0); //未终止妊娠
  252 + String[] strs = new String[]{allFm.getPHONE(),allFm.getIDCARD()};
  253 + query.setPc(strs);
  254 +
  255 + //查询该孕妇是否在孕产婴系统中建档
  256 + List<Patients> patientses = patientsService.queryPatient(query);
  257 + Patients patient = new Patients();
  258 + if(CollectionUtils.isNotEmpty(patientses)){
  259 + ExceptionUtils.catchException("patientses"+patientses);
  260 + patient = patientses.get(0);
  261 + UsersQuery usersQuery = new UsersQuery();
  262 + usersQuery.setYn(YnEnums.YES.getId());
  263 + usersQuery.setOrgId(new Integer(Integer.parseInt(HOSPITALID)));
  264 + usersQuery.setName("产房");
  265 + users = usersService.queryUsers(usersQuery);
  266 +
  267 + if (CollectionUtils.isNotEmpty(users) && users.get(0).getId() != null) {
  268 +
  269 + Date dateTime = fmt.parse(allFm.getBABY_DELIVERY_TIME());
  270 + if(dateTime!=null){
  271 + if (!com.lyms.platform.common.utils.StringUtils.isNotEmpty(allFm.getBABY_DELIVERY_TIME().toString())) {
  272 + continue;
  273 + }else{
  274 + dueDate = dateTime;
  275 + }
  276 + }else{
  277 + continue;
  278 + }
  279 +
  280 + Map<String, Map<String,String>> map = new HashMap<>();
  281 + Map<String, String> map1 = new HashMap<>();
  282 + Map<String, String> map2 = new HashMap<>();
  283 + Map<String, String> map3 = new HashMap<>();
  284 + Map<String, String> totalMap = new HashMap<>();
  285 +
  286 + Integer prod_Process_One = allFm.getPROD_PROCESS_ONE();
  287 + Integer prod_Process_Two = allFm.getPROD_PROCESS_TWO();
  288 + Integer prod_Process_Three = allFm.getPROD_PROCESS_THREE();
  289 + if(prod_Process_One!=null){
  290 + map1.put("h",String.valueOf(prod_Process_One.intValue()/60));
  291 + map1.put("m",String.valueOf(prod_Process_One.intValue()%60));
  292 + map.put("one", map1);
  293 + }
  294 + if(prod_Process_Two!=null){
  295 + map2.put("h",String.valueOf(prod_Process_Two.intValue()/60));
  296 + map2.put("m",String.valueOf(prod_Process_Two.intValue()%60));
  297 + map.put("two",map2);
  298 + }
  299 + if(prod_Process_Three!=null){
  300 + map3.put("h",String.valueOf(prod_Process_Three.intValue()/60));
  301 + map3.put("m",String.valueOf(prod_Process_Three.intValue()%60));
  302 + map.put("three",map3);
  303 + }
  304 +
  305 + int hProcess = Integer.parseInt(allFm.getTOTAL_PROCESS())/60;//总产程小时数
  306 + int mProcess = Integer.parseInt(allFm.getTOTAL_PROCESS())%60;//总产程分钟数
  307 + totalMap.put("h",String.valueOf(hProcess));
  308 + totalMap.put("m",String.valueOf(mProcess));
  309 +
  310 + deliverAddRequest.setProdprocess(map);
  311 + deliverAddRequest.setTotalprocess(totalMap);
  312 + deliverAddRequest.setDeliverDoctor(allFm.getDELIVER_DOCTOR());
  313 + deliverAddRequest.setDueDate(DateUtil.getyyyy_MM_dd(dueDate));
  314 + deliverAddRequest.setParentId(patient.getId());
  315 + deliverAddRequest.setPid(patient.getPid());
  316 + deliverAddRequest.setOperationCause("-");
  317 + String week = "";
  318 + if (StringUtils.isNotEmpty(allFm.getDUE_WEEK())) {
  319 +
  320 + week = allFm.getDUE_WEEK() + "周";
  321 + if (StringUtils.isNotEmpty(allFm.getDUE_WEEK()) && StringUtils.isNotEmpty(allFm.getDUE_DAY()))
  322 + {
  323 + week += allFm.getDUE_DAY() + "天";
  324 + }
  325 +
  326 + deliverAddRequest.setDueWeek(week);
  327 + }
  328 +
  329 + deliverAddRequest.setTireNumber(allFm.getFETUS_NUM());// 胎数(之前赋值为死值1)
  330 + Integer placenta_Num = allFm.getPLACENTA_NUM();
  331 + if(placenta_Num!=null){
  332 + deliverAddRequest.setPlacenta(allFm.getPLACENTA_NUM().toString());// 胎盘(之前赋值为死值1)
  333 + }
  334 + if ("完好".equals(allFm.getPERINEAL_CONDITION()) || "".equals(allFm.getPERINEAL_CONDITION())) {
  335 + deliverAddRequest.setPerinealCondition("full");
  336 + } else if ("会阴切开".equals(allFm.getPERINEAL_CONDITION()) || "侧切".equals(allFm.getPERINEAL_CONDITION())) {
  337 + deliverAddRequest.setPerinealCondition("split");
  338 + }
  339 +
  340 + if ("一度裂伤".equals(allFm.getPERINEAL_CONDITION())) {
  341 + deliverAddRequest.setSiLielevel(1);
  342 + } else if ("二度裂伤".equals(allFm.getPERINEAL_CONDITION())) {
  343 + deliverAddRequest.setSiLielevel(2);
  344 + } else if ("三度裂伤".equals(allFm.getPERINEAL_CONDITION())) {
  345 + deliverAddRequest.setSiLielevel(3);
  346 + }
  347 +
  348 + Integer th_Lose = allFm.getTH_LOSE_BLOOD();
  349 + if(th_Lose!=null){
  350 + if (StringUtils.isNotEmpty(allFm.getTH_LOSE_BLOOD().toString())) {
  351 + deliverAddRequest.settHloseBloodL(Double.parseDouble(allFm.getTH_LOSE_BLOOD().toString()));
  352 + }
  353 + }
  354 +
  355 + Map deliveryMode = new HashMap(); //分娩方式
  356 +
  357 + String fmfs = "";
  358 + if (allFm.getDELIVERY_MODE() != null && "剖宫产".equals(allFm.getDELIVERY_MODE()))
  359 + {
  360 + fmfs = FmTypeEnums.O1.getId();
  361 + }
  362 + else
  363 + {
  364 + fmfs = FmTypeEnums.O.getId();
  365 + }
  366 + deliveryMode.put("fmfs",fmfs);
  367 + deliverAddRequest.setDeliveryMode(deliveryMode);
  368 + //胎盘信息
  369 + List<MaternalDeliverModel.ExtPlacenta> extPlacentas = new ArrayList<>();
  370 + MaternalDeliverModel.ExtPlacenta extPlacenta = new MaternalDeliverModel.ExtPlacenta();
  371 + String tpmcType = ""; //胎盘娩出方式
  372 + if ("手术产".equals(allFm.getTMCTYPE()) || "手取胎盘".equals(allFm.getTMCTYPE())) {
  373 + tpmcType = TpmcTypeEnums.O2.getId();
  374 + } else if ("自然产出".equals(allFm.getTMCTYPE()) || "自然娩出".equals(allFm.getTMCTYPE())) {
  375 + tpmcType = TpmcTypeEnums.O.getId();
  376 + }
  377 + extPlacenta.setTpmcType(tpmcType);
  378 + extPlacentas.add(extPlacenta);
  379 + deliverAddRequest.setExtPlacentas(extPlacentas);
  380 +
  381 +
  382 + //儿童
  383 + MatDeliverAddRequest.Baby baby = new MatDeliverAddRequest.Baby();
  384 + Map<String, String> as = new HashMap<>();
  385 + Integer pf1 = allFm.getBABY_APGAR_SCORE_ONE();
  386 + Integer pf5 = allFm.getBABY_APGAR_SCORE_FIVE();
  387 + Integer pf10 = allFm.getBABY_APGAR_SCORE_TEN();
  388 + if(pf1!=null){
  389 + as.put("pf1", allFm.getBABY_APGAR_SCORE_ONE().toString());
  390 + }
  391 + if(pf5!=null){
  392 + as.put("pf5", allFm.getBABY_APGAR_SCORE_FIVE().toString());
  393 + }
  394 + if(pf10!=null){
  395 + as.put("pf10", allFm.getBABY_APGAR_SCORE_TEN().toString());
  396 + }
  397 +
  398 +
  399 + baby.setApgarScore(as);
  400 + baby.setBabyGender("男".equals(allFm.getBABY_SEX()) ? "1" : "0");
  401 + Integer babyHeight = allFm.getBABY_HEIGHT();
  402 + Integer babyWeight = allFm.getBABY_WEIGHT();
  403 + Integer baby_Asphyxiam = allFm.getBABY_ASPHYXIAM();
  404 + if(babyHeight!=null){
  405 + baby.setBabyHeight(allFm.getBABY_HEIGHT().toString());//新生儿生长
  406 + }
  407 + if(babyWeight!=null){
  408 + baby.setBabyWeight(allFm.getBABY_WEIGHT().toString());//新生儿重量
  409 + }
  410 + if(baby_Asphyxiam!=null){
  411 + baby.setAsphyxiaM(allFm.getBABY_ASPHYXIAM().toString()); //窒息分钟
  412 + }
  413 +
  414 + baby.setDeformity((allFm.getBABY_DEFORMITY()==null?0:1)); //畸形 0非畸形 1畸形
  415 +
  416 + String baby_Pregnancy_Out = allFm.getBABY_PREGNANCY_OUT();
  417 + if(baby_Pregnancy_Out!=null && StringUtils.isNotEmpty(baby_Pregnancy_Out)){
  418 + baby.setPregnancyOut(RenShenJieJuEnums.getIdByName(allFm.getBABY_PREGNANCY_OUT())); // 妊娠结局
  419 + }
  420 +
  421 + baby.setDueTime(fmt.format(dueDate));//分娩时间
  422 + babies.add(baby);
  423 +
  424 + }
  425 + }else{
  426 + a=1;
  427 + //乐陵服务器有分娩记录,但是在这边系统没有对应孕妇 取分娩信息建档儿童数据
  428 + List<String> names = buildBabyName(allList);
  429 +
  430 + Date dateTime = fmt.parse(allFm.getBABY_DELIVERY_TIME());
  431 + if(dateTime!=null){
  432 + if (!com.lyms.platform.common.utils.StringUtils.isNotEmpty(allFm.getBABY_DELIVERY_TIME().toString())) {
  433 + continue;
  434 + }else{
  435 + dueDate = dateTime;
  436 + }
  437 + }
  438 +
  439 + //String babyName = allFm.getNAME()+("男".equals(allFm.getBABY_SEX()) ? "之子" : "之女");
  440 + String babyName = allFm.getNAME()+names.get(count).toString();
  441 + FmItem fmitem=new FmItem();
  442 + fmitem.setCcqk(allFm.getBABY_PREGNANCY_OUT());
  443 + fmitem.setYexb(allFm.getBABY_SEX());
  444 + fmitem.setRc(allFm.getDUE_WEEK());
  445 + fmitem.setFmfs(allFm.getDELIVERY_MODE());
  446 + Integer fetus_Num = allFm.getFETUS_NUM();
  447 + if(fetus_Num!=null){
  448 + fmitem.setDjt(allFm.getFETUS_NUM().toString());
  449 + }
  450 + fmitem.setCjc("");
  451 + Integer babyHeight = allFm.getBABY_HEIGHT();
  452 + Integer babyWeight = allFm.getBABY_WEIGHT();
  453 + if(babyHeight!=null){
  454 + fmitem.setSc(allFm.getBABY_HEIGHT().toString());
  455 + }
  456 + if(babyWeight!=null){
  457 + fmitem.setTz(allFm.getBABY_WEIGHT().toString());
  458 + }
  459 + Integer pf1 = allFm.getBABY_APGAR_SCORE_ONE();
  460 + Integer pf5 = allFm.getBABY_APGAR_SCORE_FIVE();
  461 + Integer pf10 = allFm.getBABY_APGAR_SCORE_TEN();
  462 + if(pf1!=null){
  463 + fmitem.setYfz(allFm.getBABY_APGAR_SCORE_ONE().toString());
  464 + }
  465 + if(pf5!=null){
  466 + fmitem.setWfz(allFm.getBABY_APGAR_SCORE_FIVE().toString());
  467 + }
  468 + if(pf10!=null){
  469 + fmitem.setSfz(allFm.getBABY_APGAR_SCORE_TEN().toString());
  470 + }
  471 + fmitem.setSfgw("");
  472 + Integer baby_Deformity = allFm.getBABY_DEFORMITY();
  473 + if(baby_Deformity!=null){
  474 + fmitem.setJx(allFm.getBABY_DEFORMITY().toString());
  475 + }
  476 + count+=1;
  477 + buildBaby(fmitem, patient,allFm, dueDate, babyName);
  478 +
  479 + }
  480 + }
  481 +
  482 + if(a==0){
  483 + deliverAddRequest.setBabies(babies);
  484 + deliverAddRequest.setFmHospital(HOSPITALID); //设置为德州妇幼
  485 + ExceptionUtils.catchException("deliverAddRequest===" + deliverAddRequest);
  486 + if(users!=null && users.size()>0){
  487 + matDeliverFacade.addOrUpdateMatDeliver(deliverAddRequest, users.get(0).getId());
  488 + }
  489 + }
  490 + }
  491 + }
  492 + DbUtils.closeQuietly(conn);
  493 + } catch (Exception e) {
  494 + ExceptionUtils.catchException(e, "sql执行异常");
  495 + e.printStackTrace();
  496 + } finally {
  497 + DbUtils.closeQuietly(conn);
  498 + }
  499 + }
  500 +
  501 + private List buildBabyName(List<Fm> items) {
  502 + String id = "";
  503 + if (items.size() > 2) {
  504 + int boyCount = 0;
  505 + int girlCount = 0;
  506 + List<String> l = new ArrayList<>();
  507 + for (int i = 0; i < items.size(); i++) {
  508 + Fm item = items.get(i);
  509 + if (org.apache.commons.lang.StringUtils.isNotEmpty(item.getBABY_SEX())) {
  510 + if ("男".equals(item.getBABY_SEX())) {
  511 + l.add(ONE_ENUMS.get(boyCount) + "子");
  512 + boyCount++;
  513 + } else if ("女".equals(item.getBABY_SEX())) {
  514 + l.add(ONE_ENUMS.get(girlCount) + "女");
  515 + girlCount++;
  516 + }
  517 + }
  518 + }
  519 + return l;
  520 + } else {
  521 + for (int i = 0; i < items.size(); i++) {
  522 + Fm item = items.get(i);
  523 + if (org.apache.commons.lang.StringUtils.isNotEmpty(item.getBABY_SEX())) {
  524 + if ("男".equals(item.getBABY_SEX()))
  525 + {
  526 + id += "1";
  527 + }
  528 + else if ("女".equals(item.getBABY_SEX()))
  529 + {
  530 + id += "0";
  531 + }
  532 +
  533 + }
  534 + }
  535 + return babyMap.get(id);
  536 + }
  537 + }
  538 +
  539 + public void buildBaby(FmItem item,Patients patInfo,Fm fm, Date dueDate, String babyName)
  540 + {
  541 + try{
  542 +
  543 + ExceptionUtils.catchException("buildBaby====");
  544 +
  545 + if ("死产".equals(fm.getBABY_PREGNANCY_OUT()))
  546 + {
  547 + return;
  548 + }
  549 +
  550 + UsersQuery usersQuery = new UsersQuery();
  551 + usersQuery.setYn(YnEnums.YES.getId());
  552 + usersQuery.setName("产房");
  553 + usersQuery.setOrgId(new Integer(Integer.parseInt(HOSPITALID)));
  554 + List<Users> users = usersService.queryUsers(usersQuery);
  555 +
  556 + BabyBookbuildingAddRequest request = new BabyBookbuildingAddRequest();
  557 + request.setHospitalId(HOSPITALID);
  558 +
  559 + request.setMommyName(fm.getNAME()); //母亲姓名
  560 + Date bir = patInfo.getBirth();
  561 + if(bir!=null){
  562 + try {
  563 + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
  564 + Date birth = format.parse(bir.toString());
  565 + format = new SimpleDateFormat("yyyy-MM-dd");
  566 + request.setMommyBirthday(format.format(birth));
  567 + }catch (ParseException e)
  568 + {
  569 + ExceptionUtils.catchException(e,"孕妇生日解析异常");
  570 + }
  571 + }
  572 +
  573 + if (org.apache.commons.lang.StringUtils.isNotEmpty(fm.getIDCARD()))
  574 + {
  575 + request.setMommyCertificateTypeId("70ae1d93-2964-46bc-83fa-bec9ff605b1c"); //证件类型 (身份证号码)
  576 + request.setMommyCertificateNum(fm.getIDCARD()); //证件号
  577 + }
  578 + else if (StringUtils.isNotEmpty(fm.getPHONE()))
  579 + {
  580 + request.setMommyCertificateTypeId("57e1dcd3f0f02e7ca519d6c6"); //证件类型 (手机号码)
  581 + request.setMommyCertificateNum(fm.getPHONE()); //证件号
  582 + }
  583 +
  584 + request.setMommyPhone(fm.getPHONE());
  585 +
  586 + request.setBabyName(babyName);
  587 + request.setSex("男".equals(item.getYexb()) ? 1 : 0);
  588 +
  589 + request.setBabyBirthday(DateUtil.getyyyy_MM_dd(dueDate)); //生日
  590 +
  591 + if (StringUtils.isNotEmpty(fm.getDUE_WEEK())) {
  592 + String week = fm.getDUE_WEEK();
  593 +
  594 + try {
  595 + request.setDueWeek(Integer.parseInt(week)); //分娩孕周
  596 + }catch (Exception e)
  597 + {
  598 +
  599 + }
  600 + }
  601 +
  602 + String fmfs = "";
  603 + if (fm.getDELIVERY_MODE() != null && "剖宫产".equals(fm.getDELIVERY_MODE()))
  604 + {
  605 + fmfs = FmTypeEnums.O1.getId();
  606 + }
  607 + else
  608 + {
  609 + fmfs = FmTypeEnums.O.getId();
  610 + }
  611 +
  612 + request.setDueType(fmfs);//分娩方式
  613 + //request.setFetusCount(item.getDjt()); //第几胎
  614 + //request.setDueCount(item.getCjc());//第几产
  615 + Integer weight = fm.getBABY_WEIGHT();
  616 + Integer height = fm.getBABY_HEIGHT();
  617 + if(weight!=null){
  618 + DecimalFormat df = new DecimalFormat("#.00");
  619 + double w = Double.parseDouble(weight.toString());
  620 + request.setBabyWeight(df.format(w/1000)); //体重
  621 + }
  622 + if(height!=null){
  623 + request.setBabyHeight(height.toString()); //身长
  624 + }
  625 +
  626 + Map<String,String> map = new HashMap<>();
  627 + Integer pf1 = fm.getBABY_APGAR_SCORE_ONE();
  628 + Integer pf5 = fm.getBABY_APGAR_SCORE_FIVE();
  629 + Integer pf10 = fm.getBABY_APGAR_SCORE_TEN();
  630 + if(pf1!=null){
  631 + map.put("pf1", pf1.toString());
  632 + }
  633 + if(pf5!=null){
  634 + map.put("pf5", pf5.toString());
  635 + }
  636 + if(pf10!=null){
  637 + map.put("pf10", pf10.toString());
  638 + }
  639 +
  640 + request.setApgarScore(map);
  641 + request.setDeliverOrg(HOSPITALID);
  642 +
  643 + request.setBuildDoctor(users.get(0).getId() + "");
  644 + request.setBuildDate(DateUtil.getyyyy_MM_dd(dueDate));
  645 + //request.setHighRisk("是".equals(item.getSfgw()) ? 1 : 0); ////是否高危 0 非高危 1高危
  646 + request.setMalformation((fm.getBABY_DEFORMITY() == null ? 0 : 1)); //畸形 0非畸形 1畸形
  647 + //request.setMalformation("无".equals(item.getJx()) ? 0 : 1); //畸形 0非畸形 1畸形
  648 +
  649 + request.setServiceType(ServiceTypeEnums.STANDARD_SERVICE.getId()); //标准服务
  650 + request.setServiceStatus(ServiceStatusEnums.STANDARD_OPEN.getId()); //开通
  651 +
  652 + /*if (patInfo != null && StringUtils.isNotEmpty(fm.getBHNUM()))
  653 + {
  654 + Map<String,Object> diags = dzfyHisService.queryHisBabyDiagnosis(fm.getBHNUM());
  655 + if (diags != null && diags.size() > 0)
  656 + {
  657 + request.setBlNo(fm.getBHNUM());
  658 + request.setBabyDiagnosis(diags.get("diagnosisItem") == null ? "" : diags.get("diagnosisItem").toString());
  659 + }
  660 + }*/
  661 + babyBookbuildingFacade.addBabyBookbuilding(request, users.get(0).getId());
  662 +
  663 + }catch (Exception e)
  664 + {
  665 + ExceptionUtils.catchException(e, "buildBaby exception");
  666 + e.printStackTrace();
  667 + }
  668 + }
  669 +
  670 +
  671 +}