fix(doctorstation): 解决医嘱签发时关键字段缺失问题 bug#181
- 处理前端体征字段中的 null 值转换为空字符串 - 移除后端保存和签发逻辑中的条件判断,确保关键字段始终被设置 - 修复 BUG #181 中医嘱签发时缺少必要业务字段的问题 - 统一保存和签发流程中的字段赋值逻辑 - 保持业务编号在签发时的一致性处理
This commit is contained in:
@@ -634,38 +634,40 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
if (is_sign) {
|
if (is_sign) {
|
||||||
medicationRequest.setSignCode(signCode);
|
medicationRequest.setSignCode(signCode);
|
||||||
}
|
}
|
||||||
// 保存时,处理数据(请求,发放,账单)
|
// 🔧 Bug Fix: 签发时也需要设置关键字段(修复BUG #181)
|
||||||
|
// 保存时生成业务编号,签发时沿用已有编号
|
||||||
if (is_save) {
|
if (is_save) {
|
||||||
medicationRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_RES_NO.getPrefix(), 4));
|
medicationRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_RES_NO.getPrefix(), 4));
|
||||||
medicationRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
|
||||||
medicationRequest.setQuantity(adviceSaveDto.getQuantity()); // 请求数量
|
|
||||||
medicationRequest.setExecuteNum(adviceSaveDto.getExecuteNum()); // 执行次数
|
|
||||||
medicationRequest.setUnitCode(adviceSaveDto.getUnitCode()); // 请求单位编码
|
|
||||||
medicationRequest.setLotNumber(adviceSaveDto.getLotNumber()); // 产品批号
|
|
||||||
medicationRequest.setCategoryEnum(adviceSaveDto.getCategoryEnum()); // 请求类型
|
|
||||||
medicationRequest.setMedicationId(adviceSaveDto.getAdviceDefinitionId());// 医嘱定义id
|
|
||||||
medicationRequest.setPatientId(adviceSaveDto.getPatientId()); // 患者
|
|
||||||
medicationRequest.setPractitionerId(adviceSaveDto.getPractitionerId()); // 开方医生
|
|
||||||
medicationRequest.setOrgId(adviceSaveDto.getFounderOrgId()); // 开方人科室
|
|
||||||
medicationRequest.setReqAuthoredTime(curDate); // 请求开始时间
|
|
||||||
// 发放药房
|
|
||||||
medicationRequest.setPerformLocation(adviceSaveDto.getLocationId());
|
|
||||||
medicationRequest.setEncounterId(adviceSaveDto.getEncounterId()); // 就诊id
|
|
||||||
medicationRequest.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
|
||||||
medicationRequest.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
|
||||||
medicationRequest.setTherapyEnum(adviceSaveDto.getTherapyEnum()); // 治疗类型,默认-临时
|
|
||||||
medicationRequest.setMethodCode(adviceSaveDto.getMethodCode()); // 用法
|
|
||||||
medicationRequest.setRateCode(adviceSaveDto.getRateCode()); // 用药频次
|
|
||||||
medicationRequest.setDose(adviceSaveDto.getDose()); // 单次剂量
|
|
||||||
medicationRequest.setDoseUnitCode(adviceSaveDto.getDoseUnitCode()); // 剂量单位
|
|
||||||
medicationRequest.setDispensePerDuration(adviceSaveDto.getDispensePerDuration()); // 每次发药供应天数
|
|
||||||
medicationRequest.setPackageId(adviceSaveDto.getPackageId()); // 组套id
|
|
||||||
medicationRequest.setContentJson(adviceSaveDto.getContentJson()); // 请求内容json
|
|
||||||
medicationRequest.setYbClassEnum(adviceSaveDto.getYbClassEnum());// 类别医保编码
|
|
||||||
medicationRequest.setSkinTestFlag(adviceSaveDto.getSkinTestFlag()); // 皮试标志
|
|
||||||
medicationRequest.setInfusionFlag(adviceSaveDto.getInjectFlag()); // 输液标志
|
|
||||||
medicationRequest.setSortNumber(adviceSaveDto.getSortNumber()); // 排序号
|
|
||||||
}
|
}
|
||||||
|
medicationRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
||||||
|
medicationRequest.setQuantity(adviceSaveDto.getQuantity()); // 请求数量
|
||||||
|
medicationRequest.setExecuteNum(adviceSaveDto.getExecuteNum()); // 执行次数
|
||||||
|
medicationRequest.setUnitCode(adviceSaveDto.getUnitCode()); // 请求单位编码
|
||||||
|
medicationRequest.setLotNumber(adviceSaveDto.getLotNumber()); // 产品批号
|
||||||
|
medicationRequest.setCategoryEnum(adviceSaveDto.getCategoryEnum()); // 请求类型
|
||||||
|
medicationRequest.setMedicationId(adviceSaveDto.getAdviceDefinitionId());// 医嘱定义id
|
||||||
|
medicationRequest.setPatientId(adviceSaveDto.getPatientId()); // 患者
|
||||||
|
medicationRequest.setPractitionerId(adviceSaveDto.getPractitionerId()); // 开方医生
|
||||||
|
medicationRequest.setOrgId(adviceSaveDto.getFounderOrgId()); // 开方人科室
|
||||||
|
medicationRequest.setReqAuthoredTime(curDate); // 请求开始时间
|
||||||
|
// 发放药房
|
||||||
|
medicationRequest.setPerformLocation(adviceSaveDto.getLocationId());
|
||||||
|
medicationRequest.setEncounterId(adviceSaveDto.getEncounterId()); // 就诊id
|
||||||
|
medicationRequest.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
||||||
|
medicationRequest.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
||||||
|
medicationRequest.setTherapyEnum(adviceSaveDto.getTherapyEnum()); // 治疗类型,默认-临时
|
||||||
|
medicationRequest.setMethodCode(adviceSaveDto.getMethodCode()); // 用法
|
||||||
|
medicationRequest.setRateCode(adviceSaveDto.getRateCode()); // 用药频次
|
||||||
|
medicationRequest.setDose(adviceSaveDto.getDose()); // 单次剂量
|
||||||
|
medicationRequest.setDoseUnitCode(adviceSaveDto.getDoseUnitCode()); // 剂量单位
|
||||||
|
medicationRequest.setDispensePerDuration(adviceSaveDto.getDispensePerDuration()); // 每次发药供应天数
|
||||||
|
medicationRequest.setPackageId(adviceSaveDto.getPackageId()); // 组套id
|
||||||
|
medicationRequest.setContentJson(adviceSaveDto.getContentJson()); // 请求内容json
|
||||||
|
medicationRequest.setYbClassEnum(adviceSaveDto.getYbClassEnum());// 类别医保编码
|
||||||
|
medicationRequest.setSkinTestFlag(adviceSaveDto.getSkinTestFlag()); // 皮试标志
|
||||||
|
medicationRequest.setInfusionFlag(adviceSaveDto.getInjectFlag()); // 输液标志
|
||||||
|
medicationRequest.setSortNumber(adviceSaveDto.getSortNumber()); // 排序号
|
||||||
|
|
||||||
if (medicationRequest.getId() == null) {
|
if (medicationRequest.getId() == null) {
|
||||||
firstTimeSave = true;
|
firstTimeSave = true;
|
||||||
}
|
}
|
||||||
@@ -896,31 +898,32 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
deviceRequest.setCreateBy(currentUsername); // 设置创建人
|
deviceRequest.setCreateBy(currentUsername); // 设置创建人
|
||||||
deviceRequest.setCreateTime(curDate); // 设置创建时间
|
deviceRequest.setCreateTime(curDate); // 设置创建时间
|
||||||
|
|
||||||
// 保存时,处理数据(请求,发放,账单)
|
// 🔧 Bug Fix: 签发时也需要设置关键字段(修复BUG #181)
|
||||||
|
// 保存时生成业务编号,签发时沿用已有编号
|
||||||
if (is_save) {
|
if (is_save) {
|
||||||
deviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.DEVICE_RES_NO.getPrefix(), 4));
|
deviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.DEVICE_RES_NO.getPrefix(), 4));
|
||||||
deviceRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
|
||||||
deviceRequest.setQuantity(adviceSaveDto.getQuantity()); // 请求数量
|
|
||||||
deviceRequest.setUnitCode(adviceSaveDto.getUnitCode()); // 请求单位编码
|
|
||||||
deviceRequest.setLotNumber(adviceSaveDto.getLotNumber());// 产品批号
|
|
||||||
|
|
||||||
deviceRequest.setCategoryEnum(adviceSaveDto.getCategoryEnum()); // 请求类型
|
|
||||||
deviceRequest.setDeviceDefId(adviceSaveDto.getAdviceDefinitionId());// 耗材定义id
|
|
||||||
deviceRequest.setPatientId(adviceSaveDto.getPatientId()); // 患者
|
|
||||||
deviceRequest.setRequesterId(adviceSaveDto.getPractitionerId()); // 开方医生
|
|
||||||
deviceRequest.setOrgId(adviceSaveDto.getFounderOrgId());// 开方人科室
|
|
||||||
deviceRequest.setReqAuthoredTime(curDate); // 请求开始时间
|
|
||||||
// 发放耗材房
|
|
||||||
deviceRequest.setPerformLocation(adviceSaveDto.getLocationId());
|
|
||||||
deviceRequest.setEncounterId(adviceSaveDto.getEncounterId()); // 就诊id
|
|
||||||
deviceRequest.setPackageId(adviceSaveDto.getPackageId()); // 组套id
|
|
||||||
// deviceRequest.setActivityId(adviceSaveDto.getActivityId());
|
|
||||||
deviceRequest.setContentJson(adviceSaveDto.getContentJson()); // 请求内容json
|
|
||||||
deviceRequest.setYbClassEnum(adviceSaveDto.getYbClassEnum());// 类别医保编码
|
|
||||||
deviceRequest.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
|
||||||
deviceRequest.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
deviceRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
||||||
|
deviceRequest.setQuantity(adviceSaveDto.getQuantity()); // 请求数量
|
||||||
|
deviceRequest.setUnitCode(adviceSaveDto.getUnitCode()); // 请求单位编码
|
||||||
|
deviceRequest.setLotNumber(adviceSaveDto.getLotNumber());// 产品批号
|
||||||
|
|
||||||
|
deviceRequest.setCategoryEnum(adviceSaveDto.getCategoryEnum()); // 请求类型
|
||||||
|
deviceRequest.setDeviceDefId(adviceSaveDto.getAdviceDefinitionId());// 耗材定义id
|
||||||
|
deviceRequest.setPatientId(adviceSaveDto.getPatientId()); // 患者
|
||||||
|
deviceRequest.setRequesterId(adviceSaveDto.getPractitionerId()); // 开方医生
|
||||||
|
deviceRequest.setOrgId(adviceSaveDto.getFounderOrgId());// 开方人科室
|
||||||
|
deviceRequest.setReqAuthoredTime(curDate); // 请求开始时间
|
||||||
|
// 发放耗材房
|
||||||
|
deviceRequest.setPerformLocation(adviceSaveDto.getLocationId());
|
||||||
|
deviceRequest.setEncounterId(adviceSaveDto.getEncounterId()); // 就诊id
|
||||||
|
deviceRequest.setPackageId(adviceSaveDto.getPackageId()); // 组套id
|
||||||
|
// deviceRequest.setActivityId(adviceSaveDto.getActivityId());
|
||||||
|
deviceRequest.setContentJson(adviceSaveDto.getContentJson()); // 请求内容json
|
||||||
|
deviceRequest.setYbClassEnum(adviceSaveDto.getYbClassEnum());// 类别医保编码
|
||||||
|
deviceRequest.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
||||||
|
deviceRequest.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
||||||
|
|
||||||
iDeviceRequestService.saveOrUpdate(deviceRequest);
|
iDeviceRequestService.saveOrUpdate(deviceRequest);
|
||||||
if (is_save) {
|
if (is_save) {
|
||||||
// 处理耗材发放
|
// 处理耗材发放
|
||||||
@@ -1047,42 +1050,42 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
if (is_sign) {
|
if (is_sign) {
|
||||||
serviceRequest.setSignCode(signCode);
|
serviceRequest.setSignCode(signCode);
|
||||||
}
|
}
|
||||||
// 只有保存时才处理的字段属性
|
// 🔧 Bug Fix: 签发时也需要设置关键字段(修复BUG #181)
|
||||||
|
// 保存时生成业务编号,签发时沿用已有编号
|
||||||
if (is_save) {
|
if (is_save) {
|
||||||
serviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.SERVICE_RES_NO.getPrefix(), 4));
|
serviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.SERVICE_RES_NO.getPrefix(), 4));
|
||||||
serviceRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
}
|
||||||
serviceRequest.setQuantity(adviceSaveDto.getQuantity()); // 请求数量
|
serviceRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
||||||
serviceRequest.setUnitCode(adviceSaveDto.getUnitCode()); // 请求单位编码
|
serviceRequest.setQuantity(adviceSaveDto.getQuantity()); // 请求数量
|
||||||
|
serviceRequest.setUnitCode(adviceSaveDto.getUnitCode()); // 请求单位编码
|
||||||
|
|
||||||
// 🎯 判断是否为会诊医嘱:如果categoryEnum为31,则为会诊类型
|
// 🎯 判断是否为会诊医嘱:如果categoryEnum为31,则为会诊类型
|
||||||
Integer categoryEnum = adviceSaveDto.getCategoryEnum();
|
Integer categoryEnum = adviceSaveDto.getCategoryEnum();
|
||||||
if (categoryEnum != null && categoryEnum == 31) {
|
if (categoryEnum != null && categoryEnum == 31) {
|
||||||
// 会诊医嘱:category_enum设置为31
|
// 会诊医嘱:category_enum设置为31
|
||||||
serviceRequest.setCategoryEnum(31);
|
serviceRequest.setCategoryEnum(31);
|
||||||
log.info("保存会诊医嘱,category_enum=31");
|
log.info("保存会诊医嘱,category_enum=31");
|
||||||
} else {
|
} else {
|
||||||
// 普通诊疗医嘱
|
// 普通诊疗医嘱
|
||||||
serviceRequest.setCategoryEnum(adviceSaveDto.getCategoryEnum());
|
serviceRequest.setCategoryEnum(adviceSaveDto.getCategoryEnum());
|
||||||
}
|
}
|
||||||
|
|
||||||
serviceRequest.setActivityId(adviceSaveDto.getAdviceDefinitionId());// 诊疗定义id
|
serviceRequest.setActivityId(adviceSaveDto.getAdviceDefinitionId());// 诊疗定义id
|
||||||
serviceRequest.setPatientId(adviceSaveDto.getPatientId()); // 患者
|
serviceRequest.setPatientId(adviceSaveDto.getPatientId()); // 患者
|
||||||
serviceRequest.setRequesterId(adviceSaveDto.getPractitionerId()); // 开方医生
|
serviceRequest.setRequesterId(adviceSaveDto.getPractitionerId()); // 开方医生
|
||||||
serviceRequest.setEncounterId(adviceSaveDto.getEncounterId()); // 就诊id
|
serviceRequest.setEncounterId(adviceSaveDto.getEncounterId()); // 就诊id
|
||||||
serviceRequest.setAuthoredTime(curDate); // 请求签发时间
|
serviceRequest.setAuthoredTime(curDate); // 请求签发时间
|
||||||
// 执行科室
|
// 执行科室
|
||||||
serviceRequest.setOrgId(adviceSaveDto.getPositionId());
|
serviceRequest.setOrgId(adviceSaveDto.getPositionId());
|
||||||
serviceRequest.setContentJson(adviceSaveDto.getContentJson()); // 请求内容json
|
serviceRequest.setContentJson(adviceSaveDto.getContentJson()); // 请求内容json
|
||||||
serviceRequest.setYbClassEnum(adviceSaveDto.getYbClassEnum());// 类别医保编码
|
serviceRequest.setYbClassEnum(adviceSaveDto.getYbClassEnum());// 类别医保编码
|
||||||
serviceRequest.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
serviceRequest.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
||||||
serviceRequest.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
serviceRequest.setEncounterDiagnosisId(adviceSaveDto.getEncounterDiagnosisId()); // 就诊诊断id
|
||||||
|
|
||||||
// 基于皮试药品生成的皮试检查
|
|
||||||
if (adviceSaveDto.getBasedOnId() != null) {
|
|
||||||
serviceRequest.setBasedOnId(adviceSaveDto.getBasedOnId());
|
|
||||||
serviceRequest.setBasedOnTable(CommonConstants.TableName.MED_MEDICATION_REQUEST);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// 基于皮试药品生成的皮试检查
|
||||||
|
if (adviceSaveDto.getBasedOnId() != null) {
|
||||||
|
serviceRequest.setBasedOnId(adviceSaveDto.getBasedOnId());
|
||||||
|
serviceRequest.setBasedOnTable(CommonConstants.TableName.MED_MEDICATION_REQUEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
iServiceRequestService.saveOrUpdate(serviceRequest);
|
iServiceRequestService.saveOrUpdate(serviceRequest);
|
||||||
|
|||||||
@@ -575,7 +575,8 @@ const handleSubmit = async () => {
|
|||||||
const vitalSignFields = ['height', 'weight', 'temperature', 'hertRate', 'pulse', 'endBloodPressure', 'highBloodPressure'];
|
const vitalSignFields = ['height', 'weight', 'temperature', 'hertRate', 'pulse', 'endBloodPressure', 'highBloodPressure'];
|
||||||
if (vitalSignFields.includes(key)) {
|
if (vitalSignFields.includes(key)) {
|
||||||
// 体征字段:提交所有值,包括空字符串(用于清除数据)
|
// 体征字段:提交所有值,包括空字符串(用于清除数据)
|
||||||
formData[key] = value === undefined ? '' : value;
|
// 处理 undefined 和 null 都转为空字符串
|
||||||
|
formData[key] = (value === undefined || value === null) ? '' : String(value);
|
||||||
} else if (value !== '' && value !== null && value !== undefined) {
|
} else if (value !== '' && value !== null && value !== undefined) {
|
||||||
// 其他字段:只保留非空值
|
// 其他字段:只保留非空值
|
||||||
formData[key] = value;
|
formData[key] = value;
|
||||||
|
|||||||
Reference in New Issue
Block a user