using adas_core.Domain.Models;
using adas_core.Domain.Models.Pumps;
using MongoDB.Bson;

namespace adas_core.Application.Services.Interfaces;

public interface ICalculatedObservationsService
{
    Task<PatientObservation?> Map(PatientObservation obs, bool onlyByName = false);
    Task<PatientObservationAlarm?> Map(PatientObservationAlarm obs, bool onlyByName = false);
    Task<PatientTreatment?> Map(PatientTreatment treatment);
    Task<PumpObservation?> Map(PumpObservation obs);
    Task<PatientRecordingAlert?> Map(PatientRecordingAlert obs);
    Task<PatientDiagnosis?> Map(PatientDiagnosis obs);
    Task<List<PatientObservation>> MapList(List<PatientObservation> listToInsert);
    Task CalculateBolusOpiates(ObjectId patientId);
    Task CalculateMedicineObservation(List<Medicine> activeMedicines, ObjectId patientId);
    Task<IEnumerable<PatientTreatment?>> GetActiveTreatmentsByPatient(ObjectId id);
    Task<PatientObservation> MapSourceAlarm(PatientObservation observation, PatientObservationAlarm observationAlarm);
}