diff --git a/platform-operate-api/src/main/java/com/lyms/hospitalapi/zcfy/ConnTools.java b/platform-operate-api/src/main/java/com/lyms/hospitalapi/zcfy/ConnTools.java index 9bfefd3..5d507d2 100644 --- a/platform-operate-api/src/main/java/com/lyms/hospitalapi/zcfy/ConnTools.java +++ b/platform-operate-api/src/main/java/com/lyms/hospitalapi/zcfy/ConnTools.java @@ -14,6 +14,12 @@ public class ConnTools { private static String hisUser = "lyms1"; private static String hisPassword = "lyms"; + private static String fmDirverClassName = "oracle.jdbc.driver.OracleDriver"; + private static String fmUrl = "jdbc:oracle:thin:@192.168.30.103:1521:crds3db"; + private static String fmUser = "lymsfm"; + private static String fmPassword = "lyms123"; + + public static Connection makeHisConnection() { Connection conn = null; try { @@ -29,4 +35,24 @@ public class ConnTools { return conn; } + /** + * 诸城分娩连接源 + * @return + */ + public static Connection makeFmConnection() { + Connection conn = null; + try { + Class.forName(fmDirverClassName); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + try { + conn = DriverManager.getConnection(fmUrl, fmUser, fmPassword); + } catch (SQLException e) { + e.printStackTrace(); + } + return conn; + } + + } diff --git a/platform-operate-api/src/main/java/com/lyms/hospitalapi/zcfy/ZcfyFmService.java b/platform-operate-api/src/main/java/com/lyms/hospitalapi/zcfy/ZcfyFmService.java new file mode 100644 index 0000000..b240d63 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/hospitalapi/zcfy/ZcfyFmService.java @@ -0,0 +1,671 @@ +package com.lyms.hospitalapi.zcfy; + +/** + * Created by Administrator on 2018/1/3. + */ + +import com.lyms.hospitalapi.dzfy.DzfyHisService; +import com.lyms.hospitalapi.dzfy.Fm; +import com.lyms.hospitalapi.qhdfy.FmItem; +import com.lyms.platform.biz.service.PatientsService; +import com.lyms.platform.common.enums.*; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.ExceptionUtils; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.operate.web.facade.BabyBookbuildingFacade; +import com.lyms.platform.operate.web.facade.MatDeliverFacade; +import com.lyms.platform.operate.web.request.BabyBookbuildingAddRequest; +import com.lyms.platform.operate.web.request.MatDeliverAddRequest; +import com.lyms.platform.permission.model.Users; +import com.lyms.platform.permission.model.UsersQuery; +import com.lyms.platform.permission.service.UsersService; +import com.lyms.platform.pojo.MaternalDeliverModel; +import com.lyms.platform.pojo.Patients; +import com.lyms.platform.query.PatientsQuery; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.BeanListHandler; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.sql.Connection; +import java.text.DecimalFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * Created by gengxiaokai on 2017/11/23. + */ +@Service("zcfyFmService") +public class ZcfyFmService { + + @Autowired + private PatientsService patientsService; + + @Autowired + private MatDeliverFacade matDeliverFacade; + + @Autowired + private UsersService usersService; + + @Autowired + private BabyBookbuildingFacade babyBookbuildingFacade; + + @Autowired + private DzfyHisService dzfyHisService; + + private static Map ONE_ENUMS = new HashMap<>(); + + private static Map babyMap = new HashMap<>(); + + private static final String HOSPITALID = "216"; + static { + ONE_ENUMS.put(0, "长"); + ONE_ENUMS.put(1, "次"); + ONE_ENUMS.put(2, "三"); + ONE_ENUMS.put(3, "四"); + ONE_ENUMS.put(4, "五"); + ONE_ENUMS.put(5, "六"); + ONE_ENUMS.put(6, "七"); + + + List b1 = new ArrayList<>(); + b1.add("长女"); + b1.add("次女"); + babyMap.put("00", b1); + + List b2 = new ArrayList<>(); + b2.add("长子"); + b2.add("次子"); + babyMap.put("11", b2); + + List b3 = new ArrayList<>(); + b3.add("之子"); + b3.add("之女"); + + List b4 = new ArrayList<>(); + b4.add("之女"); + b4.add("之子"); + babyMap.put("01", b4); + babyMap.put("10", b3); + List b5 = new ArrayList<>(); + b5.add("之子"); + List b6 = new ArrayList<>(); + b6.add("之女"); + + babyMap.put("1", b5); + babyMap.put("0", b6); + } + + public void fmTimerWork() { + SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date end = new Date(new Date().getTime()-1000*60*60); + Date start = new Date(end.getTime()-1000*60*60*2); + String startStr = fmt.format(start); + String endStr = fmt.format(end); + System.out.println("start=" + startStr + "end=" + endStr); + //queryFmPatient(startStr, endStr, null); + } + + public void syncByPhone(String startStr,String endStr,String phone) { + queryFmPatient(startStr, endStr, phone); + } + + + public void queryFmPatient(String start,String end,String phone) { + + String cloumns = " ID as ID,\n" + + " 住院编号 as BHNUM,\n" + + " 就诊卡号 as VCCARDNO,\n" + + " 手机号码 as PHONE,\n" + + " 姓名 as NAME,\n" + + " 身份证号 as IDCARD,\n" + + " CREATED as CREATED,\t\n" + + " CONVERT(char(19),婴儿产出时日,120) as BABY_DELIVERY_TIME,\n" + + " 婴儿性别 as BABY_SEX,\n" + + " 孕周 as DUE_WEEK,\n" + + // " DUE_DAY as DUE_DAY,\n" + + " 胎次 as FETUS_NUM,\n" + + " 窒息 as BABY_ASPHYXIAM,\n" + + " CONVERT(int,left(体重,len(体重)-1)) as BABY_WEIGHT,\n" + + " CONVERT(int,left(身长,len(身长)-2)) as BABY_HEIGHT,\n" + + " CONVERT(int,left(Apgar评分1,len(Apgar评分1)-1)) as BABY_APGAR_SCORE_ONE,\n" + + " CONVERT(int,left(Apgar评分5,len(Apgar评分5)-1)) as BABY_APGAR_SCORE_FIVE,\n" + + " CONVERT(int,left(Apgar评分10,len(Apgar评分10)-1)) as BABY_APGAR_SCORE_TEN,\n" + + " 妊娠结局 as BABY_PREGNANCY_OUT,\n" + + " 分娩方式 as TMCSIDE,\n" + + // " TMCTYPE as TMCTYPE,\n" + + " 产妇离开产室情况 as MATERNAL_INFO,\n" + + " 会阴切开术 as PERINEAL_CONDITION,\n" + + //" 失血量 as SH_LOSE_BLOOD,\n" + + " 失血量 as sxl,\n" + + // " TH_LOSE_BLOOD as TH_LOSE_BLOOD,\n" + + // " 接生者 as DELIVER_DOCTOR,\n" + + // " 产程第一期 as PROD_PROCESS_ONE,\n" + + " 产程第一期 as ccOne,\n" + + // " 第二期 as PROD_PROCESS_TWO,\n" + + " 第二期 as ccTwo,\n" + + // " 第三期 as PROD_PROCESS_THREE,\n" + + " 第三期 as ccThree,\n" + + //" 总计 as TOTAL_PROCESS,\n" + + " 总计 as total,\n" + + " CONVERT(int,胎盘数量) as PLACENTA_NUM,\n" + + //" DELIVER_HOSPITAL as DELIVER_HOSPITAL,\n" + + " 产妇居住地址 as ADDR,\n"+ + " 接生者 as DELIVER_DOCTOR"; + + + Connection conn = com.lyms.hospitalapi.llfy.ConnTools.makeHisConnection(); + QueryRunner queryRunner = new QueryRunner(); + SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + + String sql ="select "+cloumns+" from xlhhis..v_fmjl where " + + " CREATED > CONVERT(char(19), '"+start+"', 120) and CREATED <= CONVERT(char(19), '"+start+"', 120)" ; + if (phone != null) + { + sql+=" and 手机号码 = '"+phone+"'"; + } + List list = queryRunner.query(conn, sql, new BeanListHandler(Fm.class)); + ExceptionUtils.catchException("size====" + list.size()); + + /*List list=new ArrayList(); + list.add(fm1);*/ + if(CollectionUtils.isNotEmpty(list)){ + + for(Fm fm:list){ + System.out.println("fm=" + fm.toString()); + int a = 0;//用来判断是否建了儿童档案,如果建了儿童档案就不保存分娩记录 + int count = 0; + List users = new ArrayList(); + String id = fm.getID();//获取所有的孕妇ID,方便孕妇产下双胞胎而用 + + //用来查询这个孕妇分娩的最近日期的sql + String dateSql = "select max(CONVERT(char(19),CREATED,120)) as babyDate from xlhhis..v_fmjl where " + + " ID='"+id+"'" ; + + //获取到这个孕妇的最近的分娩日期 + List dateList = queryRunner.query(conn, dateSql, new BeanListHandler(Fm.class)); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(fmt.parse(dateList.get(0).getBabyDate())); + calendar.add(Calendar.DAY_OF_MONTH, -1); + Date sDate = calendar.getTime(); + String startDate = fmt.format(sDate); + String endDate = dateList.get(0).getBabyDate(); + + //查询这个孕妇最近日期所有分娩记录的sql + String allSql = "select "+cloumns+" from xlhhis..v_fmjl where " + + " CREATED > CONVERT(char(19),'"+startDate+"',120) and CREATED <= CONVERT(char(19),'"+endDate+"',120)" + + " and ID='"+id+"'" ; + + //查出这个ID对应孕妇在这个时间段的分娩记录 + List allList = queryRunner.query(conn, allSql, new BeanListHandler(Fm.class)); + + /*List allList = new ArrayList(); + allList.add(fm);*/ + + Date dueDate = null; + List babies = new ArrayList<>(); + MatDeliverAddRequest deliverAddRequest = new MatDeliverAddRequest(); + for(Fm allFm:allList){ + + if ("死胎".equals(allFm.getBABY_PREGNANCY_OUT())) + { + continue; + } + if (StringUtils.isEmpty(allFm.getPHONE()) && StringUtils.isEmpty(allFm.getIDCARD())) + { + continue; + } + + //将中间字段的值整理赋值到正式字段中 + int sxl = allFm.getSxl().length(); + allFm.setSH_LOSE_BLOOD(Integer.parseInt(allFm.getSxl().substring(0,sxl-2)));//失血量 + + String[] oneShi = allFm.getCcOne().split("时"); + int one = Integer.parseInt(oneShi[0])*60; + String[] oneFen = oneShi[1].split("分"); + allFm.setPROD_PROCESS_ONE(one+Integer.parseInt(oneFen[0]));//第一产程 + + String[] twoShi = allFm.getCcTwo().split("时"); + int two = Integer.parseInt(twoShi[0])*60; + String[] twoFen = twoShi[1].split("分"); + allFm.setPROD_PROCESS_TWO(two+Integer.parseInt(twoFen[0]));//第二产程 + + String[] threeShi = allFm.getCcThree().split("时"); + int three = Integer.parseInt(threeShi[0])*60; + String[] threeFen = threeShi[1].split("分"); + allFm.setPROD_PROCESS_THREE(three+Integer.parseInt(threeFen[0]));//第三产程 + + String[] totalShi = allFm.getTotal().split("时"); + int total = Integer.parseInt(totalShi[0])*60; + String[] totalFen = totalShi[1].split("分"); + allFm.setTOTAL_PROCESS(String.valueOf(total+Integer.parseInt(totalFen[0])));//总产程 + + + PatientsQuery query = new PatientsQuery(); + query.setYn(YnEnums.YES.getId()); + query.setType(1); //孕妇 + query.setDueStatus(0); //未终止妊娠 + String[] strs = new String[]{allFm.getPHONE(),allFm.getIDCARD()}; + query.setPc(strs); + + //查询该孕妇是否在孕产婴系统中建档 + List patientses = patientsService.queryPatient(query); + Patients patient = new Patients(); + if(CollectionUtils.isNotEmpty(patientses)){ + ExceptionUtils.catchException("patientses"+patientses); + patient = patientses.get(0); + UsersQuery usersQuery = new UsersQuery(); + usersQuery.setYn(YnEnums.YES.getId()); + usersQuery.setOrgId(new Integer(Integer.parseInt(HOSPITALID))); + usersQuery.setName("产房"); + users = usersService.queryUsers(usersQuery); + + if (CollectionUtils.isNotEmpty(users) && users.get(0).getId() != null) { + + Date dateTime = fmt.parse(allFm.getBABY_DELIVERY_TIME()); + if(dateTime!=null){ + if (!com.lyms.platform.common.utils.StringUtils.isNotEmpty(allFm.getBABY_DELIVERY_TIME().toString())) { + continue; + }else{ + dueDate = dateTime; + } + }else{ + continue; + } + + Map> map = new HashMap<>(); + Map map1 = new HashMap<>(); + Map map2 = new HashMap<>(); + Map map3 = new HashMap<>(); + Map totalMap = new HashMap<>(); + + Integer prod_Process_One = allFm.getPROD_PROCESS_ONE(); + Integer prod_Process_Two = allFm.getPROD_PROCESS_TWO(); + Integer prod_Process_Three = allFm.getPROD_PROCESS_THREE(); + if(prod_Process_One!=null){ + map1.put("h",String.valueOf(prod_Process_One.intValue()/60)); + map1.put("m",String.valueOf(prod_Process_One.intValue()%60)); + map.put("one", map1); + } + if(prod_Process_Two!=null){ + map2.put("h",String.valueOf(prod_Process_Two.intValue()/60)); + map2.put("m",String.valueOf(prod_Process_Two.intValue()%60)); + map.put("two",map2); + } + if(prod_Process_Three!=null){ + map3.put("h",String.valueOf(prod_Process_Three.intValue()/60)); + map3.put("m",String.valueOf(prod_Process_Three.intValue()%60)); + map.put("three",map3); + } + + int hProcess = Integer.parseInt(allFm.getTOTAL_PROCESS())/60;//总产程小时数 + int mProcess = Integer.parseInt(allFm.getTOTAL_PROCESS())%60;//总产程分钟数 + totalMap.put("h",String.valueOf(hProcess)); + totalMap.put("m",String.valueOf(mProcess)); + + deliverAddRequest.setProdprocess(map); + deliverAddRequest.setTotalprocess(totalMap); + deliverAddRequest.setDeliverDoctor(allFm.getDELIVER_DOCTOR()); + deliverAddRequest.setDueDate(DateUtil.getyyyy_MM_dd(dueDate)); + deliverAddRequest.setParentId(patient.getId()); + deliverAddRequest.setPid(patient.getPid()); + deliverAddRequest.setOperationCause("-"); + String week = ""; + if (StringUtils.isNotEmpty(allFm.getDUE_WEEK())) { + + week = allFm.getDUE_WEEK() + "周"; + if (StringUtils.isNotEmpty(allFm.getDUE_WEEK()) && StringUtils.isNotEmpty(allFm.getDUE_DAY())) + { + week += allFm.getDUE_DAY() + "天"; + } + + deliverAddRequest.setDueWeek(week); + } + + deliverAddRequest.setTireNumber(allFm.getFETUS_NUM());// 胎数(之前赋值为死值1) + Integer placenta_Num = allFm.getPLACENTA_NUM(); + if(placenta_Num!=null){ + deliverAddRequest.setPlacenta(allFm.getPLACENTA_NUM().toString());// 胎盘(之前赋值为死值1) + } + if ("完好".equals(allFm.getPERINEAL_CONDITION()) || "".equals(allFm.getPERINEAL_CONDITION())) { + deliverAddRequest.setPerinealCondition("full"); + } else if ("会阴切开".equals(allFm.getPERINEAL_CONDITION()) || "侧切".equals(allFm.getPERINEAL_CONDITION())) { + deliverAddRequest.setPerinealCondition("split"); + } + + if ("一度裂伤".equals(allFm.getPERINEAL_CONDITION())) { + deliverAddRequest.setSiLielevel(1); + } else if ("二度裂伤".equals(allFm.getPERINEAL_CONDITION())) { + deliverAddRequest.setSiLielevel(2); + } else if ("三度裂伤".equals(allFm.getPERINEAL_CONDITION())) { + deliverAddRequest.setSiLielevel(3); + } + + Integer th_Lose = allFm.getTH_LOSE_BLOOD(); + if(th_Lose!=null){ + if (StringUtils.isNotEmpty(allFm.getTH_LOSE_BLOOD().toString())) { + deliverAddRequest.settHloseBloodL(Double.parseDouble(allFm.getTH_LOSE_BLOOD().toString())); + } + } + + Map deliveryMode = new HashMap(); //分娩方式 + + String fmfs = ""; + if (allFm.getDELIVERY_MODE() != null && "剖宫产".equals(allFm.getDELIVERY_MODE())) + { + fmfs = FmTypeEnums.O1.getId(); + } + else + { + fmfs = FmTypeEnums.O.getId(); + } + deliveryMode.put("fmfs",fmfs); + deliverAddRequest.setDeliveryMode(deliveryMode); + //胎盘信息 + List extPlacentas = new ArrayList<>(); + MaternalDeliverModel.ExtPlacenta extPlacenta = new MaternalDeliverModel.ExtPlacenta(); + String tpmcType = ""; //胎盘娩出方式 + if ("手术产".equals(allFm.getTMCTYPE()) || "手取胎盘".equals(allFm.getTMCTYPE())) { + tpmcType = TpmcTypeEnums.O2.getId(); + } else if ("自然产出".equals(allFm.getTMCTYPE()) || "自然娩出".equals(allFm.getTMCTYPE())) { + tpmcType = TpmcTypeEnums.O.getId(); + } + extPlacenta.setTpmcType(tpmcType); + extPlacentas.add(extPlacenta); + deliverAddRequest.setExtPlacentas(extPlacentas); + + + //儿童 + MatDeliverAddRequest.Baby baby = new MatDeliverAddRequest.Baby(); + Map as = new HashMap<>(); + Integer pf1 = allFm.getBABY_APGAR_SCORE_ONE(); + Integer pf5 = allFm.getBABY_APGAR_SCORE_FIVE(); + Integer pf10 = allFm.getBABY_APGAR_SCORE_TEN(); + if(pf1!=null){ + as.put("pf1", allFm.getBABY_APGAR_SCORE_ONE().toString()); + } + if(pf5!=null){ + as.put("pf5", allFm.getBABY_APGAR_SCORE_FIVE().toString()); + } + if(pf10!=null){ + as.put("pf10", allFm.getBABY_APGAR_SCORE_TEN().toString()); + } + + + baby.setApgarScore(as); + baby.setBabyGender("男".equals(allFm.getBABY_SEX()) ? "1" : "0"); + Integer babyHeight = allFm.getBABY_HEIGHT(); + Integer babyWeight = allFm.getBABY_WEIGHT(); + Integer baby_Asphyxiam = allFm.getBABY_ASPHYXIAM(); + if(babyHeight!=null){ + baby.setBabyHeight(allFm.getBABY_HEIGHT().toString());//新生儿生长 + } + if(babyWeight!=null){ + baby.setBabyWeight(allFm.getBABY_WEIGHT().toString());//新生儿重量 + } + if(baby_Asphyxiam!=null){ + baby.setAsphyxiaM(allFm.getBABY_ASPHYXIAM().toString()); //窒息分钟 + } + + baby.setDeformity((allFm.getBABY_DEFORMITY()==null?0:1)); //畸形 0非畸形 1畸形 + + String baby_Pregnancy_Out = allFm.getBABY_PREGNANCY_OUT(); + if(baby_Pregnancy_Out!=null && StringUtils.isNotEmpty(baby_Pregnancy_Out)){ + baby.setPregnancyOut(RenShenJieJuEnums.getIdByName(allFm.getBABY_PREGNANCY_OUT())); // 妊娠结局 + } + + baby.setDueTime(fmt.format(dueDate));//分娩时间 + babies.add(baby); + + } + }else{ + a=1; + //乐陵服务器有分娩记录,但是在这边系统没有对应孕妇 取分娩信息建档儿童数据 + List names = buildBabyName(allList); + + Date dateTime = fmt.parse(allFm.getBABY_DELIVERY_TIME()); + if(dateTime!=null){ + if (!com.lyms.platform.common.utils.StringUtils.isNotEmpty(allFm.getBABY_DELIVERY_TIME().toString())) { + continue; + }else{ + dueDate = dateTime; + } + } + + //String babyName = allFm.getNAME()+("男".equals(allFm.getBABY_SEX()) ? "之子" : "之女"); + String babyName = allFm.getNAME()+names.get(count).toString(); + FmItem fmitem=new FmItem(); + fmitem.setCcqk(allFm.getBABY_PREGNANCY_OUT()); + fmitem.setYexb(allFm.getBABY_SEX()); + fmitem.setRc(allFm.getDUE_WEEK()); + fmitem.setFmfs(allFm.getDELIVERY_MODE()); + Integer fetus_Num = allFm.getFETUS_NUM(); + if(fetus_Num!=null){ + fmitem.setDjt(allFm.getFETUS_NUM().toString()); + } + fmitem.setCjc(""); + Integer babyHeight = allFm.getBABY_HEIGHT(); + Integer babyWeight = allFm.getBABY_WEIGHT(); + if(babyHeight!=null){ + fmitem.setSc(allFm.getBABY_HEIGHT().toString()); + } + if(babyWeight!=null){ + fmitem.setTz(allFm.getBABY_WEIGHT().toString()); + } + Integer pf1 = allFm.getBABY_APGAR_SCORE_ONE(); + Integer pf5 = allFm.getBABY_APGAR_SCORE_FIVE(); + Integer pf10 = allFm.getBABY_APGAR_SCORE_TEN(); + if(pf1!=null){ + fmitem.setYfz(allFm.getBABY_APGAR_SCORE_ONE().toString()); + } + if(pf5!=null){ + fmitem.setWfz(allFm.getBABY_APGAR_SCORE_FIVE().toString()); + } + if(pf10!=null){ + fmitem.setSfz(allFm.getBABY_APGAR_SCORE_TEN().toString()); + } + fmitem.setSfgw(""); + Integer baby_Deformity = allFm.getBABY_DEFORMITY(); + if(baby_Deformity!=null){ + fmitem.setJx(allFm.getBABY_DEFORMITY().toString()); + } + count+=1; + buildBaby(fmitem, patient,allFm, dueDate, babyName); + + } + } + + if(a==0){ + deliverAddRequest.setBabies(babies); + deliverAddRequest.setFmHospital(HOSPITALID); //设置为德州妇幼 + ExceptionUtils.catchException("deliverAddRequest===" + deliverAddRequest); + if(users!=null && users.size()>0){ + matDeliverFacade.addOrUpdateMatDeliver(deliverAddRequest, users.get(0).getId()); + } + } + } + } + DbUtils.closeQuietly(conn); + } catch (Exception e) { + ExceptionUtils.catchException(e, "sql执行异常"); + e.printStackTrace(); + } finally { + DbUtils.closeQuietly(conn); + } + } + + private List buildBabyName(List items) { + String id = ""; + if (items.size() > 2) { + int boyCount = 0; + int girlCount = 0; + List l = new ArrayList<>(); + for (int i = 0; i < items.size(); i++) { + Fm item = items.get(i); + if (org.apache.commons.lang.StringUtils.isNotEmpty(item.getBABY_SEX())) { + if ("男".equals(item.getBABY_SEX())) { + l.add(ONE_ENUMS.get(boyCount) + "子"); + boyCount++; + } else if ("女".equals(item.getBABY_SEX())) { + l.add(ONE_ENUMS.get(girlCount) + "女"); + girlCount++; + } + } + } + return l; + } else { + for (int i = 0; i < items.size(); i++) { + Fm item = items.get(i); + if (org.apache.commons.lang.StringUtils.isNotEmpty(item.getBABY_SEX())) { + if ("男".equals(item.getBABY_SEX())) + { + id += "1"; + } + else if ("女".equals(item.getBABY_SEX())) + { + id += "0"; + } + + } + } + return babyMap.get(id); + } + } + + public void buildBaby(FmItem item,Patients patInfo,Fm fm, Date dueDate, String babyName) + { + try{ + + ExceptionUtils.catchException("buildBaby===="); + + if ("死产".equals(fm.getBABY_PREGNANCY_OUT())) + { + return; + } + + UsersQuery usersQuery = new UsersQuery(); + usersQuery.setYn(YnEnums.YES.getId()); + usersQuery.setName("产房"); + usersQuery.setOrgId(new Integer(Integer.parseInt(HOSPITALID))); + List users = usersService.queryUsers(usersQuery); + + BabyBookbuildingAddRequest request = new BabyBookbuildingAddRequest(); + request.setHospitalId(HOSPITALID); + + request.setMommyName(fm.getNAME()); //母亲姓名 + Date bir = patInfo.getBirth(); + if(bir!=null){ + try { + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); + Date birth = format.parse(bir.toString()); + format = new SimpleDateFormat("yyyy-MM-dd"); + request.setMommyBirthday(format.format(birth)); + }catch (ParseException e) + { + ExceptionUtils.catchException(e,"孕妇生日解析异常"); + } + } + + if (org.apache.commons.lang.StringUtils.isNotEmpty(fm.getIDCARD())) + { + request.setMommyCertificateTypeId("70ae1d93-2964-46bc-83fa-bec9ff605b1c"); //证件类型 (身份证号码) + request.setMommyCertificateNum(fm.getIDCARD()); //证件号 + } + else if (StringUtils.isNotEmpty(fm.getPHONE())) + { + request.setMommyCertificateTypeId("57e1dcd3f0f02e7ca519d6c6"); //证件类型 (手机号码) + request.setMommyCertificateNum(fm.getPHONE()); //证件号 + } + + request.setMommyPhone(fm.getPHONE()); + + request.setBabyName(babyName); + request.setSex("男".equals(item.getYexb()) ? 1 : 0); + + request.setBabyBirthday(DateUtil.getyyyy_MM_dd(dueDate)); //生日 + + if (StringUtils.isNotEmpty(fm.getDUE_WEEK())) { + String week = fm.getDUE_WEEK(); + + try { + request.setDueWeek(Integer.parseInt(week)); //分娩孕周 + }catch (Exception e) + { + + } + } + + String fmfs = ""; + if (fm.getDELIVERY_MODE() != null && "剖宫产".equals(fm.getDELIVERY_MODE())) + { + fmfs = FmTypeEnums.O1.getId(); + } + else + { + fmfs = FmTypeEnums.O.getId(); + } + + request.setDueType(fmfs);//分娩方式 + //request.setFetusCount(item.getDjt()); //第几胎 + //request.setDueCount(item.getCjc());//第几产 + Integer weight = fm.getBABY_WEIGHT(); + Integer height = fm.getBABY_HEIGHT(); + if(weight!=null){ + DecimalFormat df = new DecimalFormat("#.00"); + double w = Double.parseDouble(weight.toString()); + request.setBabyWeight(df.format(w/1000)); //体重 + } + if(height!=null){ + request.setBabyHeight(height.toString()); //身长 + } + + Map map = new HashMap<>(); + Integer pf1 = fm.getBABY_APGAR_SCORE_ONE(); + Integer pf5 = fm.getBABY_APGAR_SCORE_FIVE(); + Integer pf10 = fm.getBABY_APGAR_SCORE_TEN(); + if(pf1!=null){ + map.put("pf1", pf1.toString()); + } + if(pf5!=null){ + map.put("pf5", pf5.toString()); + } + if(pf10!=null){ + map.put("pf10", pf10.toString()); + } + + request.setApgarScore(map); + request.setDeliverOrg(HOSPITALID); + + request.setBuildDoctor(users.get(0).getId() + ""); + request.setBuildDate(DateUtil.getyyyy_MM_dd(dueDate)); + //request.setHighRisk("是".equals(item.getSfgw()) ? 1 : 0); ////是否高危 0 非高危 1高危 + request.setMalformation((fm.getBABY_DEFORMITY() == null ? 0 : 1)); //畸形 0非畸形 1畸形 + //request.setMalformation("无".equals(item.getJx()) ? 0 : 1); //畸形 0非畸形 1畸形 + + request.setServiceType(ServiceTypeEnums.STANDARD_SERVICE.getId()); //标准服务 + request.setServiceStatus(ServiceStatusEnums.STANDARD_OPEN.getId()); //开通 + + /*if (patInfo != null && StringUtils.isNotEmpty(fm.getBHNUM())) + { + Map diags = dzfyHisService.queryHisBabyDiagnosis(fm.getBHNUM()); + if (diags != null && diags.size() > 0) + { + request.setBlNo(fm.getBHNUM()); + request.setBabyDiagnosis(diags.get("diagnosisItem") == null ? "" : diags.get("diagnosisItem").toString()); + } + }*/ + babyBookbuildingFacade.addBabyBookbuilding(request, users.get(0).getId()); + + }catch (Exception e) + { + ExceptionUtils.catchException(e, "buildBaby exception"); + e.printStackTrace(); + } + } + + +}