|
@ -27,10 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* Created by yeshijie on 2017/6/6.
|
|
@ -106,81 +103,14 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
}
|
|
|
Patient patient = patientDao.findByCode(patientCode);
|
|
|
try{
|
|
|
//请求预建卡接口
|
|
|
String resp = jwMaternalChildService.getEhrMaternalPreFirstExamRecord(patient.getIdcard(),hospital);
|
|
|
JSONObject preJson = JSONObject.parseObject(resp);
|
|
|
JSONArray preData = null;
|
|
|
if(preJson.getInteger("status")==200){
|
|
|
preData = preJson.getJSONObject("data").getJSONArray("DATA");
|
|
|
if(preData!=null&&preData.size()>0){
|
|
|
for (int i=0;i<preData.size();i++){
|
|
|
JSONObject planJson = new JSONObject();
|
|
|
JSONObject pregnancy = preData.getJSONObject(i);
|
|
|
String PREGNANCY_NO = pregnancy.getString("PREGNANCY_NO");//智业产检号
|
|
|
String END_MANNER = pregnancy.getString("END_MANNER");//妊娠终止方式
|
|
|
String END_TIME = pregnancy.getString("END_TIME");//结束妊娠
|
|
|
String MENSES_LAST = pregnancy.getString("MENSES_LAST");//末次月经
|
|
|
Date dueday = DateUtil.getDueDate(DateUtil.strToDateLong(MENSES_LAST));//预产期
|
|
|
planJson.put("pregnancyNo",PREGNANCY_NO);
|
|
|
planJson.put("endManner",END_MANNER);
|
|
|
planJson.put("endTime",END_TIME);
|
|
|
planJson.put("mensesLast",MENSES_LAST);
|
|
|
planJson.put("expectedTime",DateUtil.dateToStrLong(dueday));
|
|
|
Date date = new Date();
|
|
|
|
|
|
List<PrenatalInspectorPlan> plans = prenatalInspectorPlanDao.findByPatient(patientCode);
|
|
|
if(plans==null||plans.size()==0){//判断是否已经生成产检记录
|
|
|
//预建卡还没产检,有产检就会生成产检记录,建卡接口就会有数据
|
|
|
Long days = DateUtil.getDays(dueday,date);
|
|
|
// days = days>365?0:days;//老早前的测试数据处理
|
|
|
List<PrenatalInspectorPlanLibrary> libraries = prenatalInspectorPlanLibraryDao.findByDays(days);
|
|
|
plans = new ArrayList<>();
|
|
|
PrenatalInspectorPlan plan = null;
|
|
|
for (PrenatalInspectorPlanLibrary library:libraries){
|
|
|
plan = new PrenatalInspectorPlan();
|
|
|
plan.setInspectionPhase(library.getInspectionPhase());
|
|
|
plan.setStatus("0");
|
|
|
plan.setPatient(patientCode);
|
|
|
plan.setCzrq(date);
|
|
|
plan.setDel("1");
|
|
|
plan.setCheckItem(library.getCheckItem());
|
|
|
// plan.setInspectionCode(PREGNANCY_NO);//产检号
|
|
|
plan.setInspectionTime(DateUtil.getPrenatalInspectorDate(dueday,-library.getEndDay().intValue()));
|
|
|
// plan.setInspectionEndTime(DateUtil.getPrenatalInspectorDate(lastMenstrualDate,library.getEndDay().intValue()));
|
|
|
// plan.setInspectionStartTime(DateUtil.getPrenatalInspectorDate(dueday,-library.getEndDay().intValue()));
|
|
|
plan.setName(library.getName());
|
|
|
plan.setThisFocus(library.getThisFocus());
|
|
|
plan.setThisNote(library.getThisNote());
|
|
|
|
|
|
plans.add(plan);
|
|
|
}
|
|
|
if (plans.size()>0){
|
|
|
prenatalInspectorPlanDao.save(plans);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//计算距离下次产检时间
|
|
|
Long nextExamDay = 0l;
|
|
|
for (PrenatalInspectorPlan plan:plans) {
|
|
|
Long temp = DateUtil.getDays(plan.getInspectionTime(),date);
|
|
|
if(nextExamDay==0||nextExamDay>temp){
|
|
|
nextExamDay = temp;
|
|
|
}
|
|
|
}
|
|
|
planJson.put("plans",plans);//待产检列表
|
|
|
planJson.put("nextExamDay",nextExamDay);//距离下次产检天数
|
|
|
planJson.put("precontractOrgName",null);//产床医院
|
|
|
re.add(planJson);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
boolean checkFlag = true;//是否查询预建卡接口。有建卡记录且建卡记录有结束妊娠才查询预建卡
|
|
|
String response = jwMaternalChildService.getEhrMaternalFirstExamRecord(patient.getIdcard(),hospital);
|
|
|
JSONObject json = JSONObject.parseObject(response);
|
|
|
JSONArray data = null;
|
|
|
if(json.getInteger("status")==200){
|
|
|
data = json.getJSONObject("data").getJSONArray("DATA");
|
|
|
}
|
|
|
Map<String,String> map = new HashMap<>();//存储产检号,用于去除预建卡信息中重复记录
|
|
|
if(data!=null&&data.size()>0){//有建卡信息
|
|
|
for (int i=0;i<data.size();i++) {
|
|
|
JSONObject planJson = new JSONObject();
|
|
@ -199,8 +129,9 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
planJson.put("mensesLast",MENSES_LAST);
|
|
|
planJson.put("expectedTime",EXPECTED_TIME);
|
|
|
Date date = new Date();
|
|
|
map.put("PREGNANCY_NO","PREGNANCY_NO");
|
|
|
if(StringUtils.isBlank(END_TIME)){
|
|
|
|
|
|
checkFlag = checkFlag?false:checkFlag;
|
|
|
//未结束妊娠,生成待产检计划
|
|
|
List<PrenatalInspectorPlan> plans = prenatalInspectorPlanDao.findByPatient(patientCode);
|
|
|
boolean flag = false;
|
|
@ -274,6 +205,86 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//请求预建卡接口
|
|
|
if(checkFlag){
|
|
|
String resp = jwMaternalChildService.getEhrMaternalPreFirstExamRecord(patient.getIdcard(),hospital);
|
|
|
JSONObject preJson = JSONObject.parseObject(resp);
|
|
|
JSONArray preData = null;
|
|
|
if(preJson.getInteger("status")==200){
|
|
|
preData = preJson.getJSONObject("data").getJSONArray("DATA");
|
|
|
if(preData!=null&&preData.size()>0){
|
|
|
JSONArray rep = new JSONArray();
|
|
|
for (int i=0;i<preData.size();i++){
|
|
|
JSONObject planJson = new JSONObject();
|
|
|
JSONObject pregnancy = preData.getJSONObject(i);
|
|
|
String PREGNANCY_NO = pregnancy.getString("PREGNANCY_NO");//智业产检号
|
|
|
if(map.containsKey(PREGNANCY_NO)){
|
|
|
continue;//去重
|
|
|
}
|
|
|
|
|
|
String END_MANNER = pregnancy.getString("END_MANNER");//妊娠终止方式
|
|
|
String END_TIME = pregnancy.getString("END_TIME");//结束妊娠
|
|
|
String MENSES_LAST = pregnancy.getString("MENSES_LAST");//末次月经
|
|
|
Date dueday = DateUtil.getDueDate(DateUtil.strToDateLong(MENSES_LAST));//预产期
|
|
|
planJson.put("pregnancyNo",PREGNANCY_NO);
|
|
|
planJson.put("endManner",END_MANNER);
|
|
|
planJson.put("endTime",END_TIME);
|
|
|
planJson.put("mensesLast",MENSES_LAST);
|
|
|
planJson.put("expectedTime",DateUtil.dateToStrLong(dueday));
|
|
|
Date date = new Date();
|
|
|
|
|
|
List<PrenatalInspectorPlan> plans = prenatalInspectorPlanDao.findByPatient(patientCode);
|
|
|
if(plans==null||plans.size()==0){//判断是否已经生成产检记录
|
|
|
//预建卡还没产检,有产检就会生成产检记录,建卡接口就会有数据
|
|
|
Long days = DateUtil.getDays(dueday,date);
|
|
|
List<PrenatalInspectorPlanLibrary> libraries = prenatalInspectorPlanLibraryDao.findByDays(days);
|
|
|
plans = new ArrayList<>();
|
|
|
PrenatalInspectorPlan plan = null;
|
|
|
for (PrenatalInspectorPlanLibrary library:libraries){
|
|
|
plan = new PrenatalInspectorPlan();
|
|
|
plan.setInspectionPhase(library.getInspectionPhase());
|
|
|
plan.setStatus("0");
|
|
|
plan.setPatient(patientCode);
|
|
|
plan.setCzrq(date);
|
|
|
plan.setDel("1");
|
|
|
plan.setCheckItem(library.getCheckItem());
|
|
|
plan.setInspectionTime(DateUtil.getPrenatalInspectorDate(dueday,-library.getEndDay().intValue()));
|
|
|
plan.setName(library.getName());
|
|
|
plan.setThisFocus(library.getThisFocus());
|
|
|
plan.setThisNote(library.getThisNote());
|
|
|
|
|
|
plans.add(plan);
|
|
|
}
|
|
|
if (plans.size()>0){
|
|
|
prenatalInspectorPlanDao.save(plans);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//计算距离下次产检时间
|
|
|
Long nextExamDay = 0l;
|
|
|
for (PrenatalInspectorPlan plan:plans) {
|
|
|
Long temp = DateUtil.getDays(plan.getInspectionTime(),date);
|
|
|
if(nextExamDay==0||nextExamDay>temp){
|
|
|
nextExamDay = temp;
|
|
|
}
|
|
|
}
|
|
|
planJson.put("plans",plans);//待产检列表
|
|
|
planJson.put("nextExamDay",nextExamDay);//距离下次产检天数
|
|
|
planJson.put("precontractOrgName",null);//产床医院
|
|
|
rep.add(planJson);
|
|
|
}
|
|
|
|
|
|
//重新排序
|
|
|
if(rep.size()>0&&re.size()>0){
|
|
|
for (int i=0;i<re.size();i++){
|
|
|
rep.add(re.getJSONObject(i));
|
|
|
}
|
|
|
return rep;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
@ -548,7 +559,11 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
if(preJson.getInteger("status")==200){
|
|
|
preData = preJson.getJSONObject("data").getJSONArray("DATA");
|
|
|
if(preData!=null&&preData.size()>0){
|
|
|
return "-2";
|
|
|
JSONObject temp = preData.getJSONObject(0);
|
|
|
String END_MANNER = temp.getString("END_MANNER");//妊娠终止方式
|
|
|
if(StringUtils.isBlank(END_MANNER)){
|
|
|
return "-2";
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}catch (Exception e){
|
|
@ -556,7 +571,6 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
return "-3";
|
|
|
}
|
|
|
|
|
|
|
|
|
//获取团队长
|
|
|
Doctor doctor = doctorDao.findByAdminTeamId(signFamily.getAdminTeamId());
|
|
|
preCard.setDoctor(doctor.getCode());
|