Files
multitenetsaas/docs/api/healthcare
AHMET YILMAZ b3fff546e9
Some checks failed
System Monitoring / Health Checks (push) Has been cancelled
System Monitoring / Performance Monitoring (push) Has been cancelled
System Monitoring / Database Monitoring (push) Has been cancelled
System Monitoring / Cache Monitoring (push) Has been cancelled
System Monitoring / Log Monitoring (push) Has been cancelled
System Monitoring / Resource Monitoring (push) Has been cancelled
System Monitoring / Uptime Monitoring (push) Has been cancelled
System Monitoring / Backup Monitoring (push) Has been cancelled
System Monitoring / Security Monitoring (push) Has been cancelled
System Monitoring / Monitoring Dashboard (push) Has been cancelled
System Monitoring / Alerting (push) Has been cancelled
Security Scanning / Dependency Scanning (push) Has been cancelled
Security Scanning / Code Security Scanning (push) Has been cancelled
Security Scanning / Secrets Scanning (push) Has been cancelled
Security Scanning / Container Security Scanning (push) Has been cancelled
Security Scanning / Compliance Checking (push) Has been cancelled
Security Scanning / Security Dashboard (push) Has been cancelled
Security Scanning / Security Remediation (push) Has been cancelled
project initialization
2025-10-05 02:37:33 +08:00
..
2025-10-05 02:37:33 +08:00

Healthcare Module API Documentation

Overview

The Healthcare Module API provides comprehensive functionality for healthcare providers including patient management, appointment scheduling, medical records, and Malaysian healthcare compliance.

Patients

Create Patient

POST /api/v1/healthcare/patients/

Request Body:

{
  "first_name": "Muhammad",
  "last_name": "Abdullah",
  "ic_number": "900101-01-1234",
  "date_of_birth": "1990-01-01",
  "gender": "male",
  "email": "muhammad.abdullah@example.com",
  "phone_number": "+60123456789",
  "emergency_contact": {
    "name": "Aminah Abdullah",
    "relationship": "spouse",
    "phone_number": "+60123456788"
  },
  "address": {
    "street": "123 Patient Street",
    "city": "Kuala Lumpur",
    "state": "Wilayah Persekutuan",
    "postal_code": "50050",
    "country": "Malaysia"
  },
  "blood_type": "O+",
  "allergies": ["penicillin", "peanuts"],
  "chronic_conditions": ["hypertension", "diabetes"],
  "medications": ["metformin 500mg", "lisinopril 10mg"],
  "insurance_info": {
    "provider": "Great Eastern",
    "policy_number": "GE-123456789",
    "expiry_date": "2024-12-31"
  },
  "notes": "Prefers morning appointments"
}

Response:

{
  "success": true,
  "data": {
    "id": "pat_123456",
    "first_name": "Muhammad",
    "last_name": "Abdullah",
    "ic_number": "900101-01-1234",
    "date_of_birth": "1990-01-01",
    "gender": "male",
    "email": "muhammad.abdullah@example.com",
    "phone_number": "+60123456789",
    "emergency_contact": {
      "name": "Aminah Abdullah",
      "relationship": "spouse",
      "phone_number": "+60123456788"
    },
    "address": {
      "street": "123 Patient Street",
      "city": "Kuala Lumpur",
      "state": "Wilayah Persekutuan",
      "postal_code": "50050",
      "country": "Malaysia"
    },
    "blood_type": "O+",
    "allergies": ["penicillin", "peanuts"],
    "chronic_conditions": ["hypertension", "diabetes"],
    "medications": ["metformin 500mg", "lisinopril 10mg"],
    "insurance_info": {
      "provider": "Great Eastern",
      "policy_number": "GE-123456789",
      "expiry_date": "2024-12-31"
    },
    "pdpa_consent": true,
    "pdpa_consent_date": "2024-01-01T00:00:00Z",
    "notes": "Prefers morning appointments",
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2024-01-01T00:00:00Z"
  }
}

Get Patient

GET /api/v1/healthcare/patients/{patient_id}/

Update Patient

PUT /api/v1/healthcare/patients/{patient_id}/

List Patients

GET /api/v1/healthcare/patients/

Query Parameters:

  • page - Page number (default: 1)
  • page_size - Items per page (default: 20, max: 100)
  • search - Search in name, IC number, email
  • date_of_birth - Filter by date of birth
  • gender - Filter by gender
  • blood_type - Filter by blood type
  • has_insurance - Filter by insurance status

Delete Patient

DELETE /api/v1/healthcare/patients/{patient_id}/

Get Patient Medical History

GET /api/v1/healthcare/patients/{patient_id}/medical-history/

Appointments

Create Appointment

POST /api/v1/healthcare/appointments/

Request Body:

{
  "patient_id": "pat_123456",
  "doctor_id": "doc_789012",
  "appointment_type": "consultation",
  "scheduled_date": "2024-01-15",
  "scheduled_time": "09:00:00",
  "duration_minutes": 30,
  "reason": "Routine check-up",
  "symptoms": ["headache", "fatigue"],
  "priority": "normal",
  "status": "scheduled",
  "notes": "Patient prefers morning appointments"
}

