Files
vigilcare-clinical/VigilCareClinicalAPI/Medication/MedicationCorrelationHelper.cs
T

39 lines
1.3 KiB
C#

using Microsoft.Extensions.Options;
public class MedicationCorrelationHelper
{
private readonly IMedicationService _medicationService;
private readonly MedicationCorrelationOptions _options;
public MedicationCorrelationHelper(
IMedicationService medicationService,
IOptions<MedicationCorrelationOptions> options)
{
_medicationService = medicationService;
_options = options.Value;
}
/// <summary>
/// Appends medication context to alert details if a correlated administration
/// exists within the lookback window. Returns the original details if none found.
/// </summary>
public async Task<string> TryAnnotateDetailsAsync(
Guid encounterId,
string observationCode,
string details,
CancellationToken ct = default)
{
var recent = await _medicationService.GetRecentForEncounterAsync(
encounterId, observationCode, _options.CorrelationWindowMinutes);
if (recent.Count == 0)
return details;
// Use the most recent correlated administration
var med = recent[0];
var minutesAgo = (int)(DateTimeOffset.UtcNow - med.AdministeredAt).TotalMinutes;
return $"{details} — note: {med.DrugName} {med.Dose}{med.DoseUnit} " +
$"({med.Route}) administered {minutesAgo} min ago";
}
}