Dental Clinic

Dental Clinic - Structural Topology & Domain Modeling

Physical practice topology, Aggregate Roots, Entities, Value Objects, and hierarchical relationships governing the Dental Clinic domain.

Structural Topology & Domain Modeling

The Dental Clinic domain organizes its tactical architecture around two interconnected foundations: the physical and operational practice topology (branches, operatories, chairs, and clinical staff) and the tactical Domain-Driven Design (DDD) aggregate hierarchy governing clinical care, treatment plans, lab orders, and infection control.


1. Practice & Operatory Physical Topology

The practice topology models the physical infrastructure of a multi-location dental practice or dental hospital:

Dental Practice / Health Network
└── Practice Branch / Clinic Facility
    ├── Operatory Room (Dental Chair Station)
    │   ├── Dental Patient Chair (Hydraulic/Electric)
    │   ├── Doctor & Assistant Delivery Units
    │   ├── High-Volume Evacuation (HVE) & Saliva Ejector
    │   ├── Intraoral X-Ray Generator & Digital Sensor
    │   ├── LED Polymerization Curing Light
    │   └── Assigned Sterile Cassette Staging Cart
    ├── Central Sterilization Facility (Decontamination & Autoclaves)
    │   ├── Ultrasonic Cleaner / Thermal Washer Disinfector
    │   ├── Autoclave Steam Sterilizers (Class B / Vacuum)
    │   └── Sterile Cassette Storage Vault
    └── Clinical Staff Resource Pool
        ├── Attending Dentists / Dental Specialists
        ├── Registered Dental Hygienists
        └── Certified Dental Assistants

Topology Levels Explained

LevelDescriptionKey Attributes
Practice BranchThe physical facility or clinical building.Branch code, legal entity name, operating license, address, operating hours.
Operatory (Chair)The sovereign clinical treatment room where procedures are executed.Operatory ID, room number, clinical capabilities (e.g., General, Surgical, Orthodontic), default turnover buffer minutes.
Delivery HardwareThe mechanical and electronic instruments mounted at the chair.Air/water lines, handpiece couplers, ultrasonic scaler, curing light intensity rating.
Sterilization SuiteThe central clean room where contaminated instruments are processed.Autoclave unit serials, incubator unit for spore test culture, biological indicator inventory.

2. Aggregate Roots & Tactical Hierarchy

The tactical domain model partitions clinical responsibilities into six sovereign Aggregate Roots, ensuring transactional consistency, boundary protection, and invariant enforcement:

flowchart TD
    subgraph ClinicalPatientDomain["Patient Dental Charting Boundary"]
        PDR["PatientDentalRecord (Aggregate Root)"]
        ODO["Odontogram (Entity)"]
        TR["ToothRecord (Entity, 1..32)"]
        SR["SurfaceRecord (Value Object, M-D-O-B-L)"]
        PC["PeriodontalChart (Entity)"]
        PSP["PeriodontalSiteProbing (Value Object, 6 sites/tooth)"]

        PDR --> ODO
        ODO --> TR
        TR --> SR
        PDR --> PC
        PC --> PSP
    end

    subgraph PlanningBoundary["Treatment Planning Boundary"]
        TP["TreatmentPlan (Aggregate Root)"]
        PH["TreatmentPhase (Entity)"]
        PPI["PlannedProcedureItem (Entity)"]
        CR["InformedConsentRecord (Value Object)"]

        TP --> PH
        PH --> PPI
        PPI --> CR
    end

    subgraph EncounterBoundary["Operatory Encounter Boundary"]
        ENC["OperatoryEncounter (Aggregate Root)"]
        MAC["MedicalAlertClearance (Value Object)"]
        PER["ProcedureExecutionRecord (Entity)"]
        AA["AdministeredAnesthetic (Value Object)"]
        CML["ConsumedMaterialLot (Value Object)"]
        SCV["SterileCassetteVerification (Value Object)"]

        ENC --> MAC
        ENC --> PER
        PER --> AA
        PER --> CML
        ENC --> SCV
    end

    subgraph LabBoundary["Dental Laboratory Boundary"]
        DLO["DentalLabOrder (Aggregate Root)"]
        PS["ProstheticSpecification (Value Object)"]
        SRec["ShadeRecipe (Value Object)"]
        LME["LabMilestoneEntry (Entity)"]

        DLO --> PS
        DLO --> SRec
        DLO --> LME
    end

    subgraph SterilizationBoundary["Infection Control Boundary"]
        SCB["SterilizationCycleBatch (Aggregate Root)"]
        ACP["AutoclaveCycleParameters (Value Object)"]
        BIR["BiologicalIndicatorResult (Value Object)"]
        SCP["SterileCassettePack (Entity)"]

        SCB --> ACP
        SCB --> BIR
        SCB --> SCP
    end

    subgraph SchedulingBoundary["Operatory Logistics Boundary"]
        OSB["OperatoryScheduleBlock (Aggregate Root)"]
        TDB["TurnoverDisinfectionBuffer (Value Object)"]

        OSB --> TDB
    end

    TP -.->|References Procedures| ENC
    DLO -.->|Supplies Prosthesis for Seating| ENC
    SCP -.->|Verifies Barcode at Chairside| ENC

