package com.eitc.patient.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.eitc.patient.domain.MedicalHistory;
import com.eitc.patient.param.MedicalRecordSaveParam;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * IMedicalHistoryService
 *
 * @author mtx
 * @date: 2024/05/21 17:28
 */
@Service
public interface IMedicalHistoryService extends IService<MedicalHistory> {

    /**
     * 获取病史列表
     *
     * @param contents        病史内容
     * @param medicalRecordId 病历id
     * @param patientId       患者id
     * @param diseaseType     病史类型
     * @param diseaseSource   病史来源
     * @return 病史列表
     * @author mtx
     * @date: 2024/5/22 9:15
     */
    List<MedicalHistory> encapsulationMedicalHistoryList(String contents,
                                                         String medicalRecordId,
                                                         String patientId,
                                                         Integer diseaseType,
                                                         Integer diseaseSource);

    /**
     * 封装病史列表
     *
     * @param allergyHistory  过敏史
     * @param pastHistory     既往史
     * @param familyHistory   家族史
     * @param medicalRecordId 病历id
     * @param patientId       患者id
     * @param diseaseSource   来源
     * @author mtx
     * @date: 2024/5/22 10:18
     */
    void saveMedicalHistoryList(String allergyHistory,
                                String pastHistory,
                                String familyHistory,
                                String medicalRecordId,
                                String patientId,
                                Integer diseaseSource);

    /**
     * 查询患者的病史保存到历史记录中
     *
     * @param param           参数
     * @param medicalRecordId 病例id
     * @author mtx
     * @date: 2024/5/22 13:57
     */
    void saveMedicalHistoryByHistoryType(MedicalRecordSaveParam param, String medicalRecordId);

    /**
     * 根据患者ID、疾病类型和诊断类型模板详情，查询患者的病史信息。
     * 此方法主要用于检索与特定疾病类型和患者相关的病史记录，并根据病史来源筛选出患者自述的病史内容。
     *
     * @param patientId   患者的唯一标识ID，用于查询特定患者的病史记录。
     * @param diseaseType 疾病类型的标识，用于筛选特定类型的病史记录。
     * @author mtx
     * @date 2024/06/07 14:01
     */
    List<String> findMedicalHistory(String patientId, Integer diseaseType);
}
