|
@ -9,17 +9,20 @@ import com.yihu.wlyy.entity.patient.SignFamily;
|
|
|
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlan;
|
|
|
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPlanLibrary;
|
|
|
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorPreCard;
|
|
|
import com.yihu.wlyy.entity.patient.prenatal.PrenatalInspectorRecord;
|
|
|
import com.yihu.wlyy.health.repository.DevicePatientHealthIndexDao;
|
|
|
import com.yihu.wlyy.repository.doctor.DoctorDao;
|
|
|
import com.yihu.wlyy.repository.patient.*;
|
|
|
import com.yihu.wlyy.service.BaseService;
|
|
|
import com.yihu.wlyy.service.app.health.PatientHealthIndexService;
|
|
|
import com.yihu.wlyy.service.app.sign.FamilyContractService;
|
|
|
import com.yihu.wlyy.service.common.SMSService;
|
|
|
import com.yihu.wlyy.service.third.jw.JwMaternalChildService;
|
|
|
import com.yihu.wlyy.service.third.jw.ZyDictService;
|
|
|
import com.yihu.wlyy.task.PushMsgTask;
|
|
|
import com.yihu.wlyy.util.DateUtil;
|
|
|
import com.yihu.wlyy.wechat.util.WeiXinAccessTokenUtils;
|
|
|
import com.yihu.wlyy.wechat.util.WeiXinOpenIdUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
@ -27,6 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
@ -64,24 +68,31 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
private PatientHealthIndexService healthIndexService;
|
|
|
@Autowired
|
|
|
private DevicePatientHealthIndexDao healthIndexDao;
|
|
|
@Autowired
|
|
|
private PrenatalInspectorRecordDao recordDao;
|
|
|
@Autowired
|
|
|
private WeiXinOpenIdUtils weiXinOpenIdUtils;
|
|
|
@Autowired
|
|
|
private SMSService smsService;
|
|
|
|
|
|
// public
|
|
|
|
|
|
/**
|
|
|
* 待产检计划
|
|
|
*
|
|
|
* @param code
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONArray planList(String code){
|
|
|
public JSONArray planList(String code) {
|
|
|
JSONArray jsonArray = new JSONArray();
|
|
|
List<PrenatalInspectorPlan> planList = prenatalInspectorPlanDao.findByCode(code);
|
|
|
for (PrenatalInspectorPlan plan:planList){
|
|
|
for (PrenatalInspectorPlan plan : planList) {
|
|
|
JSONObject json = new JSONObject();
|
|
|
json.put("checkItem",plan.getCheckItem());
|
|
|
json.put("name",plan.getName());
|
|
|
json.put("thisFoucs",plan.getThisFocus());
|
|
|
json.put("thisNote",plan.getThisNote());
|
|
|
json.put("inspectionTime",DateUtil.dateToStrShort(plan.getInspectionTime()));
|
|
|
json.put("checkItem", plan.getCheckItem());
|
|
|
json.put("name", plan.getName());
|
|
|
json.put("thisFoucs", plan.getThisFocus());
|
|
|
json.put("thisNote", plan.getThisNote());
|
|
|
json.put("inspectionTime", DateUtil.dateToStrShort(plan.getInspectionTime()));
|
|
|
|
|
|
jsonArray.add(json);
|
|
|
}
|
|
@ -91,28 +102,29 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
|
|
|
/**
|
|
|
* 获取产检列表
|
|
|
*
|
|
|
* @param patientCode
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONArray getEhrMaternalFirstExamRecord(String patientCode){
|
|
|
public JSONArray getEhrMaternalFirstExamRecord(String patientCode) {
|
|
|
JSONArray re = new JSONArray();
|
|
|
SignFamily signFamily = signFamilyDao.findByPatient(patientCode);
|
|
|
String hospital = null;
|
|
|
if(signFamily!=null){
|
|
|
if (signFamily != null) {
|
|
|
hospital = signFamily.getHospital();
|
|
|
}
|
|
|
Patient patient = patientDao.findByCode(patientCode);
|
|
|
try{
|
|
|
try {
|
|
|
boolean checkFlag = true;//是否查询预建卡接口。有建卡记录且建卡记录有结束妊娠才查询预建卡
|
|
|
String response = jwMaternalChildService.getEhrMaternalFirstExamRecord(patient.getIdcard(),hospital);
|
|
|
String response = jwMaternalChildService.getEhrMaternalFirstExamRecord(patient.getIdcard(), hospital);
|
|
|
JSONObject json = JSONObject.parseObject(response);
|
|
|
JSONArray data = null;
|
|
|
if(json.getInteger("status")==200){
|
|
|
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++) {
|
|
|
Map<String, String> map = new HashMap<>();//存储产检号,用于去除预建卡信息中重复记录
|
|
|
if (data != null && data.size() > 0) {//有建卡信息
|
|
|
for (int i = 0; i < data.size(); i++) {
|
|
|
JSONObject planJson = new JSONObject();
|
|
|
JSONObject pregnancy = data.getJSONObject(i);
|
|
|
String PREGNANCY_NO = pregnancy.getString("PREGNANCY_NO");//智业产检号
|
|
@ -124,103 +136,112 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
String DELIVERY_WAY = pregnancy.getString("DELIVERY_WAY");//分娩方式
|
|
|
String DELIVERY_TIME = pregnancy.getString("DELIVERY_TIME");//分娩方式时间
|
|
|
String EXAM_TIME = pregnancy.getString("EXAM_TIME");//检查日期
|
|
|
planJson.put("pregnancyNo",PREGNANCY_NO);
|
|
|
planJson.put("pregnancyStatus",PREGNANCY_STATUS);
|
|
|
planJson.put("endManner",END_MANNER);
|
|
|
planJson.put("endTime",END_TIME);
|
|
|
planJson.put("mensesLast",MENSES_LAST);
|
|
|
planJson.put("expectedTime",EXPECTED_TIME);
|
|
|
planJson.put("pregnancyNo", PREGNANCY_NO);
|
|
|
planJson.put("pregnancyStatus", PREGNANCY_STATUS);
|
|
|
planJson.put("endManner", END_MANNER);
|
|
|
planJson.put("endTime", END_TIME);
|
|
|
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;
|
|
|
map.put("PREGNANCY_NO", "PREGNANCY_NO");
|
|
|
if (StringUtils.isBlank(END_TIME)) {
|
|
|
checkFlag = checkFlag ? false : checkFlag;
|
|
|
//未结束妊娠,生成待产检计划
|
|
|
List<PrenatalInspectorPlan> plans = prenatalInspectorPlanDao.findByPatient(patientCode);
|
|
|
boolean flag = false;
|
|
|
if(plans==null||plans.size()==0){
|
|
|
if (plans == null || plans.size() == 0) {
|
|
|
flag = true;
|
|
|
}else {
|
|
|
} else {
|
|
|
String inspectionCode = plans.get(0).getInspectionCode();
|
|
|
if(StringUtils.isBlank(inspectionCode)){//有待产检计划,但是产检号为空,说明是预建卡生成的产检记录
|
|
|
if (StringUtils.isBlank(inspectionCode)) {//有待产检计划,但是产检号为空,说明是预建卡生成的产检记录
|
|
|
flag = true;
|
|
|
//更新居民待产检计划,需要重新生成
|
|
|
prenatalInspectorPlanDao.updateStatus(patientCode);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if(flag){//判断是否已经生成产检记录
|
|
|
if (flag) {//判断是否已经生成产检记录
|
|
|
Date dueDay = DateUtil.strToDate(EXPECTED_TIME);
|
|
|
Long days = DateUtil.getDays(dueDay,date);
|
|
|
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.setInspectionCode(PREGNANCY_NO);//产检号
|
|
|
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);
|
|
|
for (PrenatalInspectorPlanLibrary library : libraries) {
|
|
|
// 只取最近15天数据
|
|
|
Date inspectorDate = DateUtil.getPrenatalInspectorDate(dueDay, -library.getEndDay().intValue());
|
|
|
if (DateUtil.getDays(date, inspectorDate) <= 15 && DateUtil.getDays(date, inspectorDate) >= 0) {
|
|
|
plan = new PrenatalInspectorPlan();
|
|
|
plan.setInspectionPhase(library.getInspectionPhase());
|
|
|
plan.setStatus("0");
|
|
|
plan.setPatient(patientCode);
|
|
|
plan.setCzrq(date);
|
|
|
plan.setDel("1");
|
|
|
plan.setInspectionCode(PREGNANCY_NO);//产检号
|
|
|
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){
|
|
|
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){
|
|
|
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("plans", plans);//待产检列表
|
|
|
if (plans != null && plans.size()>0) {
|
|
|
PrenatalInspectorPlan prenatalInspectorPlan = plans.get(0);
|
|
|
JSONObject status = getPrenatalStatus(prenatalInspectorPlan.getId());
|
|
|
planJson.put("inspectStatus", status);//最近一条状态
|
|
|
}
|
|
|
planJson.put("nextExamDay", nextExamDay);//距离下次产检天数
|
|
|
|
|
|
//产床预约信息
|
|
|
String precontract_org_name = "";//产床医院
|
|
|
try {
|
|
|
String bedRecode = jwMaternalChildService.getEhrMaternalBedPrecontractRecord(patient.getIdcard(),hospital);
|
|
|
String bedRecode = jwMaternalChildService.getEhrMaternalBedPrecontractRecord(patient.getIdcard(), hospital);
|
|
|
JSONObject bedJson = JSONObject.parseObject(bedRecode);
|
|
|
JSONArray bedData = null;
|
|
|
if(bedJson.getInteger("status")==200){
|
|
|
if (bedJson.getInteger("status") == 200) {
|
|
|
bedData = bedJson.getJSONObject("data").getJSONArray("DATA");
|
|
|
}
|
|
|
if(bedData!=null&&bedData.size()>0){
|
|
|
JSONObject exam = bedData.getJSONObject(bedData.size()-1);
|
|
|
if (bedData != null && bedData.size() > 0) {
|
|
|
JSONObject exam = bedData.getJSONObject(bedData.size() - 1);
|
|
|
precontract_org_name = exam.getString("PRECONTRACT_ORG_NAME");
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
planJson.put("precontractOrgName",precontract_org_name);//产床医院
|
|
|
planJson.put("precontractOrgName", precontract_org_name);//产床医院
|
|
|
}
|
|
|
re.add(planJson);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//请求预建卡接口
|
|
|
if(checkFlag){
|
|
|
String resp = jwMaternalChildService.getEhrMaternalPreFirstExamRecord(patient.getIdcard(),hospital);
|
|
|
if (checkFlag) {
|
|
|
String resp = jwMaternalChildService.getEhrMaternalPreFirstExamRecord(patient.getIdcard(), hospital);
|
|
|
JSONObject preJson = JSONObject.parseObject(resp);
|
|
|
JSONArray preData = null;
|
|
|
if(preJson.getInteger("status")==200){
|
|
|
if (preJson.getInteger("status") == 200) {
|
|
|
preData = preJson.getJSONObject("data").getJSONArray("DATA");
|
|
|
if(preData!=null&&preData.size()>0){
|
|
|
if (preData != null && preData.size() > 0) {
|
|
|
JSONArray rep = new JSONArray();
|
|
|
for (int i=0;i<preData.size();i++){
|
|
|
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)){
|
|
|
if (map.containsKey(PREGNANCY_NO)) {
|
|
|
continue;//去重
|
|
|
}
|
|
|
|
|
@ -228,58 +249,67 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
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("pregnancyStatus","0");
|
|
|
planJson.put("endManner",END_MANNER);
|
|
|
planJson.put("endTime",END_TIME);
|
|
|
planJson.put("mensesLast",MENSES_LAST);
|
|
|
planJson.put("expectedTime",DateUtil.dateToStrLong(dueday));
|
|
|
planJson.put("pregnancyNo", PREGNANCY_NO);
|
|
|
planJson.put("pregnancyStatus", "0");
|
|
|
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){//判断是否已经生成产检记录
|
|
|
if (plans == null || plans.size() == 0) {//判断是否已经生成产检记录
|
|
|
//预建卡还没产检,有产检就会生成产检记录,建卡接口就会有数据
|
|
|
Long days = DateUtil.getDays(dueday,date);
|
|
|
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);
|
|
|
for (PrenatalInspectorPlanLibrary library : libraries) {
|
|
|
// 只取最近15天数据
|
|
|
Date inspectorDate = DateUtil.getPrenatalInspectorDate(dueday, -library.getEndDay().intValue());
|
|
|
if (DateUtil.getDays(date, inspectorDate) <= 15 && DateUtil.getDays(date, inspectorDate) >= 0) {
|
|
|
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(inspectorDate);
|
|
|
plan.setName(library.getName());
|
|
|
plan.setThisFocus(library.getThisFocus());
|
|
|
plan.setThisNote(library.getThisNote());
|
|
|
|
|
|
plans.add(plan);
|
|
|
}
|
|
|
}
|
|
|
if (plans.size()>0){
|
|
|
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){
|
|
|
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);//产床医院
|
|
|
planJson.put("plans", plans);//待产检列表
|
|
|
if (plans != null && plans.size()>0) {
|
|
|
PrenatalInspectorPlan prenatalInspectorPlan = plans.get(0);
|
|
|
JSONObject status = getPrenatalStatus(prenatalInspectorPlan.getId());
|
|
|
planJson.put("inspectStatus", status);//最近一条状态
|
|
|
}
|
|
|
planJson.put("nextExamDay", nextExamDay);//距离下次产检天数
|
|
|
planJson.put("precontractOrgName", null);//产床医院
|
|
|
rep.add(planJson);
|
|
|
}
|
|
|
|
|
|
//重新排序
|
|
|
if(rep.size()>0){
|
|
|
for (int i=0;i<re.size();i++){
|
|
|
if (rep.size() > 0) {
|
|
|
for (int i = 0; i < re.size(); i++) {
|
|
|
rep.add(re.getJSONObject(i));
|
|
|
}
|
|
|
return rep;
|
|
@ -288,7 +318,7 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}catch (Exception e){
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
|
|
@ -297,28 +327,29 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
|
|
|
/**
|
|
|
* 初检
|
|
|
*
|
|
|
* @param patientCode
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject firstExam(String patientCode,String pregnancyNo){
|
|
|
public JSONObject firstExam(String patientCode, String pregnancyNo) {
|
|
|
JSONObject re = new JSONObject();
|
|
|
try {
|
|
|
SignFamily signFamily = signFamilyDao.findByPatient(patientCode);
|
|
|
String hospital = null;
|
|
|
if(signFamily!=null){
|
|
|
if (signFamily != null) {
|
|
|
hospital = signFamily.getHospital();
|
|
|
}
|
|
|
Patient patient = patientDao.findByCode(patientCode);
|
|
|
|
|
|
String response = jwMaternalChildService.getEhrMaternalFirstExamRecord(patient.getIdcard(),hospital);
|
|
|
String response = jwMaternalChildService.getEhrMaternalFirstExamRecord(patient.getIdcard(), hospital);
|
|
|
JSONObject json = JSONObject.parseObject(response);
|
|
|
JSONArray data = null;
|
|
|
if(json.getInteger("status")==200){
|
|
|
if (json.getInteger("status") == 200) {
|
|
|
data = json.getJSONObject("data").getJSONArray("DATA");
|
|
|
}
|
|
|
if(data!=null&&data.size()>0){
|
|
|
for (int i=0;i<data.size();i++){
|
|
|
if(pregnancyNo.equals(data.getJSONObject(i).getString("PREGNANCY_NO"))){//判断是否同一个产检
|
|
|
if (data != null && data.size() > 0) {
|
|
|
for (int i = 0; i < data.size(); i++) {
|
|
|
if (pregnancyNo.equals(data.getJSONObject(i).getString("PREGNANCY_NO"))) {//判断是否同一个产检
|
|
|
re = data.getJSONObject(i);
|
|
|
String SICK_PROVINCE = re.getString("SICK_PROVINCE");//省
|
|
|
String SICK_CITY = re.getString("SICK_CITY");//市
|
|
@ -332,42 +363,42 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
String SICK_HOUSEHOLD_COUNTRY = re.getString("SICK_HOUSEHOLD_COUNTRY");//户籍街道
|
|
|
String SICK_HOUSEHOLD_VILLAGE = re.getString("SICK_HOUSEHOLD_VILLAGE");//户籍居委会
|
|
|
|
|
|
if(StringUtils.isNotBlank(SICK_PROVINCE)){
|
|
|
re.put("SICK_PROVINCE",zyDictService.findZoneName(SICK_PROVINCE));
|
|
|
if (StringUtils.isNotBlank(SICK_PROVINCE)) {
|
|
|
re.put("SICK_PROVINCE", zyDictService.findZoneName(SICK_PROVINCE));
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(SICK_CITY)){
|
|
|
re.put("SICK_CITY",zyDictService.findZoneName(SICK_CITY));
|
|
|
if (StringUtils.isNotBlank(SICK_CITY)) {
|
|
|
re.put("SICK_CITY", zyDictService.findZoneName(SICK_CITY));
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(SICK_COUNTY)){
|
|
|
re.put("SICK_COUNTY",zyDictService.findZoneName(SICK_COUNTY));
|
|
|
if (StringUtils.isNotBlank(SICK_COUNTY)) {
|
|
|
re.put("SICK_COUNTY", zyDictService.findZoneName(SICK_COUNTY));
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(SICK_COUNTRY)){
|
|
|
re.put("SICK_COUNTRY",zyDictService.findZoneName(SICK_COUNTRY));
|
|
|
if (StringUtils.isNotBlank(SICK_COUNTRY)) {
|
|
|
re.put("SICK_COUNTRY", zyDictService.findZoneName(SICK_COUNTRY));
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(SICK_VILLAGE)){
|
|
|
re.put("SICK_VILLAGE",zyDictService.findZoneName(SICK_VILLAGE));
|
|
|
if (StringUtils.isNotBlank(SICK_VILLAGE)) {
|
|
|
re.put("SICK_VILLAGE", zyDictService.findZoneName(SICK_VILLAGE));
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(SICK_HOUSEHOLD_PROVINCE)){
|
|
|
re.put("SICK_HOUSEHOLD_PROVINCE",zyDictService.findZoneName(SICK_HOUSEHOLD_PROVINCE));
|
|
|
if (StringUtils.isNotBlank(SICK_HOUSEHOLD_PROVINCE)) {
|
|
|
re.put("SICK_HOUSEHOLD_PROVINCE", zyDictService.findZoneName(SICK_HOUSEHOLD_PROVINCE));
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(SICK_HOUSEHOLD_CITY)){
|
|
|
re.put("SICK_HOUSEHOLD_CITY",zyDictService.findZoneName(SICK_HOUSEHOLD_CITY));
|
|
|
if (StringUtils.isNotBlank(SICK_HOUSEHOLD_CITY)) {
|
|
|
re.put("SICK_HOUSEHOLD_CITY", zyDictService.findZoneName(SICK_HOUSEHOLD_CITY));
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(SICK_HOUSEHOLD_COUNTY)){
|
|
|
re.put("SICK_HOUSEHOLD_COUNTY",zyDictService.findZoneName(SICK_HOUSEHOLD_COUNTY));
|
|
|
if (StringUtils.isNotBlank(SICK_HOUSEHOLD_COUNTY)) {
|
|
|
re.put("SICK_HOUSEHOLD_COUNTY", zyDictService.findZoneName(SICK_HOUSEHOLD_COUNTY));
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(SICK_HOUSEHOLD_COUNTRY)){
|
|
|
re.put("SICK_HOUSEHOLD_COUNTRY",zyDictService.findZoneName(SICK_HOUSEHOLD_COUNTRY));
|
|
|
if (StringUtils.isNotBlank(SICK_HOUSEHOLD_COUNTRY)) {
|
|
|
re.put("SICK_HOUSEHOLD_COUNTRY", zyDictService.findZoneName(SICK_HOUSEHOLD_COUNTRY));
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(SICK_HOUSEHOLD_VILLAGE)){
|
|
|
re.put("SICK_HOUSEHOLD_VILLAGE",zyDictService.findZoneName(SICK_HOUSEHOLD_VILLAGE));
|
|
|
if (StringUtils.isNotBlank(SICK_HOUSEHOLD_VILLAGE)) {
|
|
|
re.put("SICK_HOUSEHOLD_VILLAGE", zyDictService.findZoneName(SICK_HOUSEHOLD_VILLAGE));
|
|
|
}
|
|
|
|
|
|
return re;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return re;
|
|
@ -375,30 +406,31 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
|
|
|
/**
|
|
|
* 复检记录
|
|
|
*
|
|
|
* @param patientCode
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONArray reExamRecode(String patientCode,String pregnancyNo){
|
|
|
public JSONArray reExamRecode(String patientCode, String pregnancyNo) {
|
|
|
JSONArray re = new JSONArray();
|
|
|
try {
|
|
|
SignFamily signFamily = signFamilyDao.findByPatient(patientCode);
|
|
|
String hospital = null;
|
|
|
if(signFamily!=null){
|
|
|
if (signFamily != null) {
|
|
|
hospital = signFamily.getHospital();
|
|
|
}
|
|
|
Patient patient = patientDao.findByCode(patientCode);
|
|
|
|
|
|
String response = jwMaternalChildService.getEhrMaternalReExamRecord(patient.getIdcard(),hospital,pregnancyNo);
|
|
|
String response = jwMaternalChildService.getEhrMaternalReExamRecord(patient.getIdcard(), hospital, pregnancyNo);
|
|
|
JSONObject json = JSONObject.parseObject(response);
|
|
|
JSONArray data = null;
|
|
|
if(json.getInteger("status")==200){
|
|
|
if (json.getInteger("status") == 200) {
|
|
|
data = json.getJSONObject("data").getJSONArray("DATA");
|
|
|
}
|
|
|
if(data!=null&&data.size()>0){
|
|
|
if (data != null && data.size() > 0) {
|
|
|
return data;
|
|
|
}
|
|
|
return re;
|
|
|
}catch (Exception e){
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return re;
|
|
@ -406,26 +438,27 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
|
|
|
/**
|
|
|
* 获取最后一次产检时间
|
|
|
*
|
|
|
* @param idcard
|
|
|
* @param hospital
|
|
|
* @return
|
|
|
*/
|
|
|
public String getLastExamTime(String idcard,String hospital,String pregnancyNo){
|
|
|
public String getLastExamTime(String idcard, String hospital, String pregnancyNo) {
|
|
|
String re = "";
|
|
|
try {
|
|
|
String response = jwMaternalChildService.getEhrMaternalReExamRecord(idcard,hospital,pregnancyNo);
|
|
|
String response = jwMaternalChildService.getEhrMaternalReExamRecord(idcard, hospital, pregnancyNo);
|
|
|
JSONObject json = JSONObject.parseObject(response);
|
|
|
JSONArray data = null;
|
|
|
if(json.getInteger("status")==200){
|
|
|
if (json.getInteger("status") == 200) {
|
|
|
data = json.getJSONObject("data").getJSONArray("DATA");
|
|
|
}
|
|
|
if(data!=null&&data.size()>0){
|
|
|
JSONObject exam = data.getJSONObject(data.size()-1);
|
|
|
if (data != null && data.size() > 0) {
|
|
|
JSONObject exam = data.getJSONObject(data.size() - 1);
|
|
|
// String PREGNANCY_WEEK = exam.getString("PREGNANCY_WEEK");//检查孕周
|
|
|
String examTime = exam.getString("EXAM_TIME");//产检日期
|
|
|
re = examTime;
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return re;
|
|
@ -433,26 +466,27 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
|
|
|
/**
|
|
|
* 产床预约信息
|
|
|
*
|
|
|
* @param idcard
|
|
|
* @param hospital
|
|
|
* @return
|
|
|
*/
|
|
|
public String getEhrMaternalBedPrecontractRecord(String idcard,String hospital){
|
|
|
public String getEhrMaternalBedPrecontractRecord(String idcard, String hospital) {
|
|
|
String re = "";
|
|
|
try {
|
|
|
String response = jwMaternalChildService.getEhrMaternalBedPrecontractRecord(idcard,hospital);
|
|
|
String response = jwMaternalChildService.getEhrMaternalBedPrecontractRecord(idcard, hospital);
|
|
|
JSONObject json = JSONObject.parseObject(response);
|
|
|
JSONArray data = null;
|
|
|
if(json.getInteger("status")==200){
|
|
|
if (json.getInteger("status") == 200) {
|
|
|
data = json.getJSONObject("data").getJSONArray("DATA");
|
|
|
}
|
|
|
if(data!=null&&data.size()>0){
|
|
|
JSONObject exam = data.getJSONObject(data.size()-1);
|
|
|
if (data != null && data.size() > 0) {
|
|
|
JSONObject exam = data.getJSONObject(data.size() - 1);
|
|
|
String PREGNANCY_WEEK = exam.getString("PREGNANCY_WEEK");//检查孕周
|
|
|
String examTime = exam.getString("EXAM_TIME");//产检日期
|
|
|
re = examTime;
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return re;
|
|
@ -460,34 +494,35 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
|
|
|
/**
|
|
|
* 预建卡列表-孕检计划
|
|
|
*
|
|
|
* @param patient
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONArray preCardList(String patient){
|
|
|
public JSONArray preCardList(String patient) {
|
|
|
JSONArray jsonArray = new JSONArray();
|
|
|
List<PrenatalInspectorPreCard> preCards = prenatalInspectorPreCardDao.findByPatient(patient);
|
|
|
for (PrenatalInspectorPreCard preCard:preCards){
|
|
|
for (PrenatalInspectorPreCard preCard : preCards) {
|
|
|
JSONObject json = new JSONObject();
|
|
|
json.put("code",preCard.getCode());
|
|
|
json.put("dueDate",DateUtil.dateToStrShort(preCard.getDueDate()));//预产期
|
|
|
json.put("code", preCard.getCode());
|
|
|
json.put("dueDate", DateUtil.dateToStrShort(preCard.getDueDate()));//预产期
|
|
|
Date date = new Date();
|
|
|
Long dueDateDay = DateUtil.getDays(preCard.getDueDate(),date);
|
|
|
if(dueDateDay>0){
|
|
|
json.put("dueDateWeek",getWeek(dueDateDay.intValue()));//距离预产期周数
|
|
|
json.put("dueDateDay",getDay(dueDateDay.intValue()));//距离预产期周数的余数
|
|
|
Long pregnancyDay = DateUtil.getDays(date,preCard.getLastMenstrualDate());
|
|
|
Long dueDateDay = DateUtil.getDays(preCard.getDueDate(), date);
|
|
|
if (dueDateDay > 0) {
|
|
|
json.put("dueDateWeek", getWeek(dueDateDay.intValue()));//距离预产期周数
|
|
|
json.put("dueDateDay", getDay(dueDateDay.intValue()));//距离预产期周数的余数
|
|
|
Long pregnancyDay = DateUtil.getDays(date, preCard.getLastMenstrualDate());
|
|
|
int week = getWeek(pregnancyDay.intValue());
|
|
|
int day = getDay(pregnancyDay.intValue());
|
|
|
String preDay = day==0?(week+"周"):(week+"周"+day+"天");//怀孕时间
|
|
|
json.put("status",preDay);
|
|
|
}else {
|
|
|
json.put("dueDateWeek",0);//距离预产期周数
|
|
|
json.put("dueDateDay",0);//距离预产期周数的余数
|
|
|
json.put("status",preCard.getStatus());
|
|
|
String preDay = day == 0 ? (week + "周") : (week + "周" + day + "天");//怀孕时间
|
|
|
json.put("status", preDay);
|
|
|
} else {
|
|
|
json.put("dueDateWeek", 0);//距离预产期周数
|
|
|
json.put("dueDateDay", 0);//距离预产期周数的余数
|
|
|
json.put("status", preCard.getStatus());
|
|
|
}
|
|
|
|
|
|
json.put("hospitalName",preCard.getHospitalName());//预约床位医院
|
|
|
json.put("orderBedTime",preCard.getOrderBedTime());//预约床位时间
|
|
|
json.put("hospitalName", preCard.getHospitalName());//预约床位医院
|
|
|
json.put("orderBedTime", preCard.getOrderBedTime());//预约床位时间
|
|
|
|
|
|
jsonArray.add(json);
|
|
|
}
|
|
@ -497,47 +532,50 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
|
|
|
/**
|
|
|
* 把天数换算成周数
|
|
|
*
|
|
|
* @param day
|
|
|
* @return
|
|
|
*/
|
|
|
private int getWeek(Integer day){
|
|
|
return day/7;
|
|
|
private int getWeek(Integer day) {
|
|
|
return day / 7;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 把天数换算成周数的余数
|
|
|
*
|
|
|
* @param day
|
|
|
* @return
|
|
|
*/
|
|
|
private int getDay(Integer day){
|
|
|
return day%7;
|
|
|
private int getDay(Integer day) {
|
|
|
return day % 7;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 上传预建卡
|
|
|
*
|
|
|
* @param code
|
|
|
*/
|
|
|
public String uploadPreExam(String code){
|
|
|
public String uploadPreExam(String code) {
|
|
|
String re = "";
|
|
|
try {
|
|
|
//上传预建卡
|
|
|
String response = jwMaternalChildService.SaveEhrMaternalPreFirstExamRecord(code);
|
|
|
JSONObject preJson = JSONObject.parseObject(response);
|
|
|
if(preJson.getInteger("status")!=200){
|
|
|
if (preJson.getInteger("status") != 200) {
|
|
|
re = preJson.getString("msg");
|
|
|
}else {
|
|
|
} else {
|
|
|
JSONObject json = preJson.getJSONObject("data");
|
|
|
if("0".equals(json.getString("code"))){
|
|
|
if ("0".equals(json.getString("code"))) {
|
|
|
re = json.getString("MESSAGE");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if(re.contains("身份证为空,请检查")){
|
|
|
if (re.contains("身份证为空,请检查")) {
|
|
|
re = "身份证为空,请检查";
|
|
|
}else if(re.contains("操作员为空,请检查")){
|
|
|
} else if (re.contains("操作员为空,请检查")) {
|
|
|
re = "操作员为空,请检查";
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return re;
|
|
@ -557,12 +595,12 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
|
|
|
//判断是否有预建卡
|
|
|
try {
|
|
|
String resp = jwMaternalChildService.getEhrMaternalPreFirstExamRecord(preCard.getIdcard(),signFamily.getHospital());
|
|
|
String resp = jwMaternalChildService.getEhrMaternalPreFirstExamRecord(preCard.getIdcard(), signFamily.getHospital());
|
|
|
JSONObject preJson = JSONObject.parseObject(resp);
|
|
|
JSONArray preData = null;
|
|
|
if(preJson.getInteger("status")==200){
|
|
|
if (preJson.getInteger("status") == 200) {
|
|
|
preData = preJson.getJSONObject("data").getJSONArray("DATA");
|
|
|
if(preData!=null&&preData.size()>0){
|
|
|
if (preData != null && preData.size() > 0) {
|
|
|
JSONObject temp = preData.getJSONObject(0);
|
|
|
String END_MANNER = temp.getString("END_MANNER");//妊娠终止方式
|
|
|
if(StringUtils.isBlank(END_MANNER)){
|
|
@ -571,7 +609,7 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
json.put("code","-3");
|
|
|
return json;
|
|
@ -583,8 +621,8 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
preCard.setDoctorName(doctor.getName());
|
|
|
|
|
|
//保存智业的医生信息
|
|
|
Map<String,Object> map = zyDictService.findJwDoctorByDoctor(doctor.getCode());
|
|
|
if(map!=null){
|
|
|
Map<String, Object> map = zyDictService.findJwDoctorByDoctor(doctor.getCode());
|
|
|
if (map != null) {
|
|
|
preCard.setJwDoctor(map.get("jw_doctor").toString());
|
|
|
}
|
|
|
|
|
@ -612,11 +650,11 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
// p.setMobile(preCard.getMobile());
|
|
|
|
|
|
//2、生成待产检计划(待产检计划由获取健康信息接口生成,关联产检计划)
|
|
|
Long days = DateUtil.getDays(dueDate,date);
|
|
|
Long days = DateUtil.getDays(dueDate, date);
|
|
|
List<PrenatalInspectorPlanLibrary> libraries = prenatalInspectorPlanLibraryDao.findByDays(days);
|
|
|
List<PrenatalInspectorPlan> plans = new ArrayList<>();
|
|
|
PrenatalInspectorPlan plan = null;
|
|
|
for (PrenatalInspectorPlanLibrary library:libraries){
|
|
|
for (PrenatalInspectorPlanLibrary library : libraries) {
|
|
|
plan = new PrenatalInspectorPlan();
|
|
|
plan.setInspectionPhase(library.getInspectionPhase());
|
|
|
plan.setStatus("0");
|
|
@ -625,7 +663,7 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
plan.setDel("1");
|
|
|
plan.setCheckItem(library.getCheckItem());
|
|
|
// plan.setInspectionCode(preCard.getCode());
|
|
|
plan.setInspectionTime(DateUtil.getPrenatalInspectorDate(dueDate,-library.getEndDay().intValue()));
|
|
|
plan.setInspectionTime(DateUtil.getPrenatalInspectorDate(dueDate, -library.getEndDay().intValue()));
|
|
|
plan.setName(library.getName());
|
|
|
plan.setThisFocus(library.getThisFocus());
|
|
|
plan.setThisNote(library.getThisNote());
|
|
@ -639,7 +677,7 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
|
|
|
plans.add(plan);
|
|
|
}
|
|
|
if (plans.size()>0){
|
|
|
if (plans.size() > 0) {
|
|
|
prenatalInspectorPlanDao.save(plans);
|
|
|
}
|
|
|
json.put("code",preCard.getCode());
|
|
@ -649,28 +687,29 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
|
|
|
/**
|
|
|
* 保存体征数据 有保存体征数据才更新
|
|
|
*
|
|
|
* @param preCard
|
|
|
* @param patientCode
|
|
|
*/
|
|
|
public void saveHealthIndex(PrenatalInspectorPreCard preCard,String patientCode){
|
|
|
if(StringUtils.isNotBlank(preCard.getHeight())&&StringUtils.isNotBlank(preCard.getWeight())){
|
|
|
public void saveHealthIndex(PrenatalInspectorPreCard preCard, String patientCode) {
|
|
|
if (StringUtils.isNotBlank(preCard.getHeight()) && StringUtils.isNotBlank(preCard.getWeight())) {
|
|
|
//先判断体征数据是否变更
|
|
|
DevicePatientHealthIndex index = healthIndexDao.findLastData(patientCode, 3);
|
|
|
String height = null;
|
|
|
String weight = null;
|
|
|
if(index!=null){
|
|
|
if (index != null) {
|
|
|
height = index.getValue2();
|
|
|
weight = index.getValue1();
|
|
|
}
|
|
|
if(!preCard.getHeight().equals(height)||!preCard.getWeight().equals(weight)){
|
|
|
if (!preCard.getHeight().equals(height) || !preCard.getWeight().equals(weight)) {
|
|
|
//更新体征数据
|
|
|
JSONObject json = new JSONObject();
|
|
|
json.put("time",DateUtil.dateToStrLong(preCard.getCzrq()));
|
|
|
json.put("height",preCard.getHeight());
|
|
|
json.put("weight",preCard.getWeight());
|
|
|
json.put("time", DateUtil.dateToStrLong(preCard.getCzrq()));
|
|
|
json.put("height", preCard.getHeight());
|
|
|
json.put("weight", preCard.getWeight());
|
|
|
try {
|
|
|
healthIndexService.addPatientHealthIndex(json.toString(), "3", patientCode, null);
|
|
|
}catch (Exception e){
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
logger.error("预建卡时 保存体征数据失败。。。");
|
|
|
}
|
|
@ -678,4 +717,188 @@ public class PrenatalInspectorPreCardService extends BaseService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 根据待产检ID查询最近一条待产检计划状态
|
|
|
*
|
|
|
* @param prenatalId
|
|
|
*/
|
|
|
public JSONObject getPrenatalStatus(Long prenatalId) throws Exception {
|
|
|
JSONObject json = new JSONObject();
|
|
|
try {
|
|
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
|
|
PrenatalInspectorPlan plan = prenatalInspectorPlanDao.findOne(prenatalId);
|
|
|
Date planTime = plan.getInspectionTime();
|
|
|
Boolean flag = getSendStatus(prenatalId);
|
|
|
Long days = DateUtil.getDays(new Date(), planTime);
|
|
|
if (days > 0) {
|
|
|
// 当前时间在应产检之后
|
|
|
List<PrenatalInspectorPlan> plans = prenatalInspectorPlanDao.getScopeById(prenatalId);
|
|
|
if (plans == null || plans.size() == 0) {
|
|
|
String str = "当前时间在应产检7天后";
|
|
|
if (days > 7) {
|
|
|
System.out.println("超期未检");
|
|
|
json.put("renatalStatus", "3");
|
|
|
json.put("sendStatus", flag == true ? "1" : "0");
|
|
|
}else {
|
|
|
PrenatalInspectorRecord record = recordDao.findByRelationAndType(prenatalId.toString(), 0);
|
|
|
if (record == null) {
|
|
|
System.out.println("未提醒");
|
|
|
json.put("renatalStatus", "1");
|
|
|
if (days < -7) {
|
|
|
json.put("reason", "未到提醒时间(" + format.format(DateUtil.getPreDays(plan.getInspectionTime(), -7)) + " 08:00)");
|
|
|
}
|
|
|
} else {
|
|
|
PrenatalInspectorRecord docRecord = recordDao.findByRelationAndType(prenatalId.toString(), 1);
|
|
|
System.out.println("已提醒");
|
|
|
json.put("renatalStatus", "2");
|
|
|
json.put("sendStatus", flag == true ? "1" : "0");
|
|
|
if (docRecord == null) {
|
|
|
json.put("sendTime", format.format(record.getSendTime()));
|
|
|
} else {
|
|
|
json.put("sendTime", format.format(docRecord.getSendTime()));
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
System.out.println("已产检");
|
|
|
json.put("renatalStatus", "4");
|
|
|
}
|
|
|
} else {
|
|
|
PrenatalInspectorRecord record = recordDao.findByRelationAndType(prenatalId.toString(), 0);
|
|
|
if (record == null) {
|
|
|
System.out.println("未提醒");
|
|
|
json.put("renatalStatus", "1");
|
|
|
if (days < -7) {
|
|
|
json.put("reason", "未到提醒时间(" + format.format(DateUtil.getPreDays(plan.getInspectionTime(), -7)) + " 08:00)");
|
|
|
}
|
|
|
} else {
|
|
|
PrenatalInspectorRecord docRecord = recordDao.findByRelationAndType(prenatalId.toString(), 1);
|
|
|
System.out.println("已提醒");
|
|
|
json.put("renatalStatus", "2");
|
|
|
json.put("sendStatus", flag == true ? "1" : "0");
|
|
|
if (docRecord == null) {
|
|
|
json.put("sendTime", format.format(record.getSendTime()));
|
|
|
} else {
|
|
|
json.put("sendTime", format.format(docRecord.getSendTime()));
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
json.put("prenatalId", prenatalId);
|
|
|
return json;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 提醒居民(每24小时可提醒一次)
|
|
|
*
|
|
|
* @param prenatalId
|
|
|
* @param code 居民code
|
|
|
* @param doc 医生code
|
|
|
*/
|
|
|
public Boolean sendPrenatal(Long prenatalId, String code, String doc) throws Exception {
|
|
|
Boolean flag = false;
|
|
|
try {
|
|
|
String relation = prenatalId.toString();
|
|
|
Patient patient = patientDao.findByCode(code);
|
|
|
String name = patient.getName();
|
|
|
String openId = patient.getOpenid();
|
|
|
String mobile = patient.getMobile();
|
|
|
String first = name + ",您好!您和您的宝宝需要进行产检啦~请及时预约产检,如已预约,请忽略";
|
|
|
String url = "wdyy/html/appointment-register.html?openid=" + openId + "&toUser=" + code + "&toName=" + name;
|
|
|
PrenatalInspectorPlan plan = prenatalInspectorPlanDao.findOne(prenatalId);
|
|
|
|
|
|
org.json.JSONObject json = new org.json.JSONObject();
|
|
|
//产检提醒
|
|
|
json.put("remark", "产检内容以医生实际检查为准。点击进行预约");
|
|
|
json.put("first", first);
|
|
|
json.put("url", url);
|
|
|
|
|
|
json.put("keyword1", "产检提醒");
|
|
|
String keyword2 = DateUtil.getStringDateShort() + "\n产检内容:" + plan.getCheckItem();
|
|
|
json.put("keyword2", keyword2);
|
|
|
if (StringUtils.isNotEmpty(openId) && !("undefined".equals(openId))) {
|
|
|
pushMsgTask.putWxMsg(accessTokenUtils.getAccessToken(), 18, openId, name, json);
|
|
|
flag = true;
|
|
|
} else {
|
|
|
//发送代理人
|
|
|
org.json.JSONArray jsonArray = weiXinOpenIdUtils.getAgentOpenId(code, openId);
|
|
|
if (jsonArray != null && jsonArray.length() > 0) {
|
|
|
for (int i = 0; i < jsonArray.length(); i++) {
|
|
|
org.json.JSONObject j = jsonArray.getJSONObject(i);
|
|
|
Patient member = (Patient) j.get("member");
|
|
|
org.json.JSONObject data = json;
|
|
|
data.remove("first");
|
|
|
data.remove("url");
|
|
|
data.put("url", url + "&represented=" + member.getCode());
|
|
|
data.put("first", weiXinOpenIdUtils.getTitleMes(patient, j.getInt("relation"), name) + first);
|
|
|
if (StringUtils.isNotEmpty(member.getOpenid()) && !("undefined".equals(member.getOpenid()))) {
|
|
|
pushMsgTask.putWxMsg(accessTokenUtils.getAccessToken(), 18, member.getOpenid(), name, data);
|
|
|
flag = true;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (!flag && StringUtils.isNotEmpty(mobile)) {
|
|
|
// 发送短信消息
|
|
|
org.json.JSONObject resultJson = smsService.sendMsg(mobile, ":张三,您好!您的家庭医生李四提醒你,您和您的宝宝需要进行产检啦~" +
|
|
|
" 您可微信搜索公众号:厦门i健康,关注公众号预约产检时间/查看孕检计划及历史检查记录,更可及时获取产检提醒哟~");
|
|
|
if (resultJson != null && resultJson.getInt("result") == 0) {
|
|
|
flag = true;
|
|
|
}
|
|
|
}
|
|
|
if (flag) {
|
|
|
PrenatalInspectorRecord record = recordDao.findByRelationAndType(relation, 1);
|
|
|
if (record == null) {
|
|
|
record = new PrenatalInspectorRecord();
|
|
|
record.setTimes(1);
|
|
|
} else {
|
|
|
record.setTimes(record.getTimes() + 1);
|
|
|
}
|
|
|
record.setRelation(relation);
|
|
|
record.setSender(doc);
|
|
|
record.setReceiver(code);
|
|
|
record.setType(1);
|
|
|
record.setName(name);
|
|
|
record.setOpenid(openId);
|
|
|
record.setContent(plan.getCheckItem());
|
|
|
record.setSendTime(new Date());
|
|
|
recordDao.save(record);
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return flag;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询该产检记录是否可提醒(是否过24小时)
|
|
|
*
|
|
|
* @param prenatalId
|
|
|
* @return boolean 是否可提醒
|
|
|
* @throws Exception true 可再次提醒 flase 不可提醒
|
|
|
*/
|
|
|
public Boolean getSendStatus(Long prenatalId) throws Exception {
|
|
|
Boolean flag = false;
|
|
|
try {
|
|
|
String relation = prenatalId.toString();
|
|
|
PrenatalInspectorRecord record = recordDao.findByRelationAndType(relation, 1);
|
|
|
if (record != null) {
|
|
|
float hours = DateUtil.getHours(new Date(), record.getSendTime());
|
|
|
if (hours > 24) {
|
|
|
flag = true;
|
|
|
}
|
|
|
} else {
|
|
|
flag = true;
|
|
|
}
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return flag;
|
|
|
}
|
|
|
|
|
|
}
|