|
@ -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;
|
|
|
}
|