Implement first four phases of medical docs roadmap

This commit is contained in:
Josh-Heaps
2026-02-09 16:35:45 -07:00
parent e69e5663ce
commit 9ede3ae53f
27 changed files with 4095 additions and 0 deletions
@@ -0,0 +1,13 @@
namespace Media.JoshHeaps.Net.Models;
public class MedicalCondition
{
public long Id { get; set; }
public long PersonId { get; set; }
public string Name { get; set; } = string.Empty;
public DateTime? DiagnosedDate { get; set; }
public string? Notes { get; set; }
public bool IsActive { get; set; } = true;
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
}
@@ -0,0 +1,13 @@
namespace Media.JoshHeaps.Net.Models;
public class MedicalDoctor
{
public long Id { get; set; }
public string Name { get; set; } = string.Empty;
public string? Specialty { get; set; }
public string? Phone { get; set; }
public string? Address { get; set; }
public string? Notes { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
}
@@ -0,0 +1,27 @@
namespace Media.JoshHeaps.Net.Models;
public class MedicalDocument
{
public long Id { get; set; }
public long PersonId { get; set; }
public string DocumentType { get; set; } = "file"; // "file" or "note"
public string? FileName { get; set; }
public string? FilePath { get; set; }
public long? FileSize { get; set; }
public string? MimeType { get; set; }
public bool IsEncrypted { get; set; } = true;
public string? Title { get; set; }
public string? Description { get; set; }
public DateTime? DocumentDate { get; set; }
public string? Classification { get; set; }
public string? ExtractedText { get; set; }
public bool AiProcessed { get; set; }
public DateTime? AiProcessedAt { get; set; }
public string? AiRawResponse { get; set; }
public long? DoctorId { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
// Convenience properties populated separately
public List<MedicalTag> Tags { get; set; } = [];
}
@@ -0,0 +1,15 @@
namespace Media.JoshHeaps.Net.Models;
public class MedicalDocumentCost
{
public long Id { get; set; }
public long DocumentId { get; set; }
public long PersonId { get; set; }
public decimal Amount { get; set; }
public string? CostType { get; set; }
public string? Category { get; set; }
public DateTime? CostDate { get; set; }
public string? Description { get; set; }
public string Source { get; set; } = "manual";
public DateTime CreatedAt { get; set; }
}
@@ -0,0 +1,11 @@
namespace Media.JoshHeaps.Net.Models;
public class MedicalPerson
{
public long Id { get; set; }
public string Name { get; set; } = string.Empty;
public DateTime? DateOfBirth { get; set; }
public string? Notes { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
}
@@ -0,0 +1,21 @@
namespace Media.JoshHeaps.Net.Models;
public class MedicalPrescription
{
public long Id { get; set; }
public long PersonId { get; set; }
public long? DoctorId { get; set; }
public string MedicationName { get; set; } = string.Empty;
public string? Dosage { get; set; }
public string? Frequency { get; set; }
public bool IsActive { get; set; } = true;
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
public string? Notes { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
// Populated via JOIN, not stored in DB
public string? DoctorName { get; set; }
public DateTime? LastPickupDate { get; set; }
}
@@ -0,0 +1,14 @@
namespace Media.JoshHeaps.Net.Models;
public class MedicalPrescriptionPickup
{
public long Id { get; set; }
public long PrescriptionId { get; set; }
public long? DocumentId { get; set; }
public DateTime PickupDate { get; set; }
public string? Quantity { get; set; }
public string? Pharmacy { get; set; }
public decimal? Cost { get; set; }
public string? Notes { get; set; }
public DateTime CreatedAt { get; set; }
}
+8
View File
@@ -0,0 +1,8 @@
namespace Media.JoshHeaps.Net.Models;
public class MedicalTag
{
public long Id { get; set; }
public string Name { get; set; } = string.Empty;
public DateTime CreatedAt { get; set; }
}