# Class CalculatedObservations

Namespace
  adas_core.Application.Customizations.HRYC

Assembly
  adas-core.Application.dll

Implements the HRYC-specific clinical calculations that derive secondary PatientObservation values (NEWS alarms, IROX, Resp_Rate_Calculated, Hydric_Balance_Calculated, Weight_Diff, Diuresis_Weight, Delta_Pressure, Daily_Balance_Calculated, Allergies, DVE, Drainage_Height, Resp_Type, and Hour_Balance) from incoming raw observations and active configurations loaded from ApiSettings.

    public class CalculatedObservations : ICalculatedObservations

Inheritance
  object
  CalculatedObservations

Implements
  ICalculatedObservations

Inherited Members
  object.Equals(object)
  object.Equals(object, object)
  object.GetHashCode()
  object.GetType()
  object.MemberwiseClone()
  object.ReferenceEquals(object, object)
  object.ToString()

Extension Methods
  NumberUtils.IsNumber(object)
  NumberUtils.ToDouble(object)
  ObjectUtils.ToStr(object?)

## Constructors

### CalculatedObservations(IServiceProvider)

Initializes a new instance of the CalculatedObservations class, resolving its dependencies (observation, patient, light-beacon, and config-observation services, plus the logger) from the supplied IServiceProvider and loading the configured code catalogues (high-frequency ventilation, non-invasive ventilation, and invasive ventilation) from ApiSettings.

    public CalculatedObservations(IServiceProvider serviceProvider)

#### Parameters

`serviceProvider` IServiceProvider

  The application's service provider used to resolve the required dependencies and configuration.

## Methods

### CalculateActiveBolus(ObjectId)

No-op implementation of the active-bolus calculation hook. The HRYC customization does not derive an OpiateBoluses observation.

    public Task CalculateActiveBolus(ObjectId patientId)

#### Parameters

`patientId` ObjectId

  The unique identifier of the patient (ignored).

#### Returns

Task

  A completed task.

### CalculateMedicineObservation(List<Medicine>, ObjectId)

No-op implementation of the medicine-observation calculation hook. The HRYC customization does not derive Medication or ERMedication observations from the active medicine list.

    public Task CalculateMedicineObservation(List<Medicine> activeMedicines, ObjectId patientId)

#### Parameters

`activeMedicines` List<Medicine>

  The list of active medicines (ignored).

`patientId` ObjectId

  The unique identifier of the patient (ignored).

#### Returns

Task

  A completed task.

### FixTimeInconsistencyWithLast(PatientObservation)

Resolves time-inconsistencies for a new patient observation when it arrives with the same (down-to-the-second) timestamp as the latest stored observation of the same name. The new observation's `Time` is shifted forward by one second to avoid duplicate-key collisions.

    public Task<PatientObservation?> FixTimeInconsistencyWithLast(PatientObservation newObservation)

#### Parameters

`newObservation` PatientObservation

  The new patient observation to evaluate for time inconsistencies.

#### Returns

Task<PatientObservation>

  A task that resolves to the (possibly time-shifted) PatientObservation. Returns the input unchanged when its `Name` is null or empty, logging the error.

### GetActiveTreatmentsByPatient(ObjectId)

Returns an empty enumerable of active treatments. The HRYC customization does not currently maintain a per-patient active-treatment cache.

    public Task<IEnumerable<PatientTreatment?>> GetActiveTreatmentsByPatient(ObjectId id)

#### Parameters

`id` ObjectId

  The unique identifier of the patient (ignored).

#### Returns

Task<IEnumerable<PatientTreatment>>

  A completed task containing an empty IEnumerable<T>.

### Map(PatientDiagnosis)

Identity mapping for a PatientDiagnosis: returns the supplied instance unchanged, wrapped in a completed task. Provided to satisfy the customization contract.

    public Task<PatientDiagnosis> Map(PatientDiagnosis diagnosis)

#### Parameters

`diagnosis` PatientDiagnosis

  The PatientDiagnosis to map.

#### Returns

Task<PatientDiagnosis>

  A task containing the same PatientDiagnosis instance that was passed in.

### Map(PatientTreatment)

