feature: Medication Tracking & Vital Sign Correlation

This commit is contained in:
voltsrage
2026-06-19 10:47:55 +08:00
parent e2d40331b7
commit 5c7e37471b
29 changed files with 2512 additions and 4 deletions
@@ -15,6 +15,7 @@ public class AppDbContext : DbContext
public DbSet<News2Score> News2Scores => Set<News2Score>();
public DbSet<SepsisBundle> SepsisBundles => Set<SepsisBundle>();
public DbSet<SepsisBundleElement> SepsisBundleElements => Set<SepsisBundleElement>();
public DbSet<MedicationAdministration> MedicationAdministrations => Set<MedicationAdministration>();
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
@@ -0,0 +1,27 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
public class MedicationAdministrationConfiguration : IEntityTypeConfiguration<MedicationAdministration>
{
public void Configure(EntityTypeBuilder<MedicationAdministration> builder)
{
builder.ToTable("medication_administrations");
builder.HasKey(m => m.Id);
builder.Property(m => m.Id).HasColumnName("id").HasDefaultValueSql("gen_random_uuid()");
builder.Property(m => m.EncounterId).HasColumnName("encounter_id").IsRequired();
builder.Property(m => m.DrugName).HasColumnName("drug_name").HasMaxLength(200).IsRequired();
builder.Property(m => m.Dose).HasColumnName("dose").HasPrecision(10, 4).IsRequired();
builder.Property(m => m.DoseUnit).HasColumnName("dose_unit").HasMaxLength(20).IsRequired();
builder.Property(m => m.Route).HasColumnName("route").HasMaxLength(50).IsRequired();
builder.Property(m => m.AdministeredAt).HasColumnName("administered_at").IsRequired();
builder.Property(m => m.AdministeredBy).HasColumnName("administered_by").HasMaxLength(100).IsRequired();
builder.HasOne(m => m.Encounter)
.WithMany()
.HasForeignKey(m => m.EncounterId)
.OnDelete(DeleteBehavior.Restrict);
builder.HasIndex(m => new { m.EncounterId, m.AdministeredAt });
builder.HasIndex(m => new { m.EncounterId, m.DrugName });
}
}