Browse Source

在线复诊

Trick 5 years ago
parent
commit
7530b22ac5

+ 27 - 2
business/base-service/src/main/java/com/yihu/jw/hospital/mapping/service/PatientMappingService.java

@ -1,13 +1,18 @@
package com.yihu.jw.hospital.mapping.service;
import com.alibaba.fastjson.JSONArray;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.patient.dao.BasePatientDao;
import net.sf.json.JSONArray;
import com.yihu.jw.entity.hospital.mapping.PatientMappingDO;
import com.yihu.jw.hospital.mapping.dao.PatientMappingDao;
import com.yihu.jw.hospital.prescription.service.entrance.EntranceService;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
 * Created by Trick on 2019/5/27.
 * 互联网医院居民信息映射
@ -17,6 +22,8 @@ public class PatientMappingService {
    @Autowired
    private PatientMappingDao patientMappingDao;
    @Autowired
    private BasePatientDao basePatientDao;
    @Autowired
    private EntranceService entranceService;
@ -29,8 +36,26 @@ public class PatientMappingService {
        if(patientMappingDO!=null){
            return patientMappingDO.getMappingCode();
        }
        entranceService.BS15018(null,idCard,demoFlag);
        JSONArray rs = entranceService.BS15018(null,idCard,demoFlag);
        if(rs!=null&&rs.size()>0){
            //获取居民信息
            JSONObject json = rs.getJSONObject(0);
            String mappingCode = json.getString("PAT_NO");
            BasePatientDO patientDO =  basePatientDao.findByIdcardAndDel(idCard,"1");
            //存储对应映射关系
            PatientMappingDO mappingDO = new PatientMappingDO();
            mappingDO.setSource("1");
            mappingDO.setPatientName(patientDO.getName());
            mappingDO.setPatient(patientDO.getId());
            mappingDO.setMappingCode(mappingCode);
            mappingDO.setCreateTime(new Date());
            mappingDO.setIdcard(patientDO.getIdcard());
            patientMappingDao.save(mappingDO);
            return mappingCode;
        }
        return null;
    }
}

+ 98 - 18
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/PrescriptionService.java