Placeholder mapping for a PatientTreatment. The HRYC customization does not currently derive observations from treatments.

    public Task<PatientTreatment> Map(PatientTreatment treatment)

#### Parameters

`treatment` PatientTreatment

  The treatment to map.

#### Returns

Task<PatientTreatment>

  Never returns a result.

#### Exceptions

NotImplementedException

  Always thrown because treatment mapping is not implemented in the HRYC customization.

### Map(PumpObservation)

Identity mapping for a PumpObservation: returns the supplied instance unchanged, wrapped in a completed task. Provided to satisfy the customization contract; pump observations do not require HRYC-specific calculation.

    public Task<PumpObservation> Map(PumpObservation pumpObservation)

#### Parameters

`pumpObservation` PumpObservation

  The pump observation to map.

#### Returns

Task<PumpObservation>

  A task containing the same PumpObservation instance that was passed in.

### MapSourceAlarm(PatientObservation, PatientObservationAlarm)

Identity mapping for a source alarm observation paired with a PatientObservationAlarm: returns the supplied observation unchanged, wrapped in a completed task. Provided to satisfy the customization contract.

    public Task<PatientObservation> MapSourceAlarm(PatientObservation obs, PatientObservationAlarm alarmToInsert)

#### Parameters

`obs` PatientObservation

  The patient observation that triggered the alarm.

`alarmToInsert` PatientObservationAlarm

  The alarm metadata to be inserted alongside the observation.

#### Returns

Task<PatientObservation>

  A task containing the same PatientObservation instance that was passed in.

### Map<T>(T, bool)

Dispatches the supplied raw observation to the appropriate HRYC calculation based on its Name. The set of supported calculations includes `Resp_Mode` (ventilation type), `Diuresis` / `Weight_Current` (weight difference and diuresis-per-kilogram), `AllergiesObs`, `DrainagesObs`, `PEEP` / `Pleateu_Pressure` (driving pressure), `Daily_Balance`, `Hydric_Balance` / `Hour_Balance` (time shifting), `FR` / `Vent_Rate` (respiratory rate), `SpO2` / `FiO2` (IROX), and `NEWS` (alarms).

    public Task<T?> Map<T>(T obs, bool onlyByName) where T : BasePatientObservation

#### Parameters

`obs` T

  The observation to map or transform in-place.

`onlyByName` bool

  Reserved for future use. When true, restricts the mapping strategy to name-based lookups only.

#### Returns

Task<T>

  A Task<TResult> that resolves to the (possibly transformed) observation, or null when the input observation has no name.

#### Type Parameters

`T`

  The concrete observation type, deriving from BasePatientObservation.

### PreMapList(List<PatientObservation>)

Pre-maps a batch of patient observations, optimising the order in which they are persisted when both `Vent_Rate` and `FR` are present. If both observations are present with non-zero values, `Vent_Rate` is inserted first (and removed from the returned list) so that adas_core.Application.Customizations.HRYC.CalculatedObservations.CalculateRespRate(adas_core.Domain.Models.BasePatientObservation) can derive `Resp_Rate_Calculated` correctly.

    public Task<List<PatientObservation>> PreMapList(List<PatientObservation> listToInsert)

#### Parameters

`listToInsert` List<PatientObservation>

  The list of patient observations to pre-map. Modified in-place.

#### Returns

Task<List<PatientObservation>>

  A task that resolves to the resulting list of observations (with `Vent_Rate` removed when it was inserted synchronously, or the original list otherwise).

### SendAlarm(PatientObservation, string, Name?)

Placeholder alarm dispatch hook used by the customization contract. The HRYC customization dispatches NEWS alarms through its private `SendAlarm(BasePatientObservation, AlarmEnum.Name)` overload; calling this public overload always throws.

    public Task SendAlarm(PatientObservation obs, string name, AlarmEnum.Name? code)

#### Parameters

`obs` PatientObservation

  The patient observation that triggered the alarm.

`name` string

  The alarm display name.

`code` AlarmEnum.Name?

  The optional alarm code from AlarmEnum.Name.

#### Returns

Task

  Never returns a result.

#### Exceptions

NotImplementedException

  Always thrown because this overload is not used in the HRYC customization.