package com.smartor.service; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.service.dto.PatMedReq; import com.ruoyi.common.core.service.dto.PatMedRes; import com.smartor.domain.*; import com.ruoyi.inhospvisit.domain.PatMedInhospDTO; import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.Map; import com.ruoyi.inhospvisit.domain.PatMedInhospVO; import com.ruoyi.inhospvisit.domain.PatMedInhosp; import com.ruoyi.common.core.domain.entity.PatArchive; import com.ruoyi.task.domain.ServiceSubtask; import com.ruoyi.task.domain.ServiceTask; /** * 患者住院记录Service接口 * * @author smartor * @date 2023-03-04 */ public interface IPatMedInhospService { /** * 查询患者住院记录 * * @param inhospid 患者住院记录主键 * @return 患者住院记录 */ public PatMedInhosp selectPatMedInhospByInhospid(Long inhospid); public List selectPatMedInhosp(PatMedInhosp patMedInhosp); /** * 查询患者住院记录列表 * * @param patMedInhosp 患者住院记录 * @return 患者住院记录集合 */ public List selectPatMedInhospList(PatMedInhosp patMedInhosp); public List selectPatMedInhospByApplication(PatMedInhosp patMedInhosp); /** * 查询当前登陆人自己(病区、部门)的患者住院记录列表 * * @param patMedInhospVO * @return */ public List selectPatMedInhospListByCondition(PatMedInhospVO patMedInhospVO); public PatMedInhosp getDeptCodeByPatId(PatMedInhosp patMedInhosp); public PatMedRes selectPatMedInhospListCount(PatMedReq patMedReq); /** * 新增患者住院记录 * * @param patMedInhosp 患者住院记录 * @return 结果 */ public int insertPatMedInhosp(PatMedInhosp patMedInhosp); /** * 修改患者住院记录 * * @param patMedInhosp 患者住院记录 * @return 结果 */ public int updatePatMedInhosp(PatMedInhosp patMedInhosp); /** * 批量删除患者住院记录 * * @param inhospids 需要删除的患者住院记录主键集合 * @return 结果 */ public int deletePatMedInhospByInhospids(Long[] inhospids); /** * 删除患者住院记录信息 * * @param inhospid 患者住院记录主键 * @return 结果 */ public int deletePatMedInhospByInhospid(Long inhospid); public int deletePatMedInhospByInhospno(String inhospno); /** * 处理从his取来的出院数据 * * @param * @return 结果 */ public int dealOutHospInfo(String config); /** * 处理从his取来的出院数据 任务组生成 * * @param * @return 结果 */ public int dealOutHospInfoBySchedule(String config); /** * 获取出院,住院,门诊服务人次 * * @param patMedReq * @return */ public List getDeptRanking(PatMedReq patMedReq); /** * 医护与患者关联关系 * * @param patMedInhosp * @return */ public List getDocAndPat(PatMedInhosp patMedInhosp); /** * 处理从his取来的手术信息 * * @param * @return 结果 */ public void addOperationSubTask(String config); public ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatArchive patArchive, String config, Integer type); // ========================================================================== // 出入院随访模块化(第一批)—— 供 VisitTaskCreateApiBridge / OtherVisitApiBridge 复用的过渡入口 // // ⚠️ 这 3 个方法是刻意新增的过渡期入口(纯转发,零业务逻辑), // 不是误加、也不要"顺手删掉": // · runOperationVisit(config) —— 让 OtherVisitApiBridge 有个"随访能力"形状的入口 // · persistSubtask(subtask) —— 让 VisitTaskCreateApiBridge 有唯一的落库入口 // · selectPendingDeptPatientsForVisit() —— 让 PatMedInhospController 切到新入口后 // 仍能把列表交给院外/门诊合并 // 由 sql/_probe/verify_step16_service_restore.py 与 audit_worktree_changes.py 登记把关。 // ========================================================================== /** * 【过渡期用】手术随访扫描。 *

* 与 {@link #addOperationSubTask(String)} 完全等价(本方法就是转发到它), * 存在的唯一理由是给 {@code OtherVisitApiBridge} 一个"看起来属于随访能力"的入口, * 让手术随访将来搬去 {@code ruoyi-othervisit} 时只换实现方。 *

* 注意:{@code addOperationSubTask} 不能删 —— 它被 * {@code PatMedInhospController#addOperationSubTask}(URL 不变)直接调用。 * * @param config {@code sys_config: visit.early.day} * @return 处理的手术记录数 */ int runOperationVisit(String config); /** * 【过渡期用】把「科室维度未处理的在院患者」列表读出来。 *

* 供 {@code PatMedInhospController#dealOutHospInfo}(URL 不变)在切换到新入口后 * 仍能把列表交给 {@code IPatMedOuthospService} 做"院外门诊 + 在院"合并。 *

* 条件与原 {@code dealOutHospInfo} 的第一段查询完全一致: * {@code deptcheck_flag='0'} + {@code inhospstate='1'} + {@code fuflag='1'}。 * 实现是纯转发({@code selectPatMedInhospList}),零逻辑改动。 * * @return 科室维度未处理的在院患者 */ List selectPendingDeptPatientsForVisit(); /** * 【过渡期用】把一条已组装好的子任务落库。 *

* 单独抽出来的理由:让 {@code VisitTaskCreateApiBridge} 有一个可控的写入口, * 便于"搬迁前后逐行等价"的探针比对;将来「随访任务创建模块」接管时替换实现方。 * * @param serviceSubtask 已组装好的子任务(调用方负责填全字段) * @return true = 落库成功 */ boolean persistSubtask(ServiceSubtask serviceSubtask); }