package com.ruoyi.common.core.service;
|
|
/**
|
* 宣教能力的对外接口(实现由 {@code ruoyi-publicity} 的常驻门面 {@code PublicityFacade} 提供)。
|
*
|
* <h3>为什么要单独拆出来</h3>
|
* 宣教原本混在 {@code PatMedInhospServiceImpl#dealOutHospInfo} 里(迁移前 L331-444):
|
* <ol>
|
* <li><b>入院宣教</b>({@code in.helibrary.switch == "2"} 才执行):科室维度 type=4、病区维度 type=5;</li>
|
* <li><b>药品宣教</b>(仅 {@code active == "sltd"}):按 {@code medicalCode} 拆串查
|
* {@code service_taskmedical},命中则 type=0。</li>
|
* </ol>
|
* 这两块<b>不是"随访"</b>而是"宣教",所以按你的决定单独拉成 {@code ruoyi-publicity} 模块。
|
*
|
* <h3>边界:宣教模块不建子任务</h3>
|
* 宣教模块只负责"<b>决定要不要发、发什么</b>"(读配置、判站点、拼说明),
|
* 真正的子任务落库与派发<b>回调 {@code ruoyi-inhospvisit}</b>
|
* (走 {@link PublicitySubtaskApi})。这样 {@code boxedServiceSubtask}
|
* 的宣教分支(type=0/4/5)以及"回写 check_flag"的语义全仓只有一份实现,不会出现两份逻辑漂移。
|
*
|
* <h3>调用方务必降级</h3>
|
* 取不到实现时按"没有宣教要做"处理并打 WARN,绝不能让出入院随访主流程抛异常。
|
*/
|
public interface PublicityApi {
|
|
/**
|
* 入院宣教:按患者所在科室(type=4)与病区(type=5)分别匹配长期宣教任务。
|
* <p>
|
* 迁移对应:{@code PatMedInhospServiceImpl#dealOutHospInfo} L331-409。
|
* <p>
|
* 内部行为要点(迁移时必须保留):
|
* <ul>
|
* <li>受 {@code sys_config: in.helibrary.switch == "2"} 控制,不是 "2" 时<b>整块不执行</b>;</li>
|
* <li>科室维度与病区维度是<b>两段独立的扫描</b>(各自查 {@code deptcheck_flag='0'} /
|
* {@code in_wardcheck_flag='0'}),不是一次查询分两组;</li>
|
* <li>患者档案为空时把标志位置 "2" 并写 {@code longTaskReason="患者基本信息为空"};</li>
|
* <li>科室/病区没配长期宣教任务时置 "2" + 文案「该患者所在科室未配置入院长期宣教任务;」/
|
* 「该患者所在病区未配置入院长期宣教任务;」;</li>
|
* <li>病区分支在取已有 {@code longTaskReason} 时<b>没有做 null 判断</b>(迁移前 L401 直接拼接)
|
* —— 这是原缺陷,<b>原样保留</b>。</li>
|
* </ul>
|
*
|
* @param config {@code sys_config: visit.early.day} 的值,可能为 null
|
* @return 提交处理的记录数(仅用于日志/返回,迁移前 {@code dealOutHospInfo} 固定返回 1)
|
*/
|
int dealInHospPublicity(String config);
|
|
/**
|
* 药品宣教(省立同德专属):按患者的 {@code medicalCode} 逐个药品编码匹配长期宣教任务。
|
* <p>
|
* 迁移对应:{@code PatMedInhospServiceImpl#dealOutHospInfo} L411-444。
|
* <p>
|
* 内部行为要点(迁移时必须保留):
|
* <ul>
|
* <li>仅 {@code active == "sltd"} 时执行,其它站点直接返回 0;</li>
|
* <li>{@code medicalCode} 为空则跳过该患者;查不到的药品<b>直接忽略</b>(不需要宣教);</li>
|
* <li>三个数组长度不一致时取最小长度,<b>越界时把 medicalName 置空串</b>并打 WARN
|
* (迁移前 L428-433 的防御性编程,原样保留)。</li>
|
* </ul>
|
*
|
* @param config {@code sys_config: visit.early.day} 的值,可能为 null
|
* @return 命中并处理的药品数
|
*/
|
int dealMedicalPublicity(String config);
|
}
|