nexcore_pharma/lib.rs
1//! # nexcore-pharma
2//!
3//! Pharmaceutical company domain models — products, pipelines, safety
4//! profiles, and competitive analysis.
5//!
6//! ## T1 Primitive Grounding
7//!
8//! | Concept | Primitive | Symbol | Role |
9//! |---------|-----------|--------|------|
10//! | Company / Product structs | State | ς | Mutable domain aggregates |
11//! | TherapeuticArea / Phase / SignalVerdict / CommType | Sum | Σ | Variant classification |
12//! | CompanyAnalysis trait methods | Mapping | μ | Transform aggregate → view |
13//! | Option fields (ticker, rxcui, …) | Void | ∅ | Strategic absence |
14//! | Result at API edges | Boundary | ∂ | Error propagation gates |
15//! | Filter / match in trait methods | Comparison | κ | Predicate selection |
16//! | prr / ror / cases | Quantity | N | Disproportionality magnitudes |
17//! | Serialize / Deserialize | Persistence | π | Cross-boundary transport |
18//! | ::new() constructors | Existence | ∃ | Aggregate instantiation |
19//! | Trait method chains | Causality | → | Query → result pipelines |
20//!
21//! ## Modules
22//!
23//! - [`id`]: `CompanyId` newtype (type-safe string identity)
24//! - [`therapeutic`]: `TherapeuticArea` enum (13 variants)
25//! - [`product`]: `Product`, `SafetyProfile`, `SignalSummary`, `SignalVerdict`
26//! - [`pipeline`]: `PipelineCandidate`, `Phase`
27//! - [`safety_comm`]: `SafetyCommunication`, `CommType`
28//! - [`company`]: `Company` aggregate
29//! - [`analysis`]: `CompanyAnalysis` trait + `DefaultAnalysis` implementation
30
31#![forbid(unsafe_code)]
32#![warn(missing_docs)]
33#![cfg_attr(
34 not(test),
35 deny(clippy::unwrap_used, clippy::expect_used, clippy::panic)
36)]
37
38pub mod analysis;
39pub mod company;
40pub mod id;
41pub mod pipeline;
42pub mod product;
43pub mod safety_comm;
44pub mod therapeutic;
45
46pub use analysis::CompanyAnalysis;
47pub use company::Company;
48pub use id::CompanyId;
49pub use pipeline::{Phase, PipelineCandidate};
50pub use product::{Product, SafetyProfile, SignalSummary, SignalVerdict};
51pub use safety_comm::{CommType, SafetyCommunication};
52pub use therapeutic::TherapeuticArea;