|
@ -73,13 +73,7 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
json.put("name",plan.getName());
|
|
|
json.put("thisFoucs",plan.getThisFocus());
|
|
|
json.put("thisNote",plan.getThisNote());
|
|
|
if(plan.getInspectionTime()==null){
|
|
|
json.put("inspectionTime","");
|
|
|
}else {
|
|
|
json.put("inspectionTime",DateUtil.dateToStrShort(plan.getInspectionTime()));
|
|
|
}
|
|
|
json.put("inspectionEndTime",DateUtil.dateToStrShort(plan.getInspectionEndTime()));
|
|
|
json.put("inspectionStartTime",DateUtil.dateToStrShort(plan.getInspectionStartTime()));
|
|
|
json.put("inspectionTime",DateUtil.dateToStrShort(plan.getInspectionTime()));
|
|
|
|
|
|
jsonArray.add(json);
|
|
|
}
|
|
@ -107,7 +101,7 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
if(json.getInteger("status")==200){
|
|
|
data = json.getJSONObject("data").getJSONArray("DATA");
|
|
|
}
|
|
|
if(data!=null&&data.size()>0){
|
|
|
if(data!=null&&data.size()>0){//有建卡信息
|
|
|
for (int i=0;i<data.size();i++) {
|
|
|
JSONObject planJson = new JSONObject();
|
|
|
JSONObject pregnancy = data.getJSONObject(i);
|
|
@ -126,45 +120,41 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
planJson.put("expectedTime",EXPECTED_TIME);
|
|
|
Date date = new Date();
|
|
|
if(StringUtils.isBlank(END_TIME)){
|
|
|
|
|
|
//未结束妊娠,生成待产检计划
|
|
|
List<PrenatalInspectorPlan> plans = prenatalInspectorPlanDao.findByCode(PREGNANCY_NO);
|
|
|
if(plans==null||plans.size()==0){//判断是否已经生成产检记录
|
|
|
//获取最后一次检查时间-查询复检记录
|
|
|
String lastExamTime = getLastExamTime(patient.getIdcard(),hospital,PREGNANCY_NO);
|
|
|
if(StringUtils.isBlank(lastExamTime)){
|
|
|
lastExamTime = EXAM_TIME;
|
|
|
List<PrenatalInspectorPlan> plans = prenatalInspectorPlanDao.findByPatient(patientCode);
|
|
|
boolean flag = false;
|
|
|
if(plans==null||plans.size()==0){
|
|
|
flag = true;
|
|
|
}else {
|
|
|
String inspectionCode = plans.get(0).getInspectionCode();
|
|
|
if(StringUtils.isBlank(inspectionCode)){//有待产检计划,但是产检号为空,说明是预建卡生成的产检记录
|
|
|
flag = true;
|
|
|
//更新居民待产检计划,需要重新生成
|
|
|
prenatalInspectorPlanDao.updateStatus(patientCode);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Date lastMenstrualDate = DateUtil.strToDate(MENSES_LAST);
|
|
|
Long days = DateUtil.getDays(date,lastMenstrualDate);
|
|
|
days = days>365?0:days;//老早前的测试数据处理
|
|
|
if(flag){//判断是否已经生成产检记录
|
|
|
Date dueDay = DateUtil.strToDate(EXPECTED_TIME);
|
|
|
Long days = DateUtil.getDays(dueDay,date);
|
|
|
List<PrenatalInspectorPlanLibrary> libraries = prenatalInspectorPlanLibraryDao.findByDays(days);
|
|
|
plans = new ArrayList<>();
|
|
|
PrenatalInspectorPlan plan = null;
|
|
|
for (PrenatalInspectorPlanLibrary library:libraries){
|
|
|
Date startTime = DateUtil.getPrenatalInspectorDate(lastMenstrualDate,library.getStartDay().intValue());
|
|
|
Long temp = DateUtil.getDays(DateUtil.strToDateLong(lastExamTime),startTime);
|
|
|
if(temp>0){//说明已经产检
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
plan = new PrenatalInspectorPlan();
|
|
|
plan.setInspectionPhase(library.getInspectionPhase());
|
|
|
plan.setStatus("0");
|
|
|
plan.setPatient(patientCode);
|
|
|
plan.setCzrq(date);
|
|
|
plan.setCheckItem(library.getCheckItem());
|
|
|
plan.setDel("1");
|
|
|
plan.setInspectionCode(PREGNANCY_NO);//产检号
|
|
|
plan.setInspectionEndTime(DateUtil.getPrenatalInspectorDate(lastMenstrualDate,library.getEndDay().intValue()));
|
|
|
plan.setInspectionStartTime(startTime);
|
|
|
plan.setCheckItem(library.getCheckItem());
|
|
|
plan.setInspectionTime(DateUtil.getPrenatalInspectorDate(dueDay,-library.getEndDay().intValue()));
|
|
|
plan.setName(library.getName());
|
|
|
plan.setThisFocus(library.getThisFocus());
|
|
|
plan.setThisNote(library.getThisNote());
|
|
|
|
|
|
if("1".equals(plan.getInspectionPhase())&&signFamily!=null){
|
|
|
plan.setSignHospital(signFamily.getHospital());
|
|
|
}
|
|
|
|
|
|
plans.add(plan);
|
|
|
}
|
|
|
if (plans.size()>0){
|
|
@ -202,8 +192,76 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
}
|
|
|
re.add(planJson);
|
|
|
}
|
|
|
}
|
|
|
}else{
|
|
|
//没有建卡信息,请求预建卡接口
|
|
|
response = jwMaternalChildService.getEhrMaternalPreFirstExamRecord(patient.getIdcard(),hospital);
|
|
|
JSONObject preJson = JSONObject.parseObject(response);
|
|
|
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(date,plan.getInspectionStartTime());
|
|
|
if(nextExamDay==0||nextExamDay>temp){
|
|
|
nextExamDay = temp;
|
|
|
}
|
|
|
}
|
|
|
planJson.put("plans",plans);//待产检列表
|
|
|
planJson.put("nextExamDay",nextExamDay);//距离下次产检天数
|
|
|
planJson.put("precontractOrgName",null);//产床医院
|
|
|
re.add(planJson);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
@ -286,7 +344,7 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
}
|
|
|
if(data!=null&&data.size()>0){
|
|
|
JSONObject exam = data.getJSONObject(data.size()-1);
|
|
|
String PREGNANCY_WEEK = exam.getString("PREGNANCY_WEEK");//检查孕周
|
|
|
// String PREGNANCY_WEEK = exam.getString("PREGNANCY_WEEK");//检查孕周
|
|
|
String examTime = exam.getString("EXAM_TIME");//产检日期
|
|
|
re = examTime;
|
|
|
}
|
|
@ -382,13 +440,30 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
* 上传预建卡
|
|
|
* @param code
|
|
|
*/
|
|
|
public void uploadPreExam(String code){
|
|
|
public String uploadPreExam(String code){
|
|
|
String re = "";
|
|
|
try {
|
|
|
//上传预建卡
|
|
|
jwMaternalChildService.SaveEhrMaternalPreFirstExamRecord(code);
|
|
|
String response = jwMaternalChildService.SaveEhrMaternalPreFirstExamRecord(code);
|
|
|
JSONObject preJson = JSONObject.parseObject(response);
|
|
|
if(preJson.getInteger("status")!=200){
|
|
|
re = preJson.getString("msg");
|
|
|
}else {
|
|
|
JSONObject json = preJson.getJSONObject("data");
|
|
|
if("0".equals(json.getString("code"))){
|
|
|
re = json.getString("MESSAGE");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if(re.contains("身份证为空,请检查")){
|
|
|
re = "身份证为空,请检查";
|
|
|
}else if(re.contains("操作员为空,请检查")){
|
|
|
re = "操作员为空,请检查";
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return re;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@ -415,115 +490,59 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
String re = "";
|
|
|
//1、保存预建卡
|
|
|
Date date = new Date();
|
|
|
// Date lastMenstrualDate = preCard.getLastMenstrualDate();
|
|
|
Date lastMenstrualDate = preCard.getLastMenstrualDate();
|
|
|
Date dueDate = DateUtil.getDueDate(preCard.getLastMenstrualDate());
|
|
|
preCard.setDel("1");
|
|
|
preCard.setCode(getCode());
|
|
|
preCard.setCzrq(date);
|
|
|
preCard.setDueDate(DateUtil.getDueDate(preCard.getLastMenstrualDate()));//预产期
|
|
|
preCard.setDueDate(dueDate);//预产期
|
|
|
preCard.setStatus("0");
|
|
|
preCard.setEffective("");
|
|
|
preCard.setInspectionPhase("1");//检查阶段
|
|
|
preCard.setUploadStatus("0");//未上传
|
|
|
prenatalInspectorPreCardDao.save(preCard);
|
|
|
// String patient = preCard.getPatient();
|
|
|
String patient = preCard.getPatient();
|
|
|
|
|
|
//2.更新居民信息
|
|
|
//更新居民信息
|
|
|
// Patient p = patientDao.findByCode(patient);
|
|
|
// p.setName(preCard.getName());
|
|
|
// p.setSsc(preCard.getSsc());
|
|
|
// p.setBirthday(preCard.getBirthday());
|
|
|
// p.setMobile(preCard.getMobile());
|
|
|
|
|
|
return preCard.getCode();
|
|
|
|
|
|
//2、生成待产检计划(待产检计划由获取健康信息接口生成,关联产检计划)
|
|
|
// Long days = DateUtil.getDays(date,lastMenstrualDate);
|
|
|
// List<PrenatalInspectorPlanLibrary> libraries = prenatalInspectorPlanLibraryDao.findByDays(days);
|
|
|
// List<PrenatalInspectorPlan> plans = new ArrayList<>();
|
|
|
// PrenatalInspectorPlan plan = null;
|
|
|
// for (PrenatalInspectorPlanLibrary library:libraries){
|
|
|
// plan = new PrenatalInspectorPlan();
|
|
|
// plan.setInspectionPhase(library.getInspectionPhase());
|
|
|
// plan.setStatus("0");
|
|
|
// plan.setPatient(patient);
|
|
|
// plan.setCzrq(date);
|
|
|
// plan.setCheckItem(library.getCheckItem());
|
|
|
Long days = DateUtil.getDays(dueDate,date);
|
|
|
List<PrenatalInspectorPlanLibrary> libraries = prenatalInspectorPlanLibraryDao.findByDays(days);
|
|
|
List<PrenatalInspectorPlan> plans = new ArrayList<>();
|
|
|
PrenatalInspectorPlan plan = null;
|
|
|
for (PrenatalInspectorPlanLibrary library:libraries){
|
|
|
plan = new PrenatalInspectorPlan();
|
|
|
plan.setInspectionPhase(library.getInspectionPhase());
|
|
|
plan.setStatus("0");
|
|
|
plan.setPatient(patient);
|
|
|
plan.setCzrq(date);
|
|
|
plan.setDel("1");
|
|
|
plan.setCheckItem(library.getCheckItem());
|
|
|
// plan.setInspectionCode(preCard.getCode());
|
|
|
// plan.setInspectionEndTime(DateUtil.getPrenatalInspectorDate(lastMenstrualDate,library.getEndDay().intValue()));
|
|
|
// plan.setInspectionStartTime(DateUtil.getPrenatalInspectorDate(lastMenstrualDate,library.getStartDay().intValue()));
|
|
|
// plan.setName(library.getName());
|
|
|
// plan.setThisFocus(library.getThisFocus());
|
|
|
// plan.setThisNote(library.getThisNote());
|
|
|
//
|
|
|
plan.setInspectionTime(DateUtil.getPrenatalInspectorDate(dueDate,-library.getEndDay().intValue()));
|
|
|
plan.setName(library.getName());
|
|
|
plan.setThisFocus(library.getThisFocus());
|
|
|
plan.setThisNote(library.getThisNote());
|
|
|
|
|
|
// if("1".equals(plan.getInspectionPhase())){
|
|
|
// SignFamily jiating = familyContractService.findByPatientByType(patient, 2);
|
|
|
// if(jiating!=null){
|
|
|
// plan.setSignHospital(jiating.getHospital());
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// plans.add(plan);
|
|
|
// }
|
|
|
// if (plans.size()>0){
|
|
|
// prenatalInspectorPlanDao.save(plans);
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 产检提醒(1预约提醒,2就诊提醒)
|
|
|
* 1、当居民已有经医生确认过的下一次产检时间,则距离下一次产检前7天(保证居民可自行预约),发出产检预约提醒通知。点击该消息,进入预约页面
|
|
|
* 2、当居民已有经医生确认过的下一次产检时间,则距离下一次产检前1天,发出产检就诊提醒,提醒居民就诊。点击该消息,进入预约记录页面
|
|
|
*/
|
|
|
public void sendPrenatalInspectorRemind(){
|
|
|
System.out.println("产检计划---running");
|
|
|
List<PrenatalInspectorPlan> planList = prenatalInspectorPlanDao.findWxTipList();
|
|
|
for (PrenatalInspectorPlan plan:planList){
|
|
|
try {
|
|
|
Patient patient = patientDao.findByCode(plan.getPatient());
|
|
|
String openId = patient.getOpenid();
|
|
|
String name = patient.getName();
|
|
|
String patientCode = patient.getCode();
|
|
|
if(StringUtils.isNotBlank(openId)){
|
|
|
Long day = DateUtil.getDays(plan.getInspectionTime(),DateUtil.getNowDateShort());
|
|
|
org.json.JSONObject json = new org.json.JSONObject();
|
|
|
if(day==7){
|
|
|
//产检提醒
|
|
|
json.put("remark","产检内容以医生实际检查为准。点击进行预约");
|
|
|
json.put("first",name+",您好!您和您的宝宝需要进行产检啦~请及时预约产检,如已预约,请忽略");
|
|
|
if("1".equals(plan.getInspectionPhase())){
|
|
|
if(StringUtils.isNotBlank(plan.getSignHospital())){
|
|
|
json.put("url","wdyy/html/hospital-dept.html?openid="+openId+"&toUser="+patientCode+"&toName="+name+"&hospitalId="+plan.getSignHospital());
|
|
|
}else {
|
|
|
json.put("url","wdyy/html/appointment-register.html?openid="+openId+"&toUser="+patientCode+"&toName="+name+"&orderType=1");
|
|
|
}
|
|
|
}else {
|
|
|
json.put("url","wdyy/html/appointment-register.html?openid="+openId+"&toUser="+patientCode+"&toName="+name);
|
|
|
}
|
|
|
|
|
|
json.put("keyword1","产检提醒");
|
|
|
String keyword2 = DateUtil.getStringDateShort()+"\n产检内容:"+plan.getCheckItem();
|
|
|
json.put("keyword2",keyword2);
|
|
|
pushMsgTask.sendWeixinMessage(accessTokenUtils.getAccessToken(), 18, openId, name, json);
|
|
|
}else if(day==1){
|
|
|
//产检就诊提醒
|
|
|
json.put("remark","产检内容以医生实际检查为准。点击查看预约记录");
|
|
|
json.put("first",name+",您好!您和您的宝宝即将进行产检啦~请按时就诊,如已就诊,请忽略");
|
|
|
json.put("url","wdyy/html/my-appointment.html?openid="+openId+"&toUser="+patientCode+"&toName="+name);
|
|
|
json.put("keyword1","产检就诊提醒");
|
|
|
String keyword2 = DateUtil.getStringDateShort()+"\n产检内容:"+plan.getCheckItem();
|
|
|
json.put("keyword2",keyword2);
|
|
|
pushMsgTask.sendWeixinMessage(accessTokenUtils.getAccessToken(), 18, openId, name, json);
|
|
|
}
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
System.out.println("微信提醒发送失败");
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
plans.add(plan);
|
|
|
}
|
|
|
if (plans.size()>0){
|
|
|
prenatalInspectorPlanDao.save(plans);
|
|
|
}
|
|
|
|
|
|
return preCard.getCode();
|
|
|
}
|
|
|
|
|
|
}
|