370【住院护士站站-》进入“三测单”模块报错

371 【业务配置】住院医生站-“呼吸内科病房”未在西药房取药规则中维护配置
This commit is contained in:
2026-04-21 13:05:46 +08:00
parent 88d9e19cc5
commit 14333f47ea
10 changed files with 403 additions and 120 deletions

View File

@@ -116,4 +116,12 @@ public interface IDoctorStationAdviceAppService {
* @return 检查url相关参数
*/
R<?> getTestResult(Long encounterId);
/**
* 获取当前科室已配置的药品类别列表
*
* @param organizationId 科室id
* @return 已配置的药品类别编码列表
*/
R<?> getConfiguredCategories(Long organizationId);
}

View File

@@ -155,6 +155,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
String safePricingFlag = pricingFlag != null ? pricingFlag.toString() : "";
String safePageNo = pageNo != null ? pageNo.toString() : "";
String safePageSize = pageSize != null ? pageSize.toString() : "";
String safeCategoryCode = categoryCode != null ? categoryCode : "";
// 设置默认科室:仅当前端/调用方未传 organizationId 时才回退到登录人科室
// 否则会导致门诊划价等场景(按患者挂号科室查询)返回空
@@ -169,7 +170,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
String cacheKey = null;
if (useCache) {
// 生成缓存 key无搜索关键字时按科室缓存
cacheKey = ADVICE_BASE_INFO_CACHE_PREFIX + organizationId + ":" + safeAdviceTypesStr + ":" + safePageNo + ":" + safePageSize;
cacheKey = ADVICE_BASE_INFO_CACHE_PREFIX + organizationId + ":" + safeAdviceTypesStr + ":" + safeCategoryCode + ":" + safePageNo + ":" + safePageSize;
// 先清除可能存在的无效缓存JSONObject类型
if (redisCache.hasKey(cacheKey)) {
@@ -281,6 +282,8 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
}
String unitCode = ""; // 包装单位
Long chargeItemDefinitionId; // 费用定价主表ID
// 检查是否有取药科室配置(用于药品类型)
boolean hasPharmacyConfig = medLocationConfig != null && !medLocationConfig.isEmpty();
for (AdviceBaseDto baseDto : adviceBaseDtoList) {
String tableName = baseDto.getAdviceTableName();
if (CommonConstants.TableName.MED_MEDICATION_DEFINITION.equals(tableName)) { // 药品
@@ -289,6 +292,9 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
.setSkinTestFlag_enumText(EnumUtils.getInfoByValue(Whether.class, baseDto.getSkinTestFlag()));
// 是否为注射药物
baseDto.setInjectFlag_enumText(EnumUtils.getInfoByValue(Whether.class, baseDto.getInjectFlag()));
// 设置是否缺少取药科室配置标志
baseDto.setPharmacyConfigMissing(!hasPharmacyConfig);
// fallthrough to 耗材处理逻辑(保持原有逻辑)
// 每一条医嘱的库存集合信息 , 包装单位库存前端计算
@@ -2148,4 +2154,23 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
return searchKey.matches("[a-zA-Z]+");
}
/**
* 获取当前科室已配置的药品类别列表
*
* @param organizationId 科室id
* @return 已配置的药品类别编码列表
*/
@Override
public R<?> getConfiguredCategories(Long organizationId) {
// 查询取药科室配置
List<AdviceInventoryDto> medLocationConfig = doctorStationAdviceAppMapper.getMedLocationConfig(organizationId);
// 提取不重复的 categoryCode
List<String> categoryCodes = medLocationConfig.stream()
.map(AdviceInventoryDto::getCategoryCode)
.filter(code -> code != null && !code.isEmpty())
.distinct()
.collect(Collectors.toList());
return R.ok(categoryCodes);
}
}

View File

@@ -50,9 +50,10 @@ public class DoctorStationAdviceController {
@RequestParam(value = "organizationId", required = false) Long organizationId,
@RequestParam(value = "adviceTypes", defaultValue = "1,2,3") List<Integer> adviceTypes,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(value = "categoryCode", required = false) String categoryCode) {
return R.ok(iDoctorStationAdviceAppService.getAdviceBaseInfo(adviceBaseDto, searchKey, locationId,
adviceDefinitionIdParamList, organizationId, pageNo, pageSize, Whether.NO.getValue(), adviceTypes, null, null));
adviceDefinitionIdParamList, organizationId, pageNo, pageSize, Whether.NO.getValue(), adviceTypes, null, categoryCode));
}
/**
@@ -186,4 +187,15 @@ public class DoctorStationAdviceController {
return iDoctorStationAdviceAppService.getTestResult(encounterId);
}
/**
* 获取当前科室已配置的药品类别列表
*
* @param organizationId 科室id
* @return 已配置的药品类别编码列表
*/
@GetMapping(value = "/configured-categories")
public R<?> getConfiguredCategories(@RequestParam(value = "organizationId", required = false) Long organizationId) {
return iDoctorStationAdviceAppService.getConfiguredCategories(organizationId);
}
}

View File

@@ -242,4 +242,9 @@ public class AdviceBaseDto {
@Dict(dictCode = "chrgitm_lv")
private String chrgitmLv;
private String chrgitmLv_dictText;
/**
* 是否缺少取药科室配置(仅药品类型使用)
*/
private Boolean pharmacyConfigMissing;
}