| 
					
				 | 
			
			
				@ -2,30 +2,52 @@ package com.yihu.jw.patient.service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.serializer.SerializerFeature; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.fasterxml.jackson.databind.ObjectMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.doctor.BaseDoctorDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.patient.BasePatientDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.patient.PatientMedicareCardDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.prescription.WlyyInspectionDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.prescription.WlyyOutpatientDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionInfoDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.prescription.dao.OutpatientDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.prescription.dao.PrescriptionDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.prescription.dao.PrescriptionInfoDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.prescription.dao.WlyyInspectionDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.prescription.service.PrescriptionService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.ykyy.service.YkyyService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.patient.dao.BasePatientDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.patient.dao.BasePatientGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.patient.dao.BasePatientGroupDictDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.patient.util.ConstantUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.hospital.prescription.WlyyInspectionVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionInfoVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.Envelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.MixEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.ObjEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.PageEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.rm.base.BaseRequestMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.rm.iot.IotRequestMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.common.IdCardUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.utils.hibernate.HibenateUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.mysql.query.BaseJpaService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.utils.security.MD5; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.checkerframework.checker.units.qual.A; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.data.repository.CrudRepository; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.jdbc.core.BeanPropertyRowMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.jdbc.core.JdbcTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.util.CollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.io.IOException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Set; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 *  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -41,6 +63,7 @@ import java.util.Set; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class BasePatientService<T, R extends CrudRepository> extends BaseJpaService<BasePatientDO, BasePatientDao> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private static final Logger logger = LoggerFactory.getLogger(BasePatientService.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BasePatientDao basePatientDao; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -59,7 +82,22 @@ public class BasePatientService<T, R extends CrudRepository> extends BaseJpaServ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private YkyyService ykyyService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${wechat.id}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private String wxId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private OutpatientDao outpatientDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${demo.flag}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private boolean demoFlag; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${wechat.flag}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private boolean flag; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private WlyyInspectionDao wlyyInspectionDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private PrescriptionDao prescriptionDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private PrescriptionInfoDao prescriptionInfoDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BasePatientGroupDao basePatientGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BasePatientGroupDictDao basePatientGroupDictDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 居民id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param patientId 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -74,21 +112,23 @@ public class BasePatientService<T, R extends CrudRepository> extends BaseJpaServ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param patientId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public String getPatientById(String patientId) throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject result = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Map getPatientById(String patientId) throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map result = new HashMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(StringUtils.isEmpty(patientId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put("result","parameter patientId is null"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return result.toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BasePatientDO> patientDOList = this.findByField("id",patientId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BasePatientDO basePatientDO = basePatientDao.findById(patientId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        /*List<BasePatientDO> patientDOList = this.findByField("id",patientId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(CollectionUtils.isEmpty(patientDOList)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            result.put("result","not exist patient for id:"+patientId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return result.toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("patient",patientDOList.get(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("patient", basePatientDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<PatientMedicareCardDO> cards = basePatientMedicardCardService.findPatientCardByCode(patientId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        result.put("medicareCard",cards); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result.toJSONString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -263,6 +303,18 @@ public class BasePatientService<T, R extends CrudRepository> extends BaseJpaServ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            basePatientDO1.setTownName(basePatientDO.getTownName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            basePatientDO1.setCityName(basePatientDO.getCityName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            basePatientDO1.setMobile(basePatientDO.getMobile()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            basePatientDO1.setRemark(basePatientDO.getRemark()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            basePatientDO1.setLiveCityCode(basePatientDO.getLiveCityCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            basePatientDO1.setLiveCityName(basePatientDO.getLiveCityName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            basePatientDO1.setLiveProvinceCode(basePatientDO.getLiveProvinceCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            basePatientDO1.setLiveProvinceName(basePatientDO.getLiveProvinceName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            basePatientDO1.setLiveStreetCode(basePatientDO.getLiveStreetCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            basePatientDO1.setLiveStreetName(basePatientDO.getLiveStreetName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            basePatientDO1.setLiveTownCode(basePatientDO.getLiveTownCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            basePatientDO1.setLiveTownName(basePatientDO.getLiveTownName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            basePatientDO1.setAddress(basePatientDO.getAddress()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            basePatientDO1.setCommitteeCode(basePatientDO.getCommitteeCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            basePatientDO1.setCommitteeName(basePatientDO.getCommitteeName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 保存修改的居民信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.save(basePatientDO1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -272,6 +324,7 @@ public class BasePatientService<T, R extends CrudRepository> extends BaseJpaServ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (Object obj : patientMedicareCards) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            PatientMedicareCardDO card = objectMapper.readValue(obj.toString(), PatientMedicareCardDO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            card.setPatientCode(basePatientDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            card.setDel("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(cardIdList.contains(card.getId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                cardIdList.remove(card.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -342,5 +395,246 @@ public class BasePatientService<T, R extends CrudRepository> extends BaseJpaServ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        saveDoctorPwlimitDate(id);*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Map<String,Object> getPatientCountByDoctor(String doctor,String patient) throws  Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<WlyyOutpatientDO> fzList = outpatientDao.findByDoctorAndOutpatientType(doctor,"1",patient); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<WlyyOutpatientDO> xtList = outpatientDao.findByDoctorAndOutpatientType(doctor,"2",patient); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<WlyyOutpatientDO> zxList = outpatientDao.findByDoctorAndOutpatientType(doctor,"3",patient); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Map<String,Object> resultMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        resultMap.put("fzNum",fzList==null?0:fzList.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        resultMap.put("xtNum",xtList==null?0:xtList.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        resultMap.put("zxNum",zxList==null?0:zxList.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return resultMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    //查询电子病历 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        public MixEnvelop findEmrByPatientId(String patient,String doctor,Integer page ,Integer pageSize){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql ="select e.id as \"id\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " e.prescription_id as \"prescriptionId\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " e.complaint as \"complaint\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " e.medical_history as \"medicalHistory\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " e.past_history as \"pastHistory\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " e.physical_examination as \"physicalExamination\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " e.assist_examination as \"assistExamination\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.doctor_name as \"doctorName\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.doctor as \"doctor\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " e.popular_history as \"popularHistory\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " e.special_history as \"specialHistory\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " e.create_time as \"createTime\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " e.allergic_history as \"allergicHistory\"" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " from wlyy_prescription_emr e " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " left join  wlyy_prescription p on e.prescription_id = p.id" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " where p.status >= 20"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(patient)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql+=" and p.patient_code ='"+patient+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(doctor)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql+=" and p.doctor ='"+doctor+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        MixEnvelop mixEnvelop = new MixEnvelop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        mixEnvelop.setTotalCount(list==null?0:list.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        mixEnvelop.setPageSize(pageSize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        mixEnvelop.setCurrPage(page); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        mixEnvelop.setDetailModelList(list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return mixEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    //查询电子病历 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   /* public MixEnvelop findPrescriptionByPatientAndDoctor(String patient,String doctor,Integer page ,Integer pageSize){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql ="select p.id as \"id\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.outpatient_id as \"outpatient_id\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.real_order as \"real_order\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.origin_real_order as \"origin_real_order\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.adm_no as \"adm_no\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.origin_adm_no as \"origin_adm_no\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.serial_no as \"serial_no\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.origin_serial_no as \"origin_serial_no\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.type as \"type\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.patient_code as \"patient_code\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.patient_name as \"patient_name\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.status as \"status\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.mk_fail_reason as \"mk_fail_reason\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.idcard as \"idcard\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.idcard as \"idcard\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.idcard as \"idcard\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.idcard as \"idcard\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.idcard as \"idcard\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.idcard as \"idcard\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.idcard as \"idcard\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.idcard as \"idcard\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.idcard as \"idcard\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.idcard as \"idcard\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " p.ssc as \"ssc\"" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " from wlyy_prescription p " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " where p.status >= 20"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(patient)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql+=" and p.patient_code ='"+patient+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(doctor)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql+=" and p.doctor ='"+doctor+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> list = hibenateUtils.createSQLQuery(sql,page,pageSize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        MixEnvelop mixEnvelop = new MixEnvelop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        mixEnvelop.setTotalCount(list==null?0:list.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        mixEnvelop.setPageSize(pageSize); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        mixEnvelop.setCurrPage(page); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        mixEnvelop.setDetailModelList(list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return mixEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    }*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 查询患者所有处方信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param size 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public PageEnvelop findPatientAllPrescription(String doctor,String keyName, String status, Integer page, Integer size,String patient,String isSelectDrug) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BasePatientDO patientDO = basePatientDao.findById(patient); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (patientDO==null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return PageEnvelop.getError("找不到该患者",-1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        StringBuffer sql = new StringBuffer(" SELECT DISTINCT b.*, c.oneself_pickup_flg,f.job_title_code,f.job_title_name  FROM (SELECT a.* FROM wlyy_prescription a left join wlyy_outpatient o ON o.id=a.outpatient_id  WHERE o.consumer = '"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        StringBuffer countSql = new StringBuffer("select COUNT(DISTINCT b.id) count FROM (SELECT a.* FROM wlyy_prescription a left join wlyy_outpatient o ON o.id=a.outpatient_id  WHERE o.consumer = '"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql.append(patient).append("') b  LEFT JOIN wlyy_prescription_expressage c ON c.outpatient_id = b.outpatient_id LEFT JOIN base_doctor f ON b.doctor=f.id  "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        countSql.append(patient).append("') b  LEFT JOIN wlyy_prescription_expressage c ON c.outpatient_id = b.outpatient_id LEFT JOIN base_doctor f ON b.doctor=f.id  "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(isSelectDrug)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if("0".equalsIgnoreCase(isSelectDrug)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sql.append(" left join wlyy_inspection m on b.outpatient_id =m.outpatient_id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                countSql.append(" left join wlyy_inspection m on b.outpatient_id =m.outpatient_id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if ("1".equalsIgnoreCase(isSelectDrug)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sql.append(" left join wlyy_prescription_info m on b.id =m.prescription_id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                countSql.append(" left join wlyy_prescription_info m on b.id =m.prescription_id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotEmpty(status)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            status = status.substring(1, status.length() - 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (StringUtils.isNoneBlank(isSelectDrug)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if("0".equalsIgnoreCase(isSelectDrug)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    sql.append(" where b.status IN( 9,").append(status).append(")"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    countSql.append(" where b.status IN( 9,").append(status).append(")"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    sql.append(" where b.status IN(").append(status).append(")"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    countSql.append(" where b.status IN(").append(status).append(")"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sql.append(" where b.status IN(").append(status).append(")"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                countSql.append(" where b.status IN(").append(status).append(")"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql.append("  where b.status IN(20,21,30,31,32,100,101)"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            countSql.append(" where b.status IN(20,21,30,31,32,100,101) "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNoneBlank(isSelectDrug)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if("0".equalsIgnoreCase(isSelectDrug)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sql.append(" and m.del =1 "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                countSql.append(" and m.del =1 "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if ("1".equalsIgnoreCase(isSelectDrug)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sql.append(" and m.del =1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                countSql.append(" and m.del =1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotEmpty(keyName)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql.append(" and (" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " b.doctor_name LIKE '%" + keyName + "%' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " OR b.dept_name LIKE'%" + keyName + "%' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " OR b.hospital_name LIKE '%" + keyName + "%' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " OR d.drug_name LIKE '%" + keyName + "%' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " OR b.real_order LIKE '%" + keyName + "%' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ")"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            countSql.append(" and (" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " b.doctor_name LIKE '%" + keyName + "%' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " OR b.dept_name LIKE'%" + keyName + "%' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " OR b.hospital_name LIKE '%" + keyName + "%' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " OR d.drug_name LIKE '%" + keyName + "%' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    " OR b.real_order LIKE '%" + keyName + "%' " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    ")"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (StringUtils.isNotEmpty(doctor)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql.append(" and  b.doctor ='" +doctor+"'"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            countSql.append(" and  b.doctor ='" +doctor+"'"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql.append(" order by b.prescribe_time DESC "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<WlyyPrescriptionVO> list = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if ("xm_ykyy_wx".equalsIgnoreCase(wxId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String oracleSql = "SELECT\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "\t*\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "FROM\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "\t(\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "\t\tSELECT\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "\t\t\tA .*\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "\t\tFROM\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "\t\t\t("; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            oracleSql += sql.toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            oracleSql += "\t\t\t) A\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "\t\tWHERE\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "  ROWNUM <=" + page * size + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "\t) \n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "WHERE\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "\tROWNUM >= " + (page - 1) * size; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (flag){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sql.append("  limit ").append((page - 1) * size).append(",").append(size); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                logger.info("MySql=" + sql.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                list = jdbcTemplate.query(sql.toString(), new BeanPropertyRowMapper<>(WlyyPrescriptionVO.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                logger.info("oracleSql=" + oracleSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                list = jdbcTemplate.query(oracleSql, new BeanPropertyRowMapper<>(WlyyPrescriptionVO.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            sql+=" LIMIT  " + (page - 1) * size + "," + size + ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            sql.append("  limit ").append((page - 1) * size).append(",").append(size); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.info("MySql=" + sql.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            list = jdbcTemplate.query(sql.toString(), new BeanPropertyRowMapper<>(WlyyPrescriptionVO.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (WlyyPrescriptionVO singlePre:list){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<WlyyPrescriptionInfoDO> infoDOs = prescriptionInfoDao.findByPrescriptionId(singlePre.getId(),1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.info("singlePreId===="+singlePre.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.info("infoDOs"+infoDOs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<WlyyPrescriptionInfoVO> infoVOS = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            convertToModels(infoDOs, infoVOS, WlyyPrescriptionInfoVO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.info("infoVOS"+infoVOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            singlePre.setInfoVOs(infoVOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<WlyyInspectionDO> inspectionDOS = wlyyInspectionDao.findByPrescriptionId(singlePre.getId(),1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<WlyyInspectionVO> inspectionVOS = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            convertToModels(inspectionDOS, inspectionVOS, WlyyInspectionVO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //BeanUtils.copyProperties(inspectionDOS,inspectionVOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            singlePre.setInspectionVOs(inspectionVOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        List<WlyyPrescriptionVO> list = jdbcTemplate.query(sql.toString(), new BeanPropertyRowMapper<>(WlyyPrescriptionVO.class)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logger.info("countSql=" + countSql.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String, Object>> mapList = jdbcTemplate.queryForList(countSql.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        long count = Long.parseLong(mapList.get(0).get("count").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return PageEnvelop.getSuccessListWithPage(IotRequestMapping.Common.message_success_find, list, page, size, count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Map<String,Object>  findPatientInfoById(String patientId,String doctor){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sql = "select b.id as \"id\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  b.group_code as \"groupCode\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  b.group_name as \"groupName\"" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  from base_patient_group t " + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " left join base_patient_group_dict b on t.group_id = b.id" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " where b.del = '1' and t.patient ='"+patientId+"' and t.doctor ='"+doctor+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        sql+=" group by b.id,b.group_code,b.group_name"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> list = hibenateUtils.createSQLQuery(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String patientSql= "select t.id as \"id\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.name as \"name\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.idcard as \"idcard\"," + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                " t.disease as \"disease\"" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                "  from base_patient t where t.del = '1' and t.id='"+patientId+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<Map<String,Object>> patientInfo = hibenateUtils.createSQLQuery(patientSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (patientInfo!=null&&patientInfo.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Map<String,Object> patient = patientInfo.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            String sex = IdCardUtil.getSexForIdcard_new(patient.get("idcard").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Integer age = IdCardUtil.getAgeForIdcard(patient.get("idcard").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            patient.put("sex",sex); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            patient.put("age",age); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            patient.put("groupList",list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return patient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |