Browse Source

基卫接口:返回支付信息

huangwenjie 7 years ago
parent
commit
432ec7fc4e

+ 95 - 0
common/common-entity/src/main/java/com/yihu/wlyy/entity/doctor/DoctorMapping.java

@ -0,0 +1,95 @@
package com.yihu.wlyy.entity.doctor;
import com.yihu.wlyy.entity.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * 机构映射表
 * @author hzp
 */
@Entity
@Table(name = "wlyy_doctor_mapping")
public class DoctorMapping extends IdEntity {
    // 基卫医生代码
    private String jwDoctor;
    // 基卫医生名称
    private String jwDoctorName;
    // 基卫医生性别
    private String jwDocotrSex;
    // 基卫医生身份证
    private String jwDocotrIdcard;
    // 基卫医生医院
    private String jwDoctorHospital;
    // 基卫医生医院名称
    private String jwDoctorHospiatlName;
    // 医生代码
    private String doctorCode;
    @Column(name="jw_doctor")
    public String getJwDoctor() {
        return jwDoctor;
    }
    public void setJwDoctor(String jwDoctor) {
        this.jwDoctor = jwDoctor;
    }
    @Column(name="jw_doctor_name")
    public String getJwDoctorName() {
        return jwDoctorName;
    }
    public void setJwDoctorName(String jwDoctorName) {
        this.jwDoctorName = jwDoctorName;
    }
    @Column(name="jw_doctor_sex")
    public String getJwDocotrSex() {
        return jwDocotrSex;
    }
    public void setJwDocotrSex(String jwDocotrSex) {
        this.jwDocotrSex = jwDocotrSex;
    }
    @Column(name="jw_doctor_idcard")
    public String getJwDocotrIdcard() {
        return jwDocotrIdcard;
    }
    public void setJwDocotrIdcard(String jwDocotrIdcard) {
        this.jwDocotrIdcard = jwDocotrIdcard;
    }
    @Column(name="jw_doctor_hospital")
    public String getJwDoctorHospital() {
        return jwDoctorHospital;
    }
    public void setJwDoctorHospital(String jwDoctorHospital) {
        this.jwDoctorHospital = jwDoctorHospital;
    }
    @Column(name="jw_doctor_hospital_name")
    public String getJwDoctorHospiatlName() {
        return jwDoctorHospiatlName;
    }
    public void setJwDoctorHospiatlName(String jwDoctorHospiatlName) {
        this.jwDoctorHospiatlName = jwDoctorHospiatlName;
    }
    @Column(name="doctor_code")
    public String getDoctorCode() {
        return doctorCode;
    }
    public void setDoctorCode(String doctorCode) {
        this.doctorCode = doctorCode;
    }
}

+ 28 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/doctor/DoctorMappingDao.java

@ -0,0 +1,28 @@
package com.yihu.wlyy.repository.doctor;
import com.yihu.wlyy.entity.doctor.DoctorMapping;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * 医生映射接口
 **/
public interface DoctorMappingDao extends PagingAndSortingRepository<DoctorMapping, Long>,JpaSpecificationExecutor<DoctorMapping> {
    @Query("select a.jwDoctor from DoctorMapping a where a.doctorCode = ?1 and a.jwDoctorHospital = ?2")
    String findByDocotrCodeAndJwDoctorHospital(String docotrCode,String jwDoctorHospital);
    DoctorMapping findByJwDoctorHospitalAndJwDoctor(String jwDoctorHospital,String jwDoctor);
    @Query("select a from Doctor a,DoctorMapping b where a.code = b.doctorCode and b.jwDoctorHospital = ?1 and b.jwDoctor = ?2")
    Doctor getDoctorByJw(String jwDoctorHospital, String jwDoctor);
    @Query("select a from Doctor a,DoctorMapping b where a.code = b.doctorCode and a.code = ?1 and b.jwDoctorHospital = ?2")
    Doctor getDoctor(String docotrCode,String jwDoctorHospital);
    @Query("from DoctorMapping a where a.jwDoctorHospital = ?1 and a.doctorCode = ?2")
    DoctorMapping findByJwDoctorHospitalAndDoctorCode(String jwDoctorHospital,String doctorCode);
}

+ 4 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/prescription/PrescriptionDao.java

@ -26,4 +26,8 @@ public interface PrescriptionDao extends PagingAndSortingRepository<Prescription
    //根据处方code得到患者信息
    @Query("select p from Prescription pt,Patient p where p.code=pt.patient  and pt.code=?1")
    Patient findPatientByPrescriptionCode(String prescriptionCode);
    @Query("from Prescription p where p.visitNo=?1")
    Prescription findByVisitNo(String visitNo);
}

+ 88 - 52
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/prescription/PrescriptionService.java

@ -1,15 +1,20 @@
package com.yihu.wlyy.service.app.prescription;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.wlyy.entity.doctor.DoctorMapping;
import com.yihu.wlyy.entity.message.Message;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.patient.prescription.Prescription;
import com.yihu.wlyy.entity.patient.prescription.PrescriptionDiagnosis;
import com.yihu.wlyy.entity.patient.prescription.PrescriptionExpressage;
import com.yihu.wlyy.entity.patient.prescription.PrescriptionLog;
import com.yihu.wlyy.repository.doctor.DoctorMappingDao;
import com.yihu.wlyy.repository.message.MessageDao;
import com.yihu.wlyy.repository.patient.PatientDao;
import com.yihu.wlyy.repository.prescription.PrescriptionDao;
import com.yihu.wlyy.repository.prescription.PrescriptionDiagnosisDao;
import com.yihu.wlyy.repository.prescription.PrescriptionExpressageDao;
import com.yihu.wlyy.service.BaseService;
import com.yihu.wlyy.service.third.jw.JwPrescriptionService;
@ -22,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
 * Created by chenweida on 2017/7/27.