3. Detailed Aggregate Specifications

Aggregate Root 1: PatientDentalRecord

  • Role: Sovereign custodian of the patient’s oral anatomical reality over time.
  • Root Entity: PatientDentalRecord (Identified by PatientDentalRecordId).
  • Internal Entities:
    • Odontogram: Manages tooth presence, spatial arrangement, and developmental dentition type (Deciduous, Mixed, Permanent).
    • ToothRecord: Represents an individual tooth identified by its standardized numbering notation (e.g., FDI Two-Digit 11 to 48 or deciduous 51 to 85). Tracks overall status: Present, CongenitallyMissing, Impacted, Extracted, Implanted, or PonticAbutment.
    • PeriodontalChart: Encapsulates full-mouth periodontal probing sessions conducted over the patient’s lifecycle.
  • Value Objects:
    • SurfaceRecord: Immutable mapping of tooth surfaces (Mesial, Distal, Occlusal/Incisal, Buccal/Facial, Lingual/Palatal) to specific conditions (e.g., EnamelCaries, CompositeRestoration, AmalgamRestoration, PorcelainVeneer).
    • PeriodontalSiteProbing: Immutable 6-site probing recording (Mesiobuccal, Midbuccal, Distobuccal, Mesiolingual, Midlingual, Distolingual) with depth in millimeters, BleedingOnProbing (boolean), Suppuration (boolean), and GingivalMarginRecession in millimeters.

Aggregate Root 2: TreatmentPlan

  • Role: Coordinates the clinical strategy, financial estimates, and legal consent governing proposed dental interventions.
  • Root Entity: TreatmentPlan (Identified by TreatmentPlanId, references PatientId and DiagnosingClinicianId).
  • Internal Entities:
    • TreatmentPhase: Represents a sequenced clinical stage (e.g., Phase 1: Emergency & Pain Control, Phase 2: Periodontal Stabilization, Phase 3: Restorative & Endodontics, Phase 4: Prosthodontics & Surgery, Phase 5: Maintenance).
    • PlannedProcedureItem: An individual clinical procedure line item identified by PlannedProcedureItemId. References a standard CdtCode (e.g., D2740 for Porcelain/Ceramic Crown), target ToothNumber, optional target Surfaces, priority sequence, and status (Proposed, Accepted, Scheduled, InExecution, Completed, Abandoned).
  • Value Objects:
    • ProcedureFeeEstimate: Immutable financial breakdown containing GrossFee, EstimatedInsuranceBenefit, and calculated PatientCopaymentShare.
    • InformedConsentRecord: Cryptographically signed token capturing ConsentDocumentHash, PatientOrGuardianSignature, SignatureTimestamp, and ClinicianWitnessId.

