package com.openhis.web.inpatientmanage.appservice;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import com.core.common.core.domain.R;
import com.openhis.web.inpatientmanage.dto.NursingEmrTemplateDto;
import com.openhis.web.inpatientmanage.dto.NursingRecordDto;
import com.openhis.web.inpatientmanage.dto.NursingSearchParam;

/**
 * 护理记录单 应用实现
 *
 * @author gyy
 * @since 2025/05/30
 */
public interface INursingRecordAppService {

    /**
     * 获取住院患者信息 分页显示
     *
     * @param nursingSearchParam 查询参数
     * @param searchKey 模糊查询
     * @param pageNo 当前页码
     * @param pageSize 查询条数
     * @return 患者信息
     */
    R<?> getPatientInfoPage(NursingSearchParam nursingSearchParam, String searchKey, Integer pageNo, Integer pageSize,
        HttpServletRequest request);

    /**
     * 获取患者护理记录单信息 分页显示
     *
     * @param nursingSearchParam 查询参数
     * @param searchKey 模糊查询
     * @param pageNo 当前页码
     * @param pageSize 查询条数
     * @return 患者护理记录单信息
     */
    R<?> getNursingPatientPage(NursingSearchParam nursingSearchParam, String searchKey, Integer pageNo,
        Integer pageSize, HttpServletRequest request);

    /**
     * 保存护理记录单
     *
     * @param nursingRecordDto 入参
     * @return 结果
     */
    R<?> saveRecord(NursingRecordDto nursingRecordDto);

    /**
     * 编辑护理记录单
     *
     * @param nursingRecordDto 入参
     * @return 结果
     */
    R<?> updateRecord(NursingRecordDto nursingRecordDto);

    /**
     * 删除护理记录单
     *
     * @param recordList 记录单List
     * @return 结果
     */
    R<?> delRecord(List<NursingRecordDto> recordList);

    /**
     * 获取电子病历模板列表 分页显示
     *
     * @param nursingSearchParam 查询参数
     * @param searchKey 模糊查询
     * @param pageNo 当前页码
     * @param pageSize 查询条数
     * @return 电子病历模板信息
     */
    R<?> getEmrTemplate(NursingSearchParam nursingSearchParam, String searchKey, Integer pageNo, Integer pageSize,
        HttpServletRequest request);

    /**
     * 保存病历模板
     *
     * @param emrTemplateDto 病历模板信息
     * @return 结果
     */
    R<?> saveEmrTemplate(NursingEmrTemplateDto emrTemplateDto);

    /**
     * 删除病历模板
     *
     * @param idList 模板id
     * @return 操作结果
     */
    R<?> deleteEmrTemplate(List<Long> idList);

    /**
     * 编辑病历模板
     *
     * @param emrTemplateDto 病历模板信息
     * @return 操作结果
     */
    R<?> updateEmrTemplate(NursingEmrTemplateDto emrTemplateDto);

}
