HH/docs/ORGANIZATION_MODEL.md

6.5 KiB

Organization Model Implementation

Overview

The Organization model has been added to create a hierarchical structure for healthcare facilities. This allows multiple hospitals to be grouped under a parent organization.

Model Structure

Organization (Top-level)
    ├── Hospital (Branch)
    │   ├── Department
    │   │   ├── Physician
    │   │   └── Employee
    │   └── Patient

Organization Model

Fields

  • name (CharField) - Organization name (English)
  • name_ar (CharField) - Organization name (Arabic)
  • code (CharField) - Unique organization code (indexed)
  • address (TextField) - Organization address
  • city (CharField) - Organization city
  • phone (CharField) - Contact phone number
  • email (EmailField) - Contact email address
  • website (URLField) - Organization website URL
  • status (CharField) - Active/Inactive status (from StatusChoices)
  • logo (ImageField) - Organization logo image
  • license_number (CharField) - Organization license number
  • created_at (DateTimeField) - Auto-populated creation timestamp
  • updated_at (DateTimeField) - Auto-populated update timestamp

Relationships

  • hospitals (One-to-Many) - Related name for Hospital model

Hospital Model Changes

New Field

  • organization (ForeignKey to Organization) - Parent organization (nullable for backward compatibility)

Backward Compatibility

The organization field is nullable to ensure existing hospitals without an organization continue to work.

Database Migration

Migration File

  • apps/organizations/migrations/0002_organization_hospital_organization.py

Changes Made

  1. Created Organization model table
  2. Added organization foreign key to Hospital table
  3. Migration applied successfully

Admin Interface

OrganizationAdmin

  • List display: name, code, city, status, created_at
  • Filters: status, city
  • Search: name, name_ar, code, license_number
  • Ordering: by name
  • Fieldsets: Basic info, Contact, Details, Metadata

HospitalAdmin Updates

  • Added organization field to form
  • Added autocomplete for organization selection
  • Added organization_name to list display (read-only)

Serializers

OrganizationSerializer

  • Includes hospitals_count method field
  • Fields: id, name, name_ar, code, address, city, phone, email, website, status, license_number, logo, hospitals_count, created_at, updated_at

HospitalSerializer Updates

  • Added organization field
  • Added organization_name (read-only, from organization.name)
  • Added departments_count method field
  • Fields: id, organization, organization_name, name, name_ar, code, address, city, phone, email, status, license_number, capacity, departments_count, created_at, updated_at

Data Migration

Management Command

python manage.py create_default_organization

Options

  • --name - Organization name (default: "Default Healthcare Organization")
  • --code - Organization code (default: "DEFAULT")
  • --force - Force reassignment of all hospitals
  • --dry-run - Preview changes without applying

Example Usage

# Create default organization
python manage.py create_default_organization

# Create with custom name and code
python manage.py create_default_organization --name="My Hospital Group" --code="MHG"

# Preview changes
python manage.py create_default_organization --dry-run

# Force reassign all hospitals
python manage.py create_default_organization --force

Current Data

  • Organization: King Faisal Specialist Hospital Group (KFSHG)
  • Hospital: Alhammadi Hospital (HH)
  • Departments: 10
  • Status: All hospitals assigned to organization

Verification

Verification Script

Run python verify_organization.py to check:

  • Total organizations
  • Hospitals per organization
  • Departments per hospital
  • Orphaned hospitals (without organization)

Expected Output

============================================================
Organization Verification
============================================================

Total Organizations: 1

Organization: King Faisal Specialist Hospital Group (KFSHG)
  Status: active
  Hospitals: 1
    - Alhammadi Hospital (Code: HH)
      Departments: 10

✓ All hospitals have organizations assigned

============================================================

Impact on Other Apps

Complaints App

  • Hospital selection in forms now shows organization context
  • Complaints can be filtered by organization via hospital relationship
  • No breaking changes - existing functionality preserved

Surveys App

  • Surveys can be filtered by organization
  • Patient relationships work through hospital → organization

Journey Engine

  • Journeys can be organized by organization
  • Department routing can consider organization context

Call Center

  • Agent dashboard can filter by organization
  • Call routing can consider organization hierarchy

Analytics App

  • Reports can be aggregated at organization level
  • Multi-hospital analytics available

Future Enhancements

  1. Organization-Level Permissions

    • Role-based access control at organization level
    • Organization admins managing their hospitals
  2. Organization Settings

    • Custom branding per organization
    • Organization-specific policies and procedures
    • Organization-level notification settings
  3. Organization Dashboard

    • Overview of all hospitals in organization
    • Aggregate metrics and KPIs
    • Cross-hospital comparison
  4. Multi-Organization Support

    • Users can belong to multiple organizations
    • Organization switching in UI
    • Organization-scoped data views
  5. Organization Hierarchy

    • Sub-organizations (regional, national)
    • Multi-level organization structure
    • Parent/child organization relationships
  6. Organization Templates

    • Standardized hospital templates
    • Quick setup of new hospitals
    • Consistent policies across organization

Notes

  • All models inherit from UUIDModel and TimeStampedModel for consistency
  • Bilingual support (English/Arabic) maintained throughout
  • Status management follows existing StatusChoices pattern
  • Backward compatible with existing data
  • No breaking changes to existing functionality

References

  • Model file: apps/organizations/models.py
  • Admin file: apps/organizations/admin.py
  • Serializer file: apps/organizations/serializers.py
  • Migration: apps/organizations/migrations/0002_organization_hospital_organization.py
  • Management command: apps/organizations/management/commands/create_default_organization.py