Response:

{
  "success": true,
  "data": {
    "id": "apt_123456",
    "patient_id": "pat_123456",
    "doctor_id": "doc_789012",
    "appointment_type": "consultation",
    "scheduled_date": "2024-01-15",
    "scheduled_time": "09:00:00",
    "duration_minutes": 30,
    "reason": "Routine check-up",
    "symptoms": ["headache", "fatigue"],
    "priority": "normal",
    "status": "scheduled",
    "check_in_time": null,
    "start_time": null,
    "end_time": null,
    "doctor_notes": null,
    "prescriptions": [],
    "follow_up_required": false,
    "follow_up_date": null,
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2024-01-01T00:00:00Z"
  }
}

Get Appointment

GET /api/v1/healthcare/appointments/{appointment_id}/

Update Appointment

PUT /api/v1/healthcare/appointments/{appointment_id}/

List Appointments

GET /api/v1/healthcare/appointments/

Query Parameters:

  • page - Page number (default: 1)
  • page_size - Items per page (default: 20, max: 100)
  • patient_id - Filter by patient
  • doctor_id - Filter by doctor
  • date_from - Filter by start date (YYYY-MM-DD)
  • date_to - Filter by end date (YYYY-MM-DD)
  • status - Filter by status (scheduled, confirmed, in_progress, completed, cancelled, no_show)
  • appointment_type - Filter by appointment type

Cancel Appointment

POST /api/v1/healthcare/appointments/{appointment_id}/cancel/

Request Body:

{
  "reason": "Patient unable to attend",
  "cancelled_by": "patient"
}

Check-in Patient

POST /api/v1/healthcare/appointments/{appointment_id}/check-in/

Start Appointment

POST /api/v1/healthcare/appointments/{appointment_id}/start/

Complete Appointment

POST /api/v1/healthcare/appointments/{appointment_id}/complete/

Request Body:

{
  "doctor_notes": "Patient shows improvement. Continue current medication.",
  "diagnosis": "Essential hypertension",
  "treatment_plan": "Continue current medication, lifestyle modifications",
  "follow_up_required": true,
  "follow_up_date": "2024-02-15",
  "prescriptions": [
    {
      "medication": "Metformin 500mg",
      "dosage": "1 tablet twice daily",
      "duration": "30 days",
      "instructions": "Take with meals"
    }
  ]
}

Get Doctor Schedule

GET /api/v1/healthcare/doctors/{doctor_id}/schedule/

Query Parameters:

  • date_from - Filter by start date (YYYY-MM-DD)
  • date_to - Filter by end date (YYYY-MM-DD)

Medical Records

Create Medical Record

POST /api/v1/healthcare/medical-records/

Request Body:

{
  "patient_id": "pat_123456",
  "doctor_id": "doc_789012",
  "appointment_id": "apt_123456",
  "record_type": "consultation",
  "diagnosis": "Essential hypertension",
  "symptoms": ["headache", "dizziness", "fatigue"],
  "vitals": {
    "blood_pressure": "140/90",
    "heart_rate": 72,
    "temperature": 36.8,
    "weight": 75.5,
    "height": 175
  },
  "notes": "Patient reports occasional headaches. BP elevated.",
  "treatment_plan": "Lifestyle modifications, monitor BP",
  "follow_up_instructions": "Return in 2 weeks for BP check",
  "attachments": ["file_123456"]
}

Get Medical Record

GET /api/v1/healthcare/medical-records/{record_id}/

Update Medical Record

PUT /api/v1/healthcare/medical-records/{record_id}/

List Medical Records

GET /api/v1/healthcare/medical-records/

Query Parameters:

  • page - Page number (default: 1)
  • page_size - Items per page (default: 20, max: 100)
  • patient_id - Filter by patient
  • doctor_id - Filter by doctor
  • record_type - Filter by record type
  • date_from - Filter by date (YYYY-MM-DD)
  • date_to - Filter by date (YYYY-MM-DD)

Prescriptions

Create Prescription

POST /api/v1/healthcare/prescriptions/

Request Body:

{
  "patient_id": "pat_123456",
  "doctor_id": "doc_789012",
  "appointment_id": "apt_123456",
  "medication": "Metformin 500mg",
  "dosage": "1 tablet twice daily",
  "frequency": "twice daily",
  "duration": "30 days",
  "quantity": 60,
  "instructions": "Take with meals",
  "refills_allowed": 3,
  "refills_used": 0,
  "notes": "Monitor for side effects"
}

Get Prescription

GET /api/v1/healthcare/prescriptions/{prescription_id}/

Update Prescription

PUT /api/v1/healthcare/prescriptions/{prescription_id}/

List Prescriptions

GET /api/v1/healthcare/prescriptions/

