package com.openhis.clinical.service;

import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.openhis.clinical.domain.Procedure;
import com.openhis.common.enums.EventStatus;
import com.openhis.common.enums.ProcedureCategory;
import com.openhis.medication.domain.MedicationRequest;

/**
 * 手术与治疗管理Service接口
 *
 * @author system
 * @date 2025-02-20
 */
public interface IProcedureService extends IService<Procedure> {

    /**
     * 查询执行记录
     *
     * @param requestId 医嘱ids
     * @param requestTable 医嘱所在表
     * @return 执行记录
     */
    List<Procedure> getProcedureRecords(List<Long> requestId, String requestTable);

    /**
     * 添加执行记录
     *
     * @param encounterId 就诊id
     * @param patientId 患者id
     * @param requestId 医嘱id
     * @param requestTable 医嘱所在表
     * @param eventStatus 执行状态
     * @param procedureCategory 执行种类
     * @param locationId 执行位置
     * @param exeDate 执行时间
     * @param groupId 组号
     * @param refundId 取消执行id
     * @return 执行id
     */
    Long addProcedureRecord(Long encounterId, Long patientId, Long requestId, String requestTable,
        EventStatus eventStatus, ProcedureCategory procedureCategory, Long locationId, Date exeDate, Long groupId,
        Long refundId);

    /**
     * 添加药品执行记录
     *
     * @param medicationRequest 药品医嘱
     * @param procedureCategory 执行种类
     * @param locationId 执行位置
     * @return 是否成功
     */
    boolean addMedicationProcedureRecord(MedicationRequest medicationRequest, ProcedureCategory procedureCategory,
        Long locationId);
}