Class PumpService
- Namespace
- adas_core.Application.Services
- Assembly
- adas-core.Application.dll
Servicio maestro de gestión de bombas
- Procesa ApiRequest (HL7/Alaris transformado)
- Histórico clínico (pump_observations)
- Histórico de alarmas (pump_alarm_events)
- Alarmas activas (pump_alarm_state)
- Snapshot (pump_state)
- Broadcast de snapshots (PumpState + PumpAlarmState)
public class PumpService : IPumpService, IApiRequestService
- Inheritance
-
PumpService
- Implements
- Inherited Members
- Extension Methods
Constructors
PumpService(IPumpObservationRepository, IPumpStateRepository, IPumpAlarmEventRepository, IPumpAlarmStateRepository, IPumpArchiveRepository, IPatientService, IConfigPumpsService, IOptions<ApiSettings>, ILogger<PumpService>, ISubscribersService, IClientMessageService, Lazy<ICalculatedObservationsService>, IHttpContextAccessor, ILocalAuditService, IConfigUnitsService)
Servicio maestro de gestión de bombas
- Procesa ApiRequest (HL7/Alaris transformado)
- Histórico clínico (pump_observations)
- Histórico de alarmas (pump_alarm_events)
- Alarmas activas (pump_alarm_state)
- Snapshot (pump_state)
- Broadcast de snapshots (PumpState + PumpAlarmState)
public PumpService(IPumpObservationRepository pumpObservationRepository, IPumpStateRepository pumpStateRepo, IPumpAlarmEventRepository alarmEventRepo, IPumpAlarmStateRepository alarmStateRepo, IPumpArchiveRepository pumpArchiveRepo, IPatientService patientService, IConfigPumpsService configPumpsService, IOptions<ApiSettings> apiSettings, ILogger<PumpService> logger, ISubscribersService subscribersService, IClientMessageService clientMessageService, Lazy<ICalculatedObservationsService> calculatedObservationsService, IHttpContextAccessor httpContextAccessor, ILocalAuditService auditService, IConfigUnitsService configUnitsService)
Parameters
pumpObservationRepositoryIPumpObservationRepositorypumpStateRepoIPumpStateRepositoryalarmEventRepoIPumpAlarmEventRepositoryalarmStateRepoIPumpAlarmStateRepositorypumpArchiveRepoIPumpArchiveRepositorypatientServiceIPatientServiceconfigPumpsServiceIConfigPumpsServiceapiSettingsIOptions<ApiSettings>loggerILogger<PumpService>subscribersServiceISubscribersServiceclientMessageServiceIClientMessageServicecalculatedObservationsServiceLazy<ICalculatedObservationsService>httpContextAccessorIHttpContextAccessorauditServiceILocalAuditServiceconfigUnitsServiceIConfigUnitsService
Methods
Archive(Patient)
Archives the specified patient by delegating the operation to the archive routine identified by the patient's identifier.
public Task Archive(Patient patient)
Parameters
patientPatientThe patient to be archived.
Returns
ArchiveByPatientId(ObjectId)
Archives all pump observations associated with the specified patient by moving them to the archive repository and then deleting the active data. If no pump observations are found for the patient, the archive insertion is skipped while the deletion of active data still proceeds.
public Task ArchiveByPatientId(ObjectId id)
Parameters
idObjectIdThe unique identifier of the patient whose pump observations should be archived.
Returns
DeleteByPatientId(ObjectId)
Asynchronously deletes all pump observation, alarm event, and alarm state data associated with the specified patient identifier.
public Task DeleteByPatientId(ObjectId id)
Parameters
idObjectIdThe unique identifier of the patient whose related pump data should be removed.
Returns
- Task
A task that represents the asynchronous deletion of the patient's data across the pump observation, alarm event, and alarm state repositories.
DeletePumpConfig(ConfigPumps)
Deletes the specified pump configuration and records an audit log entry when the operation succeeds.
public Task<bool> DeletePumpConfig(ConfigPumps config)
Parameters
configConfigPumpsThe pump configuration to delete.
Returns
- Task<bool>
A task that represents the asynchronous operation, containing a value indicating whether the deletion was successful.
Exceptions
- ConflictException
Thrown when the underlying deletion operation fails.
FindAllLastPatientObservationTime()
Asynchronously retrieves the most recent pump observation timestamp for every patient by delegating to the pump observation repository.
public Task<Dictionary<ObjectId, DateTime>> FindAllLastPatientObservationTime()
Returns
- Task<Dictionary<ObjectId, DateTime>>
A task that resolves to a dictionary mapping each patient's MongoDB.Bson.ObjectId to the DateTime of their last pump observation.
FindLastPumpObservations(ObjectId, int)
Retrieves the most recent pump observations for a specified patient, returning up to the requested number of records ordered by time in descending order. Returns an empty list if the repository result is not a list of pump observations or if no observations exist for the patient.
public Task<List<PumpObservation>> FindLastPumpObservations(ObjectId patientId, int num = 1)
Parameters
patientIdObjectIdThe unique identifier of the patient whose pump observations are being retrieved.
numintThe maximum number of recent pump observations to return. Defaults to 1.
Returns
- Task<List<PumpObservation>>
A task that resolves to a list of the most recent PumpObservation records for the patient, or an empty list when none are available.
GetAllPumpConfig()
Retrieves all available pump configurations from the configuration service. Throws a NotFoundException if the service returns no data, indicating that the pump configuration resource is missing.
public Task<List<ConfigPumps>?> GetAllPumpConfig()
Returns
- Task<List<ConfigPumps>>
A task that represents the asynchronous operation, containing a list of ConfigPumps configurations.
Exceptions
- NotFoundException
Thrown when the underlying service returns a null result, meaning the pump configuration resource was not found.
GetItemsById(string)
Retrieves a list of configuration pump items associated with the specified identifier by delegating to the configuration pumps service.
public Task<List<ConfigPumpItem>?> GetItemsById(string id)
Parameters
idstringThe identifier used to look up the configuration pump items.
Returns
- Task<List<ConfigPumpItem>>
A task that represents the asynchronous operation. The task result is a list of ConfigPumpItem matching the given identifier, or
nullif no items are found.
GetPaginatedPump(PaginationFilter)
Retrieves a paginated collection of PumpObservation records based on the supplied filter. When a PatientId is provided, the patient identifier is validated and results are filtered by an optional date range; when a DeviceId is provided instead, the repository query already applies the date range. If no filter criteria or only invalid input is supplied, an empty paged response is returned and the total count is reported as zero. Results are ordered by observation time in descending order before pagination is applied.
public Task<PaginationResponse<PumpObservation>?> GetPaginatedPump(PaginationFilter filter)
Parameters
filterPaginationFilterThe pagination and filter criteria, including page number, page size, optional patient identifier, device identifier, and date range.
Returns
- Task<PaginationResponse<PumpObservation>>
A task that yields the paginated response of pump observations, or
nullif the operation cannot be performed.
GetPumpConfigsById(string)
Retrieves the pump configuration that matches the specified identifier. Throws a not-found exception when no matching configuration exists in the underlying service.
public Task<ConfigPumps?> GetPumpConfigsById(string id)
Parameters
idstringThe unique identifier of the pump configuration to retrieve.
Returns
- Task<ConfigPumps>
The matching ConfigPumps instance, or
nullif the service returns one; otherwise a NotFoundException is thrown.
Exceptions
- NotFoundException
Thrown when the configuration service returns
null, indicating that the requested resource is missing.
InsertPumpConfig(ConfigPumps)
Inserts a new pump configuration after recording an audit log entry. Throws a conflict exception if the underlying service fails to create the configuration.
public Task<ConfigPumps?> InsertPumpConfig(ConfigPumps config)
Parameters
configConfigPumpsThe pump configuration to insert.
Returns
- Task<ConfigPumps>
The newly inserted ConfigPumps, or null if the operation yields no result.
Exceptions
- ConflictException
Thrown when the pump configuration could not be created by the underlying service.
InsertPumpObservation(PumpObservation)
Inserts a pump observation into the repository, applying default values for missing identifier and timestamp, and triggers post-insertion side effects such as audit logging, state updates, snapshot broadcasting, and retention actions. If the mapped observation is null, no further action is taken. Observations with a number of zero are skipped from post-insertion processing when zero-value emissions are disabled.
public Task InsertPumpObservation(PumpObservation obs)
Parameters
obsPumpObservationThe pump observation to insert. Its
Idis generated if not set, and itsTimedefaults to UTC now if set to MinValue.
Returns
MapPumpObservation(PumpObservation)
Maps a PumpObservation through the configuration pumps and configuration units services in sequence, and additionally evaluates it against the calculated observations service to determine whether the mapping should be ignored (logged as debug when the result is null). Returns the observation produced after the configuration units mapping stage.
public Task<PumpObservation?> MapPumpObservation(PumpObservation obs)
Parameters
obsPumpObservationThe pump observation to be transformed through the mapping pipeline.
Returns
- Task<PumpObservation>
A task that yields the mapped PumpObservation, or
nullwhen the calculated observations stage produces no result.
SaveRequest(ApiRequest)
Processes an incoming ApiRequest by normalizing its pump observations, resolving or creating the associated patient, and handling each observation according to its message type (HL7 PCD-01/04/10 or AlarisPump). For each observation, it dispatches to the appropriate observation or alarm pipeline, updates the pump state snapshot, broadcasts the resulting snapshots with any active device alarms, and applies retention rules on the historical observations. AlarisPump observations without a PatientId are discarded, and per-observation processing errors are logged without aborting the whole request.
public Task SaveRequest(ApiRequest req)
Parameters
reqApiRequestThe API request containing the pump observations and message type to be persisted and broadcast.
Returns
SaveRequestAsync(ApiRequest)
Asynchronously saves an API request by delegating to the underlying synchronous save operation.
public Task SaveRequestAsync(ApiRequest req)
Parameters
reqApiRequestThe API request to be saved.
Returns
- Task
A task that represents the asynchronous save operation.
UpdateManyObjectId(string, ObjectId, ObjectId)
Updates the ObjectId of pump observations and related alarms from an old identifier to a new one for the specified field, logging the operation and recording an audit entry.
public Task UpdateManyObjectId(string nameId, ObjectId id, ObjectId oldId)
Parameters
nameIdstringThe name of the field whose ObjectId should be updated.
idObjectIdThe new ObjectId to assign.
oldIdObjectIdThe existing ObjectId to be replaced.
Returns
Exceptions
- ArgumentException
Thrown when
nameIdis null, empty, or whitespace.
UpdatePumpConfig(ConfigPumps)
Updates the pump configuration identified by config, recording an audit log entry that captures the previous configuration and the new values before applying the change.
public Task<ConfigPumps?> UpdatePumpConfig(ConfigPumps config)
Parameters
configConfigPumpsThe pump configuration containing the updated values to persist.
Returns
- Task<ConfigPumps>
The updated ConfigPumps configuration if the update succeeds.
Exceptions
- NotFoundException
Thrown when the underlying update operation does not return a configuration, indicating the resource is missing.