Query Parameters:

  • page - Page number (default: 1)
  • page_size - Items per page (default: 20, max: 100)
  • patient_id - Filter by patient
  • doctor_id - Filter by doctor
  • status - Filter by status (active, completed, expired)
  • date_from - Filter by date (YYYY-MM-DD)
  • date_to - Filter by date (YYYY-MM-DD)

Refill Prescription

POST /api/v1/healthcare/prescriptions/{prescription_id}/refill/

Vaccinations

Record Vaccination

POST /api/v1/healthcare/vaccinations/

Request Body:

{
  "patient_id": "pat_123456",
  "vaccine_type": "influenza",
  "vaccine_name": "Vaxigrip",
  "batch_number": "FLU2024-1234",
  "administration_date": "2024-01-15",
  "administered_by": "doc_789012",
  "dose_number": 1,
  "total_doses": 1,
  "next_due_date": null,
  "notes": "Annual flu vaccine"
}

Get Vaccination Record

GET /api/v1/healthcare/patients/{patient_id}/vaccinations/

List Vaccinations

GET /api/v1/healthcare/vaccinations/

Query Parameters:

  • page - Page number (default: 1)
  • page_size - Items per page (default: 20, max: 100)
  • patient_id - Filter by patient
  • vaccine_type - Filter by vaccine type
  • date_from - Filter by date (YYYY-MM-DD)
  • date_to - Filter by date (YYYY-MM-DD)

Billing and Insurance

Create Bill

POST /api/v1/healthcare/billing/

Request Body:

{
  "patient_id": "pat_123456",
  "appointment_id": "apt_123456",
  "items": [
    {
      "description": "Consultation fee",
      "quantity": 1,
      "unit_price": 100.00,
      "tax_rate": 0.0
    },
    {
      "description": "Blood test",
      "quantity": 1,
      "unit_price": 50.00,
      "tax_rate": 0.0
    }
  ],
  "payment_method": "cash",
  "insurance_claim": true,
  "insurance_provider": "Great Eastern",
  "policy_number": "GE-123456789"
}

Get Bill

GET /api/v1/healthcare/billing/{bill_id}/

List Bills

GET /api/v1/healthcare/billing/

Query Parameters:

  • page - Page number (default: 1)
  • page_size - Items per page (default: 20, max: 100)
  • patient_id - Filter by patient
  • "status" - Filter by status (pending, paid, partially_paid, overdue)
  • date_from - Filter by date (YYYY-MM-DD)
  • date_to - Filter by date (YYYY-MM-DD)

Reports and Analytics

Patient Demographics Report

GET /api/v1/healthcare/reports/patient-demographics/

Query Parameters:

  • group_by - Group by (age_group, gender, location)
  • date_from - Filter by date (YYYY-MM-DD)
  • date_to - Filter by date (YYYY-MM-DD)
  • format - Output format (json, csv, pdf)

Appointment Statistics

GET /api/v1/healthcare/reports/appointment-stats/

Query Parameters:

  • date_from - Filter by date (YYYY-MM-DD)
  • date_to - Filter by date (YYYY-MM-DD)
  • group_by - Group by (doctor, appointment_type, status)
  • format - Output format (json, csv, pdf)

Revenue Report

GET /api/v1/healthcare/reports/revenue/

Query Parameters:

  • date_from - Filter by date (YYYY-MM-DD)
  • date_to - Filter by date (YYYY-MM-DD)
  • group_by - Group by (service_type, doctor, payment_method)
  • format - Output format (json, csv, pdf)

Malaysian Healthcare Features

Malaysian IC Validation

All patient IC numbers are validated according to Malaysian format:

  • YYMMDD-PB-XXXX format
  • Age and gender verification
  • Basic checksum validation

PDPA Compliance

All patient data handling follows Malaysian Personal Data Protection Act 2010:

{
  "pdpa_consent": true,
  "pdpa_consent_date": "2024-01-01T00:00:00Z",
  "data_retention_period": "7_years"
}

Malaysian Healthcare Providers

Integration with Malaysian healthcare systems:

{
  "malaysian_healthcare": {
    "provider_type": "general_practitioner",
    "mmc_registration": "MMC-12345",
    "kkm_license": "KKM-12345",
    "clinic_registration": "KKM-CLINIC-12345"
  }
}

Malaysian Vaccination Schedule

Support for Malaysian National Immunisation Program:

  • Childhood vaccinations
  • Adult booster shots
  • Travel vaccinations
  • COVID-19 vaccinations

Malaysian Insurance Integration

Support for major Malaysian insurance providers:

  • Great Eastern
  • Prudential
  • AIA
  • Allianz
  • Etiqa

Malaysian Time and Holidays

All scheduling respects Malaysian public holidays and business hours:

  • Malaysian timezone (UTC+8)
  • Public holiday awareness
  • Prayer time considerations for Muslim patients

Emergency Services

Integration with Malaysian emergency services:

  • Hospital referrals
  • Ambulance services
  • Emergency contact protocols