@ -45,6 +51,10 @@ public class PrescriptionService extends BaseService {
    private PatientDao patientDao;
    @Autowired
    private JwPrescriptionService jwPrescriptionService;
    @Autowired
    private DoctorMappingDao doctorMappingDao;
    @Autowired
    private PrescriptionDiagnosisDao prescriptionDiagnosisDao;
    /**
@ -110,68 +120,94 @@ public class PrescriptionService extends BaseService {
     */
    public JSONObject getPayInfo(String cardNo,String visitNo) throws Exception {
        //根据医保卡号和挂号号从基卫获取待结算明细
        String result = jwPrescriptionService.getDispUnSettleFeeInfoList(cardNo,visitNo);
        //根据挂号号获取处方明细
        Prescription prescription = prescriptionDao.findByVisitNo(visitNo);
        //根据机构名称,医生编码获取基卫医生详细信息
        DoctorMapping doctorMapping = doctorMappingDao.findByJwDoctorHospitalAndDoctorCode(prescription.getHospitalName(),prescription.getDoctor());
        JSONObject json = new JSONObject();
        //处方主信息{"yyksbm":"医生科室编号","bcsfcs":"本次收费次数","yszjhm":"医生证件号码","ysxm00":"医生姓名","mzlb00":"门诊类别","sfydgh":"是否药店挂号",
        // "bcghcs":"本次挂号次数","ghksmc":"挂号科室名称","cfxms0":"明细上传数量","mzlsh0":"医保挂号流水号 如果为空,将自动医保挂号并收费","ghfy00":"挂号费用",
        // "yszjdj":"医师诊金级别","bqbm00":"病情编码","sfygwd":"是否医改网点"}
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("yyksbm","医生科室编号");//医生科室编号
        jsonObject.put("bcsfcs",1+"");//本次收费次数
        jsonObject.put("yszjhm","医生证件号码");//医生证件号码
        jsonObject.put("ysxm00","医生姓名");//医生姓名
        jsonObject.put("mzlb00","门诊类别");//门诊类别
        jsonObject.put("sfydgh",1+"");//是否药店挂号
        jsonObject.put("bcghcs",1+"");//本次挂号次数
        jsonObject.put("ghksmc","挂号科室名称");//挂号科室名称
        jsonObject.put("cfxms0",1+"");//明细上传数量
        jsonObject.put("mzlsh0","医保挂号流水号");//医保挂号流水号
        jsonObject.put("ghfy00",10+"");//挂号费用
        jsonObject.put("yszjdj","医师诊金级别");//医师诊金级别
        jsonObject.put("bqbm00","病情编码");//病情编码
        jsonObject.put("sfygwd",1+"");//是否医改网点
        jsonObject.put("yyksbm","医生科室编号");//医生科室编号-------------------------待处理
        jsonObject.put("bcsfcs",1);//本次收费次数
        jsonObject.put("yszjhm",doctorMapping.getJwDocotrIdcard());//医生证件号码
        jsonObject.put("ysxm00",doctorMapping.getJwDoctorName());//医生姓名
        jsonObject.put("mzlb00",101);//门诊类别---普通门诊默认为101
        jsonObject.put("sfydgh","N");//是否药店挂号,默认为N,不是药店挂号
        jsonObject.put("bcghcs",1);//本次挂号次数
        jsonObject.put("ghksmc","挂号科室名称");//挂号科室名称--------------------------待处理
        jsonObject.put("mzlsh0","");//医保挂号流水号
        jsonObject.put("ghfy00",0);//挂号费用
        jsonObject.put("yszjdj","医师诊金级别");//医师诊金级别--------------------------待处理
        jsonObject.put("bqbm00","");//病情编码---可为空,不传递
        jsonObject.put("sfygwd","N");//是否医改网点--默认为否
        json.put("recipeContent",jsonObject);
        List<PrescriptionDiagnosis> pds = prescriptionDiagnosisDao.findByPrescriptionCode(prescription.getCode());
        //诊断明细        {"zdms00":"诊断或症状描述","zdbh00":"诊断或症状编码"}
        JSONArray zdInfo = new JSONArray();
        JSONObject j1 = new JSONObject();
        j1.put("zdms00","诊断或症状描述");//诊断或症状描述
        j1.put("zdbh00","诊断或症状编码");//诊断或症状编码
        zdInfo.add(j1);
        json.put("zdlist",zdInfo);
        //处方明细        {"xmgg00":"项目规格","cfhao0":"处方号","sfybxm":"是否医保项目","dcyydw":"单次用药单位","xmje00":"项目金额","xmbh00":"项目编号",
        // "ysxm00":"医生姓名","yppl00":"药品频率","gytj00":"给药途径","ypts00":"药品天数","xmdj00":"项目单价","qyzl00":"取药总量","ylts00":"药量天数",
        // "sptxbm":"商品条形编码","xmmc00":"项目名称","fpxmbh":"发票项目编号","xmsl00":"项目数量","ypyl00":"药品用量","qyzldw":"取药单位","xmdw00":"项目单位",
        // "jx0000":"剂型"}
        JSONArray cfInfo = new JSONArray();
        JSONObject j2 = new JSONObject();
        j2.put("xmgg00","项目规格");//项目规格
        j2.put("cfhao0","处方号");//处方号
        j2.put("sfybxm",1+"");//是否医保项目
        j2.put("dcyydw","单次用药单位");//单次用药单位
        j2.put("xmje00",111+"");//项目金额
        j2.put("xmje00","项目规格");//项目金额
        j2.put("xmbh00","项目编号");//项目编号
        j2.put("ysxm00","医生姓名");//医生姓名
        j2.put("yppl00","药品频率");//药品频率
        j2.put("gytj00","给药途径");//给药途径
        j2.put("ypts00",3+"");//药品天数
        j2.put("xmdj00",35+"");//项目单价
        j2.put("qyzl00",4+"");//取药总量
        j2.put("ylts00",3+"");//药量天数
        j2.put("sptxbm","商品条形编码");//商品条形编码
        j2.put("xmmc00","项目名称");//项目名称
        j2.put("fpxmbh","发票项目编号");//发票项目编号
        j2.put("xmsl00","项目数量");//项目数量
        j2.put("ypyl00","药品用量");//药品用量
        j2.put("qyzldw","取药单位");//取药单位
        j2.put("qyzl00","药品频率");//取药总量
        j2.put("xmdw00","项目单位");//项目单位
        j2.put("jx0000","剂型");//剂型
        cfInfo.add(j2);
        json.put("mxlist",cfInfo);
        if (!pds.isEmpty()){
            for (PrescriptionDiagnosis pd : pds) {
                JSONArray zdInfo = new JSONArray();
                JSONObject j1 = new JSONObject();
                j1.put("zdms00",pd.getName());//诊断或症状描述
                j1.put("zdbh00",pd.getCode());//诊断或症状编码
                zdInfo.add(j1);
                json.put("zdlist",zdInfo);
            }
        }
        if(StringUtils.isNotBlank(result)){
            JSONObject zyCfinfo =  JSON.parseObject(result);
            Integer code = zyCfinfo.getInteger("CODE");
            if( 1 == code){
                JSONArray zyCfinfoListReturnData = zyCfinfo.getJSONArray("returnData");
                JSONArray zyCfinfoList = zyCfinfoListReturnData.getJSONArray(0);
                jsonObject.put("cfxms0",zyCfinfoList.size());//明细上传数量
                //收费明细       {"xmgg00":"项目规格","cfhao0":"处方号","sfybxm":"是否医保项目","dcyydw":"单次用药单位","xmje00":"项目金额","xmbh00":"项目编号",
                // "ysxm00":"医生姓名","yppl00":"药品频率","gytj00":"给药途径","ypts00":"药品天数","xmdj00":"项目单价","qyzl00":"取药总量","ylts00":"药量天数",
                // "sptxbm":"商品条形编码","xmmc00":"项目名称","fpxmbh":"发票项目编号","xmsl00":"项目数量","ypyl00":"药品用量","qyzldw":"取药单位","xmdw00":"项目单位",
                // "jx0000":"剂型"}
                JSONArray cfInfo = new JSONArray();
                for (int i = 0; i < zyCfinfoList.size(); i++) {
                    JSONObject zyCfinfoObj = zyCfinfoList.getJSONObject(i);
                    JSONObject j2 = new JSONObject();
                    j2.put("xmbh00",zyCfinfoObj.getString("INSUR_ITEM_CODE"));//项目编号
                    j2.put("xmmc00",zyCfinfoObj.getString("INSUR_ITEM_NAME"));//项目名称
                    j2.put("fpxmbh","");//发票项目编号
                    j2.put("sfybxm",zyCfinfoObj.getString("INSUR_FLAG"));//是否医保项目
                    j2.put("xmdj00",zyCfinfoObj.getString("INSUR_ITEM_PRICE"));//项目单价
                    j2.put("xmdw00",zyCfinfoObj.getString("INSUR_ITEM_UNIT_NAME"));//项目单位
                    j2.put("xmgg00",zyCfinfoObj.getString("INSUR_ITEM_SPEC"));//项目规格(医保)
                    j2.put("xmsl00",zyCfinfoObj.getString("ITEM_QUANTITY"));//项目数量
                    j2.put("xmje00",zyCfinfoObj.getString("COST"));//项目金额
                    j2.put("ysxm00",doctorMapping.getJwDoctorName());//医生姓名
                    j2.put("sptxbm","");//商品条形编码
                    j2.put("yppl00",zyCfinfoObj.getString("FREQUENCY"));//药品频率
                    j2.put("ypyl00",zyCfinfoObj.getString("PHYSIC_DOSE"));//药品用量
                    j2.put("cfhao0",zyCfinfoObj.getString("VISIT_NO"));//处方号
                    j2.put("jx0000",zyCfinfoObj.getString("PHYSIC_FORM"));//剂型
                    j2.put("dcyydw",zyCfinfoObj.getString("PHYSIC_DOSE_UNIT"));//单次用药单位
                    j2.put("qyzl00",zyCfinfoObj.getString("PHYSIC_AMOUNT"));//取药总量
                    j2.put("qyzldw",zyCfinfoObj.getString("PHYSIC_AMOUNT_UNIT"));//取药单位
                    j2.put("gytj00",zyCfinfoObj.getString("PHYSIC_USAGE"));//给药途径
                    j2.put("ypts00",zyCfinfoObj.getString("DAY_COUNT"));//药品天数
                     cfInfo.add(j2);
                }
                json.put("mxlist",cfInfo);
            }else{
                String errormessage = zyCfinfo.getString("MESSAGE");
                throw new Exception(errormessage);
            }
        }
        return json;
    }