using adas_core.Domain.Enums; using adas_core.Domain.Models; using adas_core.Domain.Models.DTO; using adas_core.Domain.Models.MongoModels; using adas_core.Domain.Models.Recording; using Patient = adas_core.Domain.Models.MongoModels.Patient; namespace adas_core.Application.Services.Interfaces; public interface IRecordingService : IApiRequestService { /// /// Asynchronously sends a cancel recording request to the recording API for the specified patient and point of care. /// /// The patient whose recording should be cancelled. /// The point of care associated with the recording to be cancelled. /// A task that represents the asynchronous operation, containing a boolean value indicating the outcome of the cancel recording request. Task SendCancelRecordingToRecordingApi(Patient patient, PointOfCare poc); /// /// Queues alarm recording data for the specified patient at the given point of care, /// using the provided alarm details to be processed asynchronously. /// /// The patient associated with the recording data. /// The point of care where the recording originated. /// The start date of the recording, if applicable. /// The end date of the recording, if applicable. /// The date of the event, if applicable. /// The name of the alarm, if applicable. /// The severity level of the alarm. /// The description of the alarm, if applicable. /// Indicates whether to start the recording (default is true). /// The type of alarm (default is Manual). Task SendRecordingDataToQueue(Patient patient, PointOfCare poc, DateTime? date, DateTime? endDate, DateTime? eventDate, AlarmEnum.Name? alarmName, AlarmEnum.Severity severity, string? alarmDescription, bool start = true, AlarmEnum.Type type = AlarmEnum.Type.Manual); /// /// Asynchronously sends manual recording data for the specified patient at the given point of care, using the provided manual recording and a flag indicating whether to start the recording. /// /// The patient whose recording data is being sent. /// The point of care associated with the recording. /// The manual recording payload to transmit. /// A flag indicating whether the recording is being started or stopped. Task SendRecordingData(Patient patient, PointOfCare poc, ManualRecording manualRecording, bool start); /// /// Asynchronously sends automatic recording data for a patient at the specified point of care. /// /// The patient associated with the automatic recording data. /// The point of care where the recording was taken. /// The automatic recording data to be sent. /// A task that represents the asynchronous operation, containing a boolean indicating whether the data was sent successfully. Task SendAutoRecordingData(Patient patient, PointOfCare poc, RecordingData automaticRecording); /// /// Retrieves the list of recordings associated with the specified room. /// /// The identifier of the room whose recordings are being requested. /// A task that returns a list of for the room, or null if no recordings are available. Task?> GetRecordings(int roomName); }