package com.ruoyi.inhospvisit.api; import com.ruoyi.common.core.service.dto.VisitAgainSubtaskDto; /** * 出入院随访模块的对外契约(其它模块唯一允许依赖的类型)。 *
* 实现是本模块的常驻门面 {@link InhospVisitFacade}。 * *
* 两者刻意不做继承(避免"假继承"):由门面 {@link InhospVisitFacade} 同时实现二者, * 于是按任一种类型查找都能拿到同一个常驻 Bean —— 这与满意度把 * {@code ISatisfactionCategoryService} 一并实现到 {@code SatisfactionFacade} 是同一手法。 */ public interface InhospVisitApi { /** * 模块是否可用(开关打开 且 内部实现存在) */ boolean isEnabled(); /** * 出院随访主扫描(原 {@code PatMedInhospServiceImpl#dealOutHospInfo},迁移前 L324-463)。 *
* 顺序(迁移时必须保持): *
* ⚠️ 本次未搬,仍由 smartor 的实现承接(属第二批 {@code ruoyi-othervisit})。 * 本方法存在是为了让端点能迁进本模块(URL 不变),实现转发到 * {@code com.ruoyi.common.core.service.OtherVisitApi}。 * * @param config {@code sys_config: visit.early.day} * @return 转发结果(调用方不依赖该值) */ int addOperationSubTask(String config); /** * 门诊随访扫描(原 {@code IPatMedOuthospService#dealOutpatientInfo})。 *
* 之所以由本模块的入口一并触发:原 {@code /smartor/patinhosp/dealOutHospInfo} 端点 * 在同一次请求里做了"出院随访 + 门诊随访"两件事(L263-265), * 端点迁进本模块后必须保持这个行为。 *
* ⚠️ 站点判断({@code active != "xh"})由调用方负责,本方法只管转发。 * * @return 处理的门诊记录数 */ int dealOutpatientInfo(); /** * 任务组循环轮次滚动(原 {@code ServiceTaskScheduleServiceImpl#rollCycleTasks},L170 起 7 个方法 362 行)。 * * @return 本次推进的计划数 */ int rollTaskGroupCycle(); /** * 为「随访超时 → 再次随访」组装子任务草稿(替代原 {@code RyTask#dealSubtaskDeadline} 里的 * {@code selectPatMedInhospList} + {@code boxedServiceSubtask} 两步)。 *
* 出入院记录与组装逻辑搬迁后都在本模块内,所以由本方法一次完成; * 调用方拿到草稿后自己补 {@code upid / visitCount / visitType / visitDeptCode / visitDeptName} * 再落库(落库走 {@code com.ruoyi.common.core.service.VisitTaskCreateApi#createSubtask})。 *
* ⚠️ 原实现在查不到出入院记录时是 {@code continue} 跳过, * 调用方必须检查 {@code isInhospFound()}。 * * @param orgid 机构ID * @param inhospid 出入院记录ID * @param newTaskId 下一个长期任务ID(原 {@code serviceTask.getNexttaskid()}) * @param sendstate 调用方要求的发送状态(原实现传 2L) * @return 草稿;模块不可用或组装失败时返回 {@code isInhospFound()==false} 的空结果 */ VisitAgainSubtaskDto buildAgainVisitDraft(String orgid, Long inhospid, Long newTaskId, Long sendstate); /** * 给宣教模块用的最小能力:生成一条宣教类子任务(type=0 药品宣教 / 4 入院科室 / 5 入院病区)。 *
* 与 {@code com.ruoyi.common.core.service.PublicitySubtaskApi#generatePublicitySubtask} 是同一能力; * {@link InhospVisitFacade} 同时实现两个接口,因此按任一种类型查找都能拿到同一个 Bean。 * * @return true = 已处理 */ boolean generatePublicitySubtask(Long taskid, Long patid, Long inhospid, int type, String config); }