using adas_core.Domain.Enums; using adas_core.Domain.Models.Filter; using adas_core.Domain.Models.Masters; using adas_core.Domain.Models.MongoModels; using adas_core.Domain.Models.Responses; using MongoDB.Bson; namespace adas_core.Application.Services.Interfaces; public interface IPointOfCareService { Task Delete(ObjectId id); Task Update(PointOfCare pointOfCare); Task UpdateUnit(ObjectId id, Unit unit); Task> GetAll(); Task> GetAllConfigs(); Task> GetAllLocationInfo(); Task UpdateConfiguration(ObjectId id, PointOfCareConfiguration configuration); Task FindById(ObjectId id); Task FindByIdAllConfig(ObjectId id); Task?> FindAllByUnitId(ObjectId unit); Task?> FindByRoom(string room); Task?> FindByBed(string bed); Task> FindAllByUnitIds(List unitIds); Task GetInfo(ObjectId id, LocaleEnum? locale = null, bool fillPatientData = true, CancellationToken ct = default); Task InsertPointOfCare(PointOfCare pointOfCare); Task FindPoCByPatientId(ObjectId patientId); Task SetPointOfCareStatus(ObjectId id, StatusEnum.PointOfCare status); Task> FindByUnitAndStatus(ObjectId unitId, StatusEnum.PointOfCare poc, bool excludeVirtual = false); void CheckNextAdmission(ObjectId? patientLocation); Task FindByBedAndUnitId(string? bed, ObjectId? unitId); Task UpdateRelayConfig(PointOfCare poc); Task FindPoCByPatientNumber(string patientNumber); Task CountPoCsByUnitId(ObjectId unitId); Task CountVirtualPoCsByUnitId(ObjectId unitId); Task> GetPaginatedPoCs(PaginationFilter filter); Task DeletePoCsByUnitId(ObjectId unitId); Task> FindAllIdCamerasInUse(); Task> FindAllIdRelaysInUse(); Task> FindAllIdBeaconsInUse(); Task?> FindAllByUnitIdWithDevices(ObjectId unitId); }