Aggregate Root 3: OperatoryEncounter

  • Role: Transaction boundary for a live chairside clinical appointment session.
  • Root Entity: OperatoryEncounter (Identified by OperatoryEncounterId).
  • Internal Entities:
    • ProcedureExecutionRecord: Captures the actual clinical intervention performed during this session, linking back to the PlannedProcedureItemId.
  • Value Objects:
    • MedicalAlertClearance: Mandatory sign-off verifying that patient health alerts (allergies, anticoagulants, antibiotic prophylaxis compliance, blood pressure) have been reviewed and cleared by the licensed dentist prior to treatment.
    • AdministeredAnesthetic: Immutable record of local anesthesia delivered, including AnestheticAgent (e.g., Articaine 4%, Mepivacaine 3%), VasoconstrictorRatio (e.g., 1:100,000 Epinephrine), CarpuleCount, injection technique (Infiltration, InferiorAlveolarNerveBlock), and administration timestamp.
    • ConsumedMaterialLot: Mandatory lot tracking record capturing MaterialType (e.g., Dental Implant, Bone Graft Particulate, Collagen Resorbable Membrane), Manufacturer, LotNumber, SerialNumber, and expiration date for post-market medical device traceability.
    • SterileCassetteVerification: The unique barcode identifier of the sterilized instrument cassette scanned at chairside, verifying clean infection control linkage.

Aggregate Root 4: DentalLabOrder

  • Role: Governs the commercial and fabrication lifecycle of indirect dental prostheses.
  • Root Entity: DentalLabOrder (Identified by DentalLabOrderId, references OperatoryEncounterId and ExternalLabProviderId).
  • Internal Entities:
    • LabMilestoneEntry: An audit trail entry capturing laboratory progress (e.g., PrescriptionDispatched, ScanMeshValidated, FrameworkMilled, BiscuitTryInDelivered, FinalRestorationAccepted).
  • Value Objects:
    • ProstheticSpecification: Defines the anatomical target tooth, restoration category (SingleCrown, ThreeUnitBridge, CompleteDenture, ImplantCustomAbutment), and structural substrate (MonolithicZirconia, LithiumDisilicateEmax, PorcelainFusedToMetal).
    • ShadeRecipe: Colorimetric prescription detailing body shade (e.g., VITA Classical A2), stump shade (e.g., ND2), incisal translucency degree, and surface characterization instructions.
    • DigitalScanAsset: Immutable URI reference and SHA-256 cryptographic hash of the 3D intraoral optical scan mesh (STL or PLY format).

Aggregate Root 5: SterilizationCycleBatch

  • Role: Enforces infection control governance, autoclave telemetry recording, and instrument cassette safety.
  • Root Entity: SterilizationCycleBatch (Identified by SterilizationBatchId).
  • Internal Entities:
    • SterileCassettePack: An individual cassette package identified by a unique CassetteBarcode. Contains cassette type (e.g., RestorativeCassette, SurgicalCassette), packing timestamp, and packaging technician ID.
  • Value Objects:
    • AutoclaveCycleParameters: Telemetry verifying AutoclaveUnitId, sequential CycleNumber, peak sterilization TemperatureCelsius ($\ge 134^\circ\text{C}$), ChamberPressureBar ($\ge 2.1\text{ bar}$), and sustained ExposureDurationMinutes ($\ge 4.0\text{ min}$).
    • BiologicalIndicatorResult: Verification record of bacterial spore test (Geobacillus stearothermophilus), including test incubation start/end timestamps, reader serial, and final binary outcome (Pass / Fail).

Aggregate Root 6: OperatoryScheduleBlock

  • Role: Manages physical operatory chair reservations, multi-resource assignments, and mandatory sanitization windows.
  • Root Entity: OperatoryScheduleBlock (Identified by ScheduleBlockId).
  • Value Objects:
    • ResourceAllocationSet: The synchronized group of enterprise resources assigned to the block (OperatoryId, AttendingClinicianId, AssistingDentalAssistantId, PatientId).
    • TurnoverDisinfectionBuffer: Immutable time duration appended immediately after clinical procedure completion dedicated exclusively to aerosol evacuation, surface wipe-down with hospital-grade disinfectant, and instrument restocking.

Our Premium Sponsors

Obelaw is proudly open-source. Continued development, bug fixes, and community support are made possible by the generosity of our sponsors.

Sponsor Obelaw