update readme

do  Ward table missing critical clinical columns
This commit is contained in:
voltsrage
2026-06-23 18:24:49 +08:00
parent 5d46200941
commit dd0fd88731
10 changed files with 365 additions and 26 deletions
@@ -12,4 +12,11 @@ public record WardEncounterSummary(
int QsofaScore,
bool SepsisActive,
SepsisBundleComplianceStatus? SepsisBundleStatus,
int OpenAlertCount);
int OpenAlertCount,
int? SofaScore,
int? SofaDelta,
int? GcsScore,
string? GcsClassification,
DateTimeOffset? LastObservationAt,
string AttendingPhysician,
DateTimeOffset AdmittedAt);
@@ -97,12 +97,38 @@ public class EncounterService : IEncounterService
.GroupBy(b => b.EncounterId)
.ToDictionary(g => g.Key, g => g.First());
var sofaByEncounter = (await _db.SofaScores
.AsNoTracking()
.Where(s => encounterIds.Contains(s.EncounterId))
.OrderByDescending(s => s.CalculatedAt)
.ToListAsync())
.GroupBy(s => s.EncounterId)
.ToDictionary(g => g.Key, g => g.First());
var gcsByEncounter = (await _db.GcsScores
.AsNoTracking()
.Where(s => encounterIds.Contains(s.EncounterId))
.OrderByDescending(s => s.CalculatedAt)
.ToListAsync())
.GroupBy(s => s.EncounterId)
.ToDictionary(g => g.Key, g => g.First());
var lastObservationByEncounter = await _db.Observations
.AsNoTracking()
.Where(o => encounterIds.Contains(o.EncounterId))
.GroupBy(o => o.EncounterId)
.Select(g => new { EncounterId = g.Key, LastAt = g.Max(o => o.RecordedAt) })
.ToDictionaryAsync(x => x.EncounterId, x => x.LastAt);
var summaries = new List<WardEncounterSummary>(encounters.Count);
foreach (var encounter in encounters)
{
news2ByEncounter.TryGetValue(encounter.Id, out var news2);
bundlesByEncounter.TryGetValue(encounter.Id, out var bundle);
openAlertCounts.TryGetValue(encounter.Id, out var openCount);
sofaByEncounter.TryGetValue(encounter.Id, out var sofa);
gcsByEncounter.TryGetValue(encounter.Id, out var gcs);
lastObservationByEncounter.TryGetValue(encounter.Id, out var lastObservationAt);
var qsofaScore = await _qsofa.GetActiveCriteriaCountAsync(encounter.Id);
@@ -120,7 +146,14 @@ public class EncounterService : IEncounterService
qsofaScore,
bundle is not null && bundle.ComplianceStatus != SepsisBundleComplianceStatus.Compliant,
bundle?.ComplianceStatus,
openCount));
openCount,
sofa?.TotalScore,
sofa?.DeltaFromBaseline,
gcs?.TotalScore,
gcs?.Classification,
lastObservationAt,
encounter.AttendingPhysician,
encounter.AdmittedAt));
}
return new PagedResult<WardEncounterSummary>(summaries, page, pageSize, total);