Skip to main content

nexcore_disease/
lib.rs

1//! # NexVigilant Core — Disease
2//!
3//! Disease domain models: epidemiology, treatment landscape, safety burden, and unmet needs.
4//! Part of the Company × Drug × Disease knowledge graph.
5
6#![forbid(unsafe_code)]
7#![deny(clippy::unwrap_used, clippy::expect_used, clippy::panic)]
8
9mod analysis;
10mod biomarker;
11mod disease;
12mod epidemiology;
13mod id;
14mod safety_burden;
15mod treatment;
16mod unmet_need;
17
18pub use analysis::DiseaseAnalysis;
19pub use biomarker::{Biomarker, BiomarkerType};
20pub use disease::Disease;
21pub use epidemiology::{Demographics, Epidemiology, Trend};
22pub use id::DiseaseId;
23pub use safety_burden::{ClassEffect, DrugWithdrawal, SafetyBurden};
24pub use treatment::{EvidenceLevel, LineOfTherapy, TreatmentLine};
25pub use unmet_need::{NeedSeverity, UnmetNeed};
26
27/// Therapeutic area classification.
28#[derive(Debug, Clone, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)]
29pub enum TherapeuticArea {
30    Oncology,
31    Immunology,
32    Neuroscience,
33    Cardiovascular,
34    Metabolic,
35    RareDisease,
36    Respiratory,
37    Infectious,
38    Hematology,
39    Ophthalmology,
40    Dermatology,
41    Gastroenterology,
42    Other(String),
43}
44
45impl std::fmt::Display for TherapeuticArea {
46    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
47        match self {
48            Self::Oncology => write!(f, "Oncology"),
49            Self::Immunology => write!(f, "Immunology"),
50            Self::Neuroscience => write!(f, "Neuroscience"),
51            Self::Cardiovascular => write!(f, "Cardiovascular"),
52            Self::Metabolic => write!(f, "Metabolic"),
53            Self::RareDisease => write!(f, "Rare Disease"),
54            Self::Respiratory => write!(f, "Respiratory"),
55            Self::Infectious => write!(f, "Infectious Disease"),
56            Self::Hematology => write!(f, "Hematology"),
57            Self::Ophthalmology => write!(f, "Ophthalmology"),
58            Self::Dermatology => write!(f, "Dermatology"),
59            Self::Gastroenterology => write!(f, "Gastroenterology"),
60            Self::Other(s) => write!(f, "{s}"),
61        }
62    }
63}