@ -1,6 +1,5 @@
package com.yihu.jw.hospital.prescription.service;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.dict.dao.DictHospitalDeptDao;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.entity.base.dict.DictHospitalDeptDO;
@ -13,36 +12,42 @@ import com.yihu.jw.entity.hospital.consult.WlyyHospitalWaitingRoomDO;
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionDO;
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionDiagnosisDO;
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionExpressageDO;
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionInfoDO;
import com.yihu.jw.hospital.consult.dao.DoctorClinicRoomConsultDao;
import com.yihu.jw.hospital.consult.dao.HospitalWaitingRoomDao;
import com.yihu.jw.hospital.mapping.dao.PatientMappingDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionDiagnosisDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionExpressageDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionInfoDao;
import com.yihu.jw.hospital.prescription.service.entrance.EntranceService;
import com.yihu.jw.org.dao.BaseOrgDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.patient.dao.BasePatientMedicareCardDao;
import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionDiagnosisVO;
import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionExpressageVO;
import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionInfoVO;
import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionVO;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.rm.base.BaseRequestMapping;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.mysql.query.BaseJpaService;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * Created by Trick on 2019/5/17.
@ -75,8 +80,69 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
    private DictHospitalDeptDao dictHospitalDeptDao;
    @Autowired
    private BaseOrgDao baseOrgDao;
    @Autowired
    private EntranceService entranceService;
    @Autowired
    private PatientMappingDao patientMappingDao;
    @Value("${demo.flag}")
    private boolean demoFlag;
    /**
     * 获取居民就诊记录接口
     * @param patNo
     * @param startTime
     * @param endTime
     * @param demoFlag
     * @return
     * @throws Exception
     */
    public JSONArray findOutpatientList(String patNo, String startTime, String endTime, boolean demoFlag)throws Exception{
        return entranceService.BS30025(patNo,startTime,endTime,demoFlag);
    }
    /**
     * 原处方记录列表
     * @param registerSn
     * @param patNo
     * @param admNo
     * @param demoFlag
     * @return
     * @throws Exception
     */
    public List<WlyyPrescriptionVO> findOriginPrescriptionList(String registerSn,String patNo,String admNo,boolean demoFlag)throws Exception{
        return entranceService.BS16017(registerSn,patNo,admNo,null,demoFlag);
    }
    /**
     * 获取单条处方记录
     * @param registerSn
     * @param patNo
     * @param admNo
     * @param realOrder
     * @param demoFlag
     * @return
     * @throws Exception
     */
    public WlyyPrescriptionVO findOriginPrescription(String registerSn, String patNo, String admNo, String realOrder, boolean demoFlag)throws Exception{
        List<WlyyPrescriptionVO> rs = entranceService.BS16017(registerSn,patNo,admNo,realOrder,demoFlag);
        if(rs!=null&&rs.size()>0){
            return rs.get(0);
        }
        return null;
    }
    /**
     * 查询历史
     * @param patient
     * @param status
     * @param startTime
     * @param endTime
     * @param page
     * @param size
     * @return
     */
    public MixEnvelop findPrescriptionList(String patient, String status,String startTime, String endTime, Integer page, Integer size){
        String totalSql ="SELECT " +
@ -85,7 +151,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                " wlyy_prescription p ";
        totalSql += " WHERE 1=1 ";
        if(StringUtils.isNotBlank(patient)){
            totalSql+=" AND p.patient ='"+patient+"'";
            totalSql+=" AND p.patient_code ='"+patient+"'";
        }
        if(StringUtils.isNotBlank(status)){
            totalSql+=" AND p.status IN ("+status+")";
@ -150,7 +216,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
                " wlyy_prescription p " +
                " WHERE 1=1 ";
        if(StringUtils.isNotBlank(patient)){
            sql+=" AND p.patient ='"+patient+"'";
            sql+=" AND p.patient_code ='"+patient+"'";
        }
        if(StringUtils.isNotBlank(status)){
            sql+=" AND p.status IN ("+status+")";
@ -164,10 +230,12 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        sql += " LIMIT " + (page - 1) * size + "," + size + "";
        List<WlyyPrescriptionVO> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper(WlyyPrescriptionVO.class));
        //设置病种
        //设置病种,药品
        if(list!=null&&list.size()>0){
            for(WlyyPrescriptionVO vo:list){
                vo.setDiagnosisVOs(findDiagnosisById(vo.getId()));
                List<WlyyPrescriptionInfoVO> infoVOs = new ArrayList<>();
                vo.setInfoVOs(convertToModels(prescriptionInfoDao.findByPrescriptionId(vo.getId()),infoVOs,WlyyPrescriptionInfoVO.class));
            }
        }
@ -229,7 +297,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
     * @param json
     * @return
     */
    public Boolean appointmentRevisit(JSONObject json){
    public Boolean appointmentRevisit(JSONObject json)throws Exception{
        //1.创建支付
@ -243,22 +311,19 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
     * @param json
     * @return
     */
    public String paymentCallback(JSONObject json){
    public String paymentCallback(JSONObject json)throws Exception{
        //创建续方
        createPrescription(json);
        //创建诊室
        createRoom(json);
        return null;
    }
    public Boolean createPrescription(JSONObject json){
    public Boolean createPrescription(JSONObject json) throws Exception{
        String patient = json.getString("patient");
        String doctor = json.getString("doctor");
        String dept = json.getString("dept");
        String hospital = json.getString("hospital");
        String reservationTime = json.getString("reservationTime");
        Integer consultType = json.getInteger("consultType");
        String originRealOrder = json.getString("originRealOrder");
        String originAdmNo = json.getString("originAdmNo");
@ -268,8 +333,14 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        BasePatientDO basePatientDO = basePatientDao.findById(patient);
        PatientMedicareCardDO cardDO = basePatientMedicareCardDao.findByTypeAndPatientCodeAndDel(PatientMedicareCardDO.Type.MedicareCard.getType(),patient,"1");
        BaseDoctorDO baseDoctorDO = baseDoctorDao.findOne(doctor);
        String patNo  = patientMappingDao.findByIdcardAndSource(basePatientDO.getIdcard(),"1").getMappingCode();
        WlyyPrescriptionVO originPrescriptionVO = findOriginPrescription(serialNo,patNo,originAdmNo,originRealOrder,demoFlag);
        WlyyPrescriptionDO prescription = new WlyyPrescriptionDO();
        prescription.setOriginAdmNo(originAdmNo);
        prescription.setOriginRealOrder(originRealOrder);
        prescription.setOriginSerialNo(serialNo);
        prescription.setStatus(0);
        prescription.setPatientCode(patient);
        prescription.setPatientName(basePatientDO.getName());
@ -277,9 +348,18 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        prescription.setDoctor(doctor);
        prescription.setDoctorName(baseDoctorDO.getName());
        List<WlyyPrescriptionInfoVO> originInfoVOs = originPrescriptionVO.getInfoVOs();
        List<WlyyPrescriptionInfoDO> infoDOs = new ArrayList<>();
        List<WlyyPrescriptionDiagnosisVO> diagnosisVOs = originPrescriptionVO.getDiagnosisVOs();
        List<WlyyPrescriptionDiagnosisDO> diagnosisDOs = new ArrayList<>();
        prescriptionInfoDao.save(convertToModels(originInfoVOs,infoDOs,WlyyPrescriptionInfoDO.class));
        prescriptionDiagnosisDao.save(convertToModels(diagnosisVOs,diagnosisDOs,WlyyPrescriptionDiagnosisDO.class));
        prescriptionDao.save(prescription);
        return true;
    }
    public Boolean createRoom(JSONObject json){
        String patient = json.getString("patient");
@ -287,7 +367,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
        String dept = json.getString("dept");
        String hospital = json.getString("hospital");
        String reservationTime = json.getString("reservationTime");
        Integer consultType = json.getInteger("consultType");
        Integer consultType = json.getInt("consultType");
        BasePatientDO basePatientDO = basePatientDao.findById(patient);
        BaseDoctorDO baseDoctorDO = baseDoctorDao.findOne(doctor);

+ 2 - 0
business/base-service/src/main/java/com/yihu/jw/patient/dao/BasePatientDao.java

@ -17,6 +17,8 @@ public interface BasePatientDao extends PagingAndSortingRepository<BasePatientDO
    BasePatientDO findById(String id);
    BasePatientDO findByIdcardAndDel(String Idcard,String del);
    @Query("select id as id,idcard as idcard,name as name,case sex when 1 then '男' when 2 then '女' else '未知' end as sex,mobile as phone,committeeName as committeeName,concat(provinceName,cityName,townName,streetName) as address from BasePatientDO where idcard like ?1")
    List<Map<String,Object>> findByIdcard(String idcard, Pageable pageable);

+ 14 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/hospital/prescription/WlyyPrescriptionDO.java

@ -41,6 +41,11 @@ public class WlyyPrescriptionDO extends UuidIdentityEntity {
     */
    private String serialNo;
    /**
     * 序列号
     */
    private String originSerialNo;
    /**
     * 1 处方 2 续方
     */
@ -278,6 +283,15 @@ public class WlyyPrescriptionDO extends UuidIdentityEntity {
        this.serialNo = serialNo;
    }
    @Column(name = "origin_serial_no")
    public String getOriginSerialNo() {
        return originSerialNo;
    }
    public void setOriginSerialNo(String originSerialNo) {
        this.originSerialNo = originSerialNo;
    }
    @Column(name = "type")
    public Integer getType() {
        return type;

+ 4 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/hospital/BaseHospitalRequestMapping.java

@ -26,6 +26,10 @@ public class BaseHospitalRequestMapping {
        public static final String PREFIX  = "/prescription";
        /**
         * 获取门诊记录
         */
        public static final String findOutpatientList = "/findOutpatientList";
        /**
         * 原处方记录
         */

+ 11 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/hospital/prescription/WlyyPrescriptionVO.java

@ -53,6 +53,9 @@ public class WlyyPrescriptionVO extends UuidIdentityVOWithOperator {
    @ApiModelProperty(value = "挂号流水号", example = "模块1")
    private String serialNo;
    @ApiModelProperty(value = "原始挂号流水号", example = "模块1")
    private String originSerialNo;
    /**
     * 1 处方 2 续方
     */
@ -323,6 +326,14 @@ public class WlyyPrescriptionVO extends UuidIdentityVOWithOperator {
        this.serialNo = serialNo;
    }
    public String getOriginSerialNo() {
        return originSerialNo;
    }
    public void setOriginSerialNo(String originSerialNo) {
        this.originSerialNo = originSerialNo;
    }
    public Integer getType() {
        return type;
    }

+ 3 - 0
gateway/ag-basic/src/main/resources/application.yml

@ -52,6 +52,9 @@ zuul:
    svr-patient:
      path: /cityihealth/patient/**
      serviceId: svr-patient
    svr-internet-hospital:
      path: /hospital/**
      serviceId: svr-internet-hospital
---
spring:

+ 49 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/prescription/PrescriptionEndpoint.java

@ -2,6 +2,7 @@ package com.yihu.jw.hospital.endpoint.prescription;
import com.yihu.jw.hospital.prescription.service.PrescriptionService;
import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionVO;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.MixEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
@ -9,12 +10,15 @@ import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import net.sf.json.JSONArray;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
@ -28,6 +32,51 @@ public class PrescriptionEndpoint extends EnvelopRestEndpoint {
    @Autowired
    private PrescriptionService prescriptionService;
    @Value("${demo.flag}")
    private boolean demoFlag;
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.findOutpatientList)
    @ApiOperation(value = " 查询某个时间段的患者门诊就诊记录 V1.00")
    public ListEnvelop findOutpatientList(@ApiParam(name = "patNo", value = "居民id")
                               @RequestParam(value = "patNo",required = false) String patNo,
                               @ApiParam(name = "startTime", value = "开始时间")
                               @RequestParam(value = "startTime",required = false) String startTime,
                               @ApiParam(name = "endTime", value = "结束时间")
                               @RequestParam(value = "endTime",required = false) String endTime) throws Exception {
        JSONArray obj = prescriptionService.findOutpatientList(patNo, startTime, endTime, demoFlag);
        return success(obj);
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.findOriginPrescriptionList)
    @ApiOperation(value = "门诊下所有处方信息")
    public ListEnvelop findOriginPrescriptionList(
            @ApiParam(name = "registerSn", value = "流水号", required = false)
            @RequestParam(value = "registerSn",required = false) String registerSn,
            @ApiParam(name = "patNo", value = "病人id", required = false)
            @RequestParam(value = "patNo",required = false) String patNo,
            @ApiParam(name = "admNo", value = "住院唯一号", required = false)
            @RequestParam(value = "admNo",required = false) String admNo,
            @ApiParam(name = "realOrder", value = "处方号", required = false)
            @RequestParam(value = "realOrder",required = false) String realOrder) throws Exception {
        List<WlyyPrescriptionVO> obj = prescriptionService.findOriginPrescriptionList(registerSn, patNo, admNo, demoFlag);
        return success(obj);
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.findOriginPrescription)
    @ApiOperation(value = "历史处方信息(单条)")
    public ObjEnvelop findOriginPrescription(
            @ApiParam(name = "registerSn", value = "流水号", required = false)
            @RequestParam(value = "registerSn",required = false) String registerSn,
            @ApiParam(name = "patNo", value = "病人id", required = false)
            @RequestParam(value = "patNo",required = false) String patNo,
            @ApiParam(name = "admNo", value = "住院唯一号", required = false)
            @RequestParam(value = "admNo",required = false) String admNo,
            @ApiParam(name = "realOrder", value = "处方号", required = false)
            @RequestParam(value = "realOrder",required = false) String realOrder) throws Exception {
        WlyyPrescriptionVO obj = prescriptionService.findOriginPrescription(registerSn, patNo, admNo,realOrder, demoFlag);
        return success(obj);
    }
    @GetMapping(value = BaseHospitalRequestMapping.Prescription.findPrescriptionList)
    @ApiOperation(value = "获取续方记录列表", notes = "获取续方记录列表")
    public MixEnvelop<WlyyPrescriptionVO,WlyyPrescriptionVO> findPrescriptionList(@ApiParam(name = "patient", value = "居民code")