|
@ -1199,4 +1199,361 @@ public class HcyyPrescriptionService extends BaseJpaService<WlyyPrescriptionDO,
|
|
|
return str;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//======================合理用药===========================
|
|
|
public String getUseDrugUrl(){
|
|
|
|
|
|
List<WlyyHospitalSysDictDO> list = wlyyHospitalSysDictDao.findByDictName("useDrugUrl");
|
|
|
String url = list.get(0).getDictCode();
|
|
|
return url;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 3.1 基础标记
|
|
|
*
|
|
|
* @param hospitalCode 医院/院区编码
|
|
|
* @param eventNo 就诊流水号
|
|
|
* @param patientId 患者id
|
|
|
* @param source 请求数据的来源,传入固定值:门诊
|
|
|
* @return
|
|
|
*/
|
|
|
public String initBaseParam(String hospitalCode,String eventNo,String patientId,String source){
|
|
|
String base = "<base> ";
|
|
|
source = "门诊";
|
|
|
if (StringUtils.isNoneBlank(hospitalCode)){
|
|
|
base +=" <hospital_code>"+hospitalCode+"</hospital_code> ";
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isNoneBlank(eventNo)){
|
|
|
base +=" <event_no>"+eventNo+"</event_no> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(patientId)){
|
|
|
base +=" <patient_id>"+patientId+"</patient_id> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(source)){
|
|
|
base +=" <source>"+source+"</source> ";
|
|
|
}
|
|
|
base+="</base>";
|
|
|
return base;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
*3.2 患者就诊
|
|
|
* @param sex 传入4种值:男/女/M/F
|
|
|
* @param name
|
|
|
* @param idType 患者在医院登记的证件类型,如:身份证、户口本等
|
|
|
* @param idNo 患者在医院登记证件对应的号码
|
|
|
* @param birthWeight 患者出生时的体重, 必须包含数字和单位,计量单位:g,如3500g
|
|
|
* @param birthday 患者的出生日期,格式:yyyy-mm-dd
|
|
|
* @param medCardNo 患者就诊时所使用的医疗卡号
|
|
|
* @param eventTime 患者到医院的就诊时间,一般为挂号时间,格式:yyyy-mm-dd hh24:mi:ss
|
|
|
* @param deptId 系统运行核心关联字段,患者挂号的科室id
|
|
|
* @param deptName 患者挂号的科室名称
|
|
|
* @param payType 患者付费方式,如:自费、市医保、省医保等
|
|
|
* @param pregnancy 是否怀孕 1: 是0: 否
|
|
|
* @param timeOfPreg 孕期 孕妇的妊娠时长,只传数字,默认计量单位:周
|
|
|
* @param breastFeeding 是否哺乳1: 是0: 否
|
|
|
* @param height 身高
|
|
|
* @param weight 体重
|
|
|
* @param address 联系地址
|
|
|
* @param phoneNo 联系电话
|
|
|
* @param dialysis 是否透析 1: 是0: 否
|
|
|
* @param patientCondition 一些笼统的描述信息,如:普通病人、危重病人
|
|
|
* @return
|
|
|
*/
|
|
|
public String initOptPatientParam(String sex,String name,String idType,String idNo,String birthWeight,String birthday,String medCardNo,
|
|
|
String eventTime,String deptId,String deptName,String payType,String pregnancy,String timeOfPreg,String breastFeeding,
|
|
|
String height,String weight,String address,String phoneNo,String dialysis,String patientCondition){
|
|
|
String optPatient = "<opt_patient> ";
|
|
|
if (StringUtils.isNoneBlank(sex)){
|
|
|
optPatient +=" <sex>"+sex+"</sex> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(name)){
|
|
|
optPatient +=" <name>"+name+"</name> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(idType)){
|
|
|
optPatient +=" <id_type>"+idType+"</id_type> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(idNo)){
|
|
|
optPatient +=" <id_no>"+idNo+"</id_no> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(birthWeight)){
|
|
|
optPatient +=" <birth_weight>"+birthWeight+"</birth_weight> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(birthday)){
|
|
|
optPatient +=" <birthday>"+birthday+"</birthday> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(medCardNo)){
|
|
|
optPatient +=" <med_card_no>"+medCardNo+"</med_card_no> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(eventTime)){
|
|
|
optPatient +=" <event_time>"+eventTime+"</event_time> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(deptId)){
|
|
|
optPatient +=" <dept_id>"+deptId+"</dept_id> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(deptName)){
|
|
|
optPatient +=" <dept_name>"+deptName+"</dept_name> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(payType)){
|
|
|
optPatient +=" <pay_type>"+payType+"</pay_type> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(pregnancy)){
|
|
|
optPatient +=" <pregnancy>"+pregnancy+"</pregnancy> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(timeOfPreg)){
|
|
|
optPatient +=" <time_of_preg>"+timeOfPreg+"</time_of_preg> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(breastFeeding)){
|
|
|
optPatient +=" <breast_feeding>"+breastFeeding+"</breast_feeding> ";
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isNoneBlank(height)){
|
|
|
optPatient +=" <height>"+height+"</height> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(weight)){
|
|
|
optPatient +=" <weight>"+weight+"</weight> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(address)){
|
|
|
optPatient +=" <address>"+address+"</address> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(phoneNo)){
|
|
|
optPatient +=" <phone_no>"+phoneNo+"</phone_no> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(dialysis)){
|
|
|
optPatient +=" <dialysis>"+dialysis+"</dialysis> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(patientCondition)){
|
|
|
optPatient +=" <patient_condition>"+patientCondition+"</patient_condition> ";
|
|
|
}
|
|
|
optPatient+="</opt_patient>";
|
|
|
return optPatient;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**3.3.1 处方单
|
|
|
*
|
|
|
* @param recipeId 系统运行核心关联字段,一张处方实体的唯一标记,院内唯一,主键
|
|
|
* @param recipeNo 如不存在,和处方id传值一样即可
|
|
|
* @param recipeSource 三种值:门诊,急诊
|
|
|
* @param recipeType 三种值:西药方,中成药方,草药方
|
|
|
* @param recipeDocId 系统运行核心关联字段,开方医生工号
|
|
|
* @param recipeDocName 开方医生姓名
|
|
|
* @param recipeDocTitle 开方医生的职称,如:主治医师、副主任医师、主任医师等。
|
|
|
* @param deptId 系统运行核心关联字段,开方医师所属科室id
|
|
|
* @param deptName 开方医师所属科室名称
|
|
|
* @param recipeTime 系统运行核心字段,格式:yyyy-mm-dd hh24:mi:ss
|
|
|
* @param herbUnitPrice 如果是中药饮片处方,此处必填
|
|
|
* @param herbPacketCount 如果是中药饮片处方,此处必填
|
|
|
* @param recipeFeeTotal 处方总金额
|
|
|
* @param recipeStatus 0: 新开或修改处方。数据要求:传入的所有药品明细发药数量值均必须大于0
|
|
|
* @param originalRecipeId 当Recipe_status为1时表示退药处方时,则必须传入当前退药处方所对应原始处方的处方id
|
|
|
* @param urgentFlag 用于处方的优先审核 1: 是0: 否
|
|
|
|
|
|
* @return
|
|
|
*/
|
|
|
public String initPrescriptionInfoParam(String recipeId,String recipeNo,String recipeSource,String recipeType,String recipeDocId,String recipeDocName,String recipeDocTitle,
|
|
|
String deptId,String deptName,String recipeTime,String herbUnitPrice,String herbPacketCount,String recipeFeeTotal,
|
|
|
String recipeStatus,String originalRecipeId,String urgentFlag){
|
|
|
String optPatient = "<opt_prescription_info>";
|
|
|
if (StringUtils.isNoneBlank(recipeId)){
|
|
|
optPatient +=" <recipe_id>"+recipeId+"</recipe_id> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(recipeNo)){
|
|
|
optPatient +=" <recipe_no>"+recipeNo+"</recipe_no> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(recipeSource)){
|
|
|
optPatient +=" <recipe_source>"+recipeSource+"</recipe_source> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(recipeType)){
|
|
|
optPatient +=" <recipe_type>"+recipeType+"</recipe_type> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(recipeDocId)){
|
|
|
optPatient +=" <recipe_doc_id>"+recipeDocId+"</recipe_doc_id> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(recipeDocName)){
|
|
|
optPatient +=" <recipe_doc_name>"+recipeDocName+"</recipe_doc_name> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(recipeDocTitle)){
|
|
|
optPatient +=" <recipe_doc_title>"+recipeDocTitle+"</recipe_doc_title> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(deptId)){
|
|
|
optPatient +=" <dept_id>"+deptId+"</dept_id> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(deptName)){
|
|
|
optPatient +=" <dept_name>"+deptName+"</dept_name> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(recipeTime)){
|
|
|
optPatient +=" <recipe_time>"+recipeTime+"</recipe_time> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(herbUnitPrice)){
|
|
|
optPatient +=" <herb_unit_price>"+herbUnitPrice+"</herb_unit_price> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(herbPacketCount)){
|
|
|
optPatient +=" <herb_packet_count>"+herbPacketCount+"</herb_packet_count> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(recipeFeeTotal)){
|
|
|
optPatient +=" <recipe_fee_total>"+recipeFeeTotal+"</recipe_fee_total> ";
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isNoneBlank(recipeStatus)){
|
|
|
optPatient +=" <recipe_status>"+recipeStatus+"</recipe_status> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(originalRecipeId)){
|
|
|
optPatient +=" <original_recipe_id>"+originalRecipeId+"</original_recipe_id> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(urgentFlag)){
|
|
|
optPatient +=" <urgent_flag>"+urgentFlag+"</urgent_flag> ";
|
|
|
}
|
|
|
|
|
|
optPatient+="</opt_prescription_info>";
|
|
|
return optPatient;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 3.3.2 处方明细
|
|
|
*
|
|
|
* @param recipeId 系统运行核心关联字段,一张处方实体的唯一标记,院内唯一,主键
|
|
|
* @param recipeItemId 系统运行核心关联字段,唯一标记处方中的每一项药物医嘱
|
|
|
* @param drugId 系统运行核心关联字段,医院药品id,传入约定的药品编码
|
|
|
* @param drugName 药品的通用名称
|
|
|
* @param specification 药品规格的描述,如0.5gx24
|
|
|
* @param preparation 药品剂型名称
|
|
|
* @param manufacturerName 药品产地名称
|
|
|
* @param countUnit 如果一盒药品12片,发药单位为片时,包装规格数量为1
|
|
|
* @param drugDose 医生开立的单次给药剂量,值必须是数字+单位,如:0.5g 、200ml等
|
|
|
* @param despensingNum 当处方状态为-1(部分药品退费退药)时,这里填写负值,表示具体退多少。
|
|
|
正常处方状态情况,请填写最终生效值,表示最终的发药数量。
|
|
|
* @param packUnit 发药单位,和发药数量对应,例如:瓶、盒、片等
|
|
|
* @param unitPrice 药品的费用单价
|
|
|
* @param feeTotal 药品的单价*发药数量,计量单位为元
|
|
|
* @param groupNo 药物的分组号,同组药物组号一致。
|
|
|
* @param drugAdminRouteName 传入约定的药品使用途径,如:静脉推注等
|
|
|
* @param drugUsingFreq 传入约定的药品给药频次,如:qd、bid等,
|
|
|
* @param drugUsingTimePoint 药品给药时机,如:饭前、饭后、空腹等
|
|
|
* @param drugUsingAim 药品的用药目的,预防|治疗|其他
|
|
|
* @param drugUsingArea 药品使用部位
|
|
|
* @param infusionSpeed 静脉输液药品滴注时长或速度的描述,需同时包含数字和单位,如:1小时、20滴/分钟
|
|
|
* @param duration 由医生指定的药品使用天数或次数,如:5天,10次等
|
|
|
* @param specialPrompt 备注信息,如饮片的先煎、后下等
|
|
|
* @param skinTestFlag 1: 皮试0: 非皮试
|
|
|
* @param skinTestResult 皮试结果
|
|
|
* @param ouvasFlag 门诊静配标志
|
|
|
* @param medicareType 结算方式
|
|
|
* @param startTime 开始使用时间
|
|
|
* @param endTime 结束使用时间
|
|
|
* @return
|
|
|
*/
|
|
|
public String initPrescriptionItemParam(String recipeId,String recipeItemId,String drugId,String drugName,String specification,String preparation,String manufacturerName,
|
|
|
String countUnit,String drugDose,String despensingNum,String packUnit,String unitPrice,String feeTotal,
|
|
|
String groupNo,String drugAdminRouteName,String drugUsingFreq,String drugUsingTimePoint,String drugUsingAim,String drugUsingArea,
|
|
|
String infusionSpeed,String duration,String specialPrompt,String skinTestFlag,String skinTestResult,String ouvasFlag,
|
|
|
String medicareType,String startTime,String endTime){
|
|
|
String optPatient = "<opt_prescription_item>";
|
|
|
if (StringUtils.isNoneBlank(recipeId)){
|
|
|
optPatient +=" <recipe_id>"+recipeId+"</recipe_id> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(recipeItemId)){
|
|
|
optPatient +=" <recipe_item_id>"+recipeItemId+"</recipe_item_id> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(drugId)){
|
|
|
optPatient +=" <drug_id>"+drugId+"</drug_id> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(drugName)){
|
|
|
optPatient +=" <drug_name>"+drugName+"</drug_name> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(specification)){
|
|
|
optPatient +=" <specification>"+specification+"</specification> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(preparation)){
|
|
|
optPatient +=" <preparation>"+preparation+"</preparation> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(manufacturerName)){
|
|
|
optPatient +=" <manufacturer_name>"+manufacturerName+"</manufacturer_name> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(countUnit)){
|
|
|
optPatient +=" <count_unit>"+countUnit+"</count_unit> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(drugDose)){
|
|
|
optPatient +=" <drug_dose>"+drugDose+"</drug_dose> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(despensingNum)){
|
|
|
optPatient +=" <despensing_num>"+despensingNum+"</despensing_num> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(packUnit)){
|
|
|
optPatient +=" <pack_unit>"+packUnit+"</pack_unit> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(unitPrice)){
|
|
|
optPatient +=" <unit_price>"+unitPrice+"</unit_price> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(feeTotal)){
|
|
|
optPatient +=" <fee_total>"+feeTotal+"</fee_total> ";
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isNoneBlank(groupNo)){
|
|
|
optPatient +=" <group_no>"+groupNo+"</group_no> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(drugAdminRouteName)){
|
|
|
optPatient +=" <drug_admin_route_name>"+drugAdminRouteName+"</drug_admin_route_name> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(drugUsingFreq)){
|
|
|
optPatient +=" <drug_using_freq>"+drugUsingFreq+"</drug_using_freq> ";
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isNoneBlank(drugUsingTimePoint)){
|
|
|
optPatient +=" <drug_using_time_point>"+drugUsingTimePoint+"</drug_using_time_point> ";
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isNoneBlank(drugUsingAim)){
|
|
|
optPatient +=" <drug_using_aim>"+drugUsingAim+"</drug_using_aim> ";
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isNoneBlank(drugUsingArea)){
|
|
|
optPatient +=" <drug_using_area>"+drugUsingArea+"</drug_using_area> ";
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isNoneBlank(infusionSpeed)){
|
|
|
optPatient +=" <infusion_speed>"+infusionSpeed+"</infusion_speed> ";
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(duration)){
|
|
|
optPatient +=" <duration>"+duration+"</duration> ";
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isNoneBlank(specialPrompt)){
|
|
|
optPatient +=" <special_prompt>"+specialPrompt+"</special_prompt> ";
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isNoneBlank(skinTestFlag)){
|
|
|
optPatient +=" <skin_test_flag>"+skinTestFlag+"</skin_test_flag> ";
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isNoneBlank(skinTestResult)){
|
|
|
optPatient +=" <skin_test_result>"+skinTestResult+"</skin_test_result> ";
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isNoneBlank(ouvasFlag)){
|
|
|
optPatient +=" <ouvas_flag>"+ouvasFlag+"</ouvas_flag> ";
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isNoneBlank(ouvasFlag)){
|
|
|
optPatient +=" <ouvas_flag>"+ouvasFlag+"</ouvas_flag> ";
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isNoneBlank(medicareType)){
|
|
|
optPatient +=" <medicare_type>"+medicareType+"</medicare_type> ";
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isNoneBlank(startTime)){
|
|
|
optPatient +=" <start_time>"+startTime+"</start_time> ";
|
|
|
}
|
|
|
|
|
|
if (StringUtils.isNoneBlank(endTime)){
|
|
|
optPatient +=" <end_time>"+endTime+"</end_time> ";
|
|
|
}
|
|
|
|
|
|
optPatient+="</opt_prescription_item>";
|
|
|
return optPatient;
|
|
|
}
|
|
|
}
|