Source code for imednet.models.reporting

from __future__ import annotations

from datetime import datetime
from typing import Optional

from pydantic import Field

from imednet.models.json_base import JsonModel


[docs]class AdverseEvent(JsonModel): """Canonical CDISC-aligned Adverse Event (AE) reporting model.""" subject_key: str = Field(..., alias="subjectKey", description="Unique subject identifier") ae_term: str = Field( ..., alias="aeTerm", description="Reported term for the adverse event (AETERM)" ) ae_decod: Optional[str] = Field( None, alias="aeDecod", description="Dictionary-derived preferred term (AEDECOD)" ) ae_severity: str = Field( ..., alias="aeSeverity", description="Severity/intensity: MILD, MODERATE, SEVERE (AESEV)" ) ae_serious: bool = Field( False, alias="aeSerious", description="Serious Adverse Event flag (AESER)" ) ae_start_date: Optional[datetime] = Field( None, alias="aeStartDate", description="Start date/time of event (AESTDTC)" ) ae_end_date: Optional[datetime] = Field( None, alias="aeEndDate", description="End date/time of event (AEENDTC)" ) ae_outcome: Optional[str] = Field( None, alias="aeOutcome", description="Outcome of adverse event (AEOUT)" ) ae_relationship: Optional[str] = Field( None, alias="aeRelationship", description="Causality / relationship to study drug/device (AEREL)", ) ae_action_taken: Optional[str] = Field( None, alias="aeActionTaken", description="Action taken with study drug/device (AEACN)", )
[docs]class ProtocolDeviation(JsonModel): """Canonical CDISC-aligned Protocol Deviation (PD) reporting model.""" subject_key: str = Field(..., alias="subjectKey", description="Unique subject identifier") dv_term: str = Field(..., alias="dvTerm", description="Description of the deviation (DVTERM)") dv_category: str = Field( ..., alias="dvCategory", description="Deviation category, e.g., ELIGIBILITY, CONSENT, PROCEDURE (DVCAT)", ) dv_severity: str = Field( ..., alias="dvSeverity", description="Deviation classification: MAJOR, MINOR, CRITICAL", ) dv_date: datetime = Field(..., alias="dvDate", description="Date/time of deviation (DVSTDTC)") dv_status: str = Field( "Unreviewed", alias="dvStatus", description="Triage status: Unreviewed, Approved, Escalated", )
[docs]class DeviceDeficiency(JsonModel): """Canonical CDISC-aligned Device Deficiency (DD) reporting model.""" subject_key: str = Field(..., alias="subjectKey", description="Unique subject identifier") dd_term: str = Field(..., alias="ddTerm", description="Deficiency term (DDTERM)") dd_category: str = Field(..., alias="ddCategory", description="Category of deficiency (DDCAT)") dd_serious: bool = Field( False, alias="ddSerious", description="Serious Adverse Event relation flag (DDSPID)", ) dd_date: datetime = Field( ..., alias="ddDate", description="Date/time of deficiency occurrence (DDSTDTC)" )