Core Components
Patient
Every healthcare journey begins with a person - the patient. This component captures who they are, where they live, and important personal information that helps healthcare providers give them the best care possible.
Think of the patient record as the foundation of everything else. It's like the cover page of a medical file that tells you who this person is, how to contact them, and important details about their identity and background.
Data Model
| Field | Type | Required | Description |
|---|---|---|---|
| code | string | YES | Unique identifier for the patient in the system |
| surname | string | YES | Patient's family name |
| name | string | YES | Patient's given name |
| sex | string | YES | Patient's biological sex |
| birthdate | date | YES | Patient's date of birth |
| phone | string | YES | Patient's contact number |
| nationality | string | YES | Patient's nationality |
| disabilities | array of strings | List of disabilities, if applicable | |
| occupation | string | Patient's job or profession (nullable) | |
| marital_status | string | YES | Patient's marital status (nullable) |
| photos | array of strings | URLs to patient photos (nullable) | |
| address | object | YES | Patient's address information (see Address model) |
| identifications | array of objects | Patient identification documents (see Identification model) | |
| death_date | datetime | Date and time of death, if applicable | |
| spid | string | YES | Patient's Social Protection ID |
| created_at | datetime | YES | Record creation timestamp |
| updated_at | datetime | YES | Record the last update timestamp |
Address Model
Cambodia uses a specific address structure based on NCDD standards:
| Field | Type | Required | Description |
|---|---|---|---|
| province | object | YES | Information about the province |
| province.code | string | YES | Province code from NCDD standard |
| province.name | string | YES | Province's name in Khmer |
| district | object | YES | Information about the district |
| district.code | string | YES | District code from NCDD standard |
| district.name | string | YES | District name in Khmer |
| commune | object | YES | Information about the commune |
| commune.code | string | YES | Commune code from NCDD standard |
| commune.name | string | YES | Commune name in Khmer |
| village | object | YES | Information about the village |
| village.code | string | YES | Village code from NCDD standard |
| village.name | string | YES | Village name in Khmer |
| house_number | string | House number (nullable) | |
| street_number | string | Street number (nullable) | |
| location | string | Additional location details (nullable) |
Identification Model
| Field | Type | Required | Description |
|---|---|---|---|
| patient_code | string | YES | Reference to patient unique code |
| card_code | string | YES | Identification number |
| card_type | string | YES | Type of identification document |
Example
{
"patient": {
"code": "P25003877",
"surname": "សៅ",
"name": "សុវ៉ាន់",
"sex": "M",
"birthdate": "1980-05-15",
"phone": "+855 12 345 678",
"nationality": "Cambodian",
"disabilities": ["Hearing impairment"],
"occupation": "Teacher",
"marital_status": "Married",
"photos": ["https://hospital.example/photos/PT20250317001_1.jpg"],
"address": {
"province": {
"code": "12",
"name": "Phnom Penh"
},
"district": {
"code": "1201",
"name": "Chamkar Mon"
},
"commune": {
"code": "120101",
"name": "Tonle Bassac"
},
"village": {
"code": "12010101",
"name": "Phsar Deum Thkov"
},
"house_number": "45",
"street_number": "302",
"location": "Near Central Market"
},
"identifications": [
{
"patient_code": "P25003877",
"card_code": "ID123456789",
"card_type": "National ID"
}
],
"death_date": null,
"spid": "250317001",
"created_at": "2025-03-17T08:30:00.000+07:00",
"updated_at": "2025-03-17T08:30:00.000+07:00"
}
}Visit
A visit is like opening a new chapter in the patient's medical story. It represents their entire stay at the hospital - from the moment they walk in (or are brought in) until they leave.
Every visit has a beginning and an end, and everything that happens in between gets connected to this visit. Think of it as the "container" that holds all the medical care, tests, treatments, and interactions that occur during this particular trip to the hospital.
Data Model
| Field | Type | Required | Description |
|---|---|---|---|
| health_facility_code | string | YES | Unique identifier for the healthcare facility, issued by NPCA |
| patient_code | string | YES | Reference to the patient's unique code |
| code | string | YES | Unique identifier for the visit |
| admission_type | string | YES | How a patient is admitted to a healthcare facility |
| discharge_type | string | YES | How a patient is discharged from a healthcare facility |
| visit_outcome | string | YES | The patient's condition at the end of the visit |
| visit_type | string | YES | The type or purpose of a patient's visit (IPD or OPD) |
| admitted_at | datetime | YES | Date and time of admission |
| discharged_at | datetime | YES | Date and time of discharge |
| followup_at | datetime | When the patient is scheduled to return for follow-up care | |
| created_at | datetime | YES | Record creation timestamp |
| updated_at | datetime | YES | Record the last update timestamp |
Example
{
"visits": [
{
"health_facility_code": "121020",
"patient_code": "P25003877",
"code": "V420650",
"admission_type": "Walk-in",
"discharge_type": "Authorized",
"visit_outcome": "Improved",
"visit_type": "OPD",
"admitted_at": "2025-03-17T09:30:00.000+07:00",
"discharged_at": "2025-03-17T10:45:00.000+07:00",
"followup_at": "2025-03-24T09:00:00.000+07:00",
"created_at": "2025-03-17T09:30:00.000+07:00",
"updated_at": "2025-03-17T10:45:00.000+07:00"
}
]
}Triage
Triage is like the "first impression" of the patient's visit. When someone arrives at the hospital, a nurse or healthcare worker quickly assesses them to understand: How urgent is their condition? What are their main complaints? What are their basic vital measurements?
This is where the patient's story begins to unfold. The triage nurse asks "What brings you here today?" and records the patient's chief complaint - the main reason they came to the hospital.
Data Model
| Field | Type | Required | Description |
|---|---|---|---|
| patient_code | string | YES | Reference to patient's unique code |
| visit_code | string | YES | Reference to visit the unique code |
| encounter_code | string | YES | Reference to encounter a unique code (nullable) |
| code | string | YES | Unique identifier for the triage |
| chief_complaint | text | YES | Primary symptom or problem reported by the patient at the time of the visit |
| height | number | YES | Value of height of the patient in CM |
| weight | number | YES | Value of weight of the patient in KG |
| recorded_at | datetime | YES | Date and time triage was recorded |
| recorded_by | string | YES | Name of the healthcare provider who recorded the triage |
| title | string | Position of the healthcare provider |
Example
{
"triages": [{
"visit_code": "V420650",
"encounter_code": "P25003877",
"code": "TR250317",
"chief_complaint": "Periodic fever with chills for 3 days",
"height": 170,
"weight": 65,
"recorded_at": "2025-03-17T09:32:00.000+07:00",
"recorded_by": "Khun Srey Mom",
"title": "Nurse"
}]
}Vital Signs
Vital signs are like taking a snapshot of how the patient's body is functioning right now. These are the basic measurements that tell healthcare providers if the patient is stable, in distress, or needs immediate attention.
Think of vital signs as the body's "dashboard" - just like a car's dashboard shows speed, fuel level, and engine temperature, vital signs show the body's key functions: heart rate, blood pressure, temperature, breathing rate, and oxygen levels.
Normal Ranges Reference
| Vital Sign | Normal Range | Units |
|---|---|---|
| Temperature | 36.5–37.3 °C | °C |
| Pulse (Heart Rate) | 60–100 beats per minute | /mn |
| Respiratory Rate | 12–20 breaths per minute | /mn |
| Blood Pressure | Systolic: 90–120 mmHg, Diastolic: 60–80 mmHg | mmHg |
| Oxygen Saturation (SpO₂) | 95–100% | % |
| Random Glucose Rapid Test | Random: < 140 mg/dL, Fasting: 70–99 mg/dL | mg/dL |
Data Model
| Field | Type | Required | Description |
|---|---|---|---|
| encounter_code | string | YES | Reference to encounter a unique code |
| recorded_at | datetime | YES | Date and time vital signs were recorded |
| recorded_by | string | YES | Name of healthcare provider who recorded the vital signs |
| title | string | YES | Doctor or nurse |
| observations | array of objects | YES | Array of vital sign measurements |
Observation in Vital Sign
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | YES | Name of the vital sign |
| value | numeric | YES | Measured value |
Example
{
"vital_signs": [
{
"encounter_code": "E417001",
"recorded_at": "2025-03-17T09:40:00.000+07:00",
"recorded_by": "Khun Srey Mom",
"title": "Nurse",
"observations": [
{
"name": "Systolic Blood Pressure",
"value": 135
},
{
"name": "Diastolic Blood Pressure",
"value": 85
},
{
"name": "Heart Rate",
"value": 92
},
{
"name": "Temperature",
"value": 38.7
},
{
"name": "Blood Oxygen",
"value": 97
}
]
}
]
}Medical History
Medical history is like reading the previous chapters of the patient's health story. Before treating someone, doctors need to know: What health problems have they had before? What medications are they taking? Are they allergic to anything? What runs in their family?
This information helps doctors understand the full picture and make better decisions about treatment.
History Categories
| Category | What It Includes |
|---|---|
| Current Illness | What's happening now - symptoms, when they started, what makes them better or worse |
| Current Medications | What medicines the patient is taking right now |
| Past Medical History | Previous illnesses, hospitalizations, chronic conditions |
| Past Surgical History | Any surgeries the patient has had |
| Allergies | Things the patient is allergic to (foods, medicines, etc.) |
| Immunizations | Vaccinations the patient has received |
| Family History | Health problems that run in the family |
| Social History | Lifestyle factors like smoking, drinking, occupation |
Data Model
| Field | Type | Required | Description |
|---|---|---|---|
| patient_code | string | YES | Reference to the patient unique code |
| visit_code | string | YES | Reference to visit the unique code |
| encounter_code | text | YES | Reference to encounter a unique code |
| name | string | YES | Name of the condition |
| value | array of strings | YES | Array of value in string of the condition |
Example
{
"medical_histories": [
{
"patient_code": "P25003877",
"visit_code": "V420650",
"encounter_code": "E417001",
"name": "Current Illness History",
"value": [
"Patient reports high fever with chills occurring every 48 hours, accompanied by headache and joint pain. Symptoms started 3 days ago after returning from a trip to Mondulkiri province."
]
},
{
"patient_code": "P25003877",
"visit_code": "V420650",
"encounter_code": "E417001",
"name": "Allergies",
"value": [
"Penicillin",
"Shellfish"
]
},
{
"patient_code": "P25003877",
"visit_code": "V420650",
"encounter_code": "E417001",
"name": "Family History",
"value": [
"Mother with diabetes",
"Father with hypertension"
]
}
]
}Physical Examination
Physical examination is where the doctor becomes a detective, using their senses to gather clues about what's wrong with the patient. They look, listen, feel, and sometimes smell to understand what's happening inside the patient's body.
This is hands-on medicine - the doctor examines different parts of the body systematically, from head to toe, looking for signs of illness or injury.
Examination Areas
| Body System | What Doctors Check |
|---|---|
| General Appearance | How the patient looks overall - alert, distressed, well-nourished |
| Head & Neck | Eyes, ears, nose, throat, neck lymph nodes |
| Heart & Lungs | Heart sounds, breathing sounds, chest movement |
| Abdomen | Belly tenderness, organ size, bowel sounds |
| Skin | Rashes, color changes, wounds |
| Nervous System | Reflexes, coordination, mental status |
| Muscles & Joints | Strength, movement, swelling |
Data Model
| Field | Type | Required | Description |
|---|---|---|---|
| patient_code | string | YES | Reference to patient unique code |
| visit_code | string | YES | Reference to visit unique code |
| encounter_code | string | Reference to encounter unique code | |
| name | string | YES | Name for the physical assessment point |
| value | various | YES | Value of the assessment result |
| value_type | string | YES | Type of Value |
| value_unit | string | Measurement unit represent the value |
Example
{
"physical_examinations": [
{
"patient_code": "P25003877",
"visit_code": "V420650",
"encounter_code": "E417001",
"name": "General Appearance",
"value": "Patient appears ill and tired, with intermittent shivering",
"value_type": "text",
"value_unit": null
},
{
"patient_code": "P25003877",
"visit_code": "V420650",
"encounter_code": "E417001",
"name": "Skin",
"value": "Warm to touch, slightly yellow color (jaundiced), no rash visible",
"value_type": "text",
"value_unit": null
}
]
}Laboratories
Laboratory tests are like sending samples to a detective lab to uncover hidden clues about the patient's condition. Blood, urine, and other samples are analyzed to reveal information that can't be seen with the naked eye.
These tests can confirm what doctors suspect, rule out certain conditions, or sometimes reveal unexpected findings that change the entire treatment plan.
Data Model
| Field | Type | Required | Description |
|---|---|---|---|
| patient_code | string | YES | Reference to patient unique code |
| visit_code | string | YES | Reference to visit unique code |
| encounter_code | string | Reference to encounter unique code | |
| request_code | string | YES | Unique code represents the lab request |
| requested_at | datetime | YES | Date and time laboratory were requested |
| requested_by | string | YES | Name of doctor who requested the laboratory |
| title | string | Name of doctor | |
| results | array of objects | YES | Array of laboratory objects |
Result Model
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | YES | The item of lab result |
| category | string | YES | Category that lab result fall under (e.g. biochemistry, hematology) |
| value | various | YES | Measured value |
| value_type | string | YES | Type of value |
| value_unit | string | YES | Unit of measurement |
| reference_range | string | YES | Normal range for the measurement |
| interpretation | string | YES | Interpretation of the result |
| verified_at | datetime | YES | Date and time of doctor who verified |
| verified_by | string | YES | Name of healthcare provider who verified |
| recorded_at | datetime | YES | Date and time of doctor who recorded |
| recorded_by | string | YES | Name of healthcare provider who recorded |
Example
{
"laboratories": [
{
"patient_code": "P25003877",
"visit_code": "V420650",
"encounter_code": "E417001",
"request_code": "L7001",
"requested_at": "2025-03-17T10:30:00.000+07:00",
"requested_by": "Dr. Chhun Sovannarith",
"title": "Doctor",
"results": [
{
"name": "Malaria Blood Smear",
"category": "Parasitology",
"value": "Positive for P. falciparum",
"value_type": "string",
"value_unit": null,
"reference_range": "Negative",
"interpretation": "Positive - Malaria parasites found",
"verified_by": "Dr. Meas Chenda",
"recorded_by": "Lab Tech Chandaravuth"
},
{
"name": "Hemoglobin",
"category": "Hematology",
"value": 11.2,
"value_type": "float",
"value_unit": "g/dL",
"reference_range": "13.5-17.5",
"interpretation": "Low - Below normal range",
"verified_by": "Dr. Meas Chenda",
"recorded_by": "Lab Tech Chandaravuth"
}
]
}
]
}Imageries
Imageries represent medical imaging studies performed on a patient, such as X-rays, ultrasounds, CT scans, and MRIs. These diagnostic tools allow healthcare providers to visualize internal structures of the body to aid in diagnosis and treatment planning.
Data Model
| Field | Type | Required | Description |
|---|---|---|---|
| patient_code | string | YES | Reference to patient's unique code |
| visit_code | string | YES | Reference to visit the unique code |
| encounter_code | string | Reference to encounter a unique code | |
| request_code | string | YES | Unique code represents the lab request |
| requested_at | datetime | YES | Date and time of the imagery requested |
| requested_by | string | YES | Name of the healthcare provider who requested the imagery |
| title | string | YES | Name of doctor |
| results | array of objects | YES | Array of imagery objects |
Result Model
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | YES | The item of the imaging result |
| category | string | YES | Category that imaging falls under (e.g. radiology, … ) |
| images | array of strings | YES | Measured value |
| result | string | YES | Full result of the imagery |
| conclusion | string | YES | Summary of the result |
| verified_at | datetime | YES | Date and time that the sample was verified |
| verified_by | string | YES | Name of healthcare provider who verified the sample |
| recorded_at | datetime | YES | Date and time results were recorded |
| recorded_by | string | YES | Name of the healthcare provider who recorded the result |
Diagnosis
Diagnosis is the moment when all the pieces of the puzzle come together. After listening to the patient, examining them, and reviewing test results, the doctor determines what's wrong. This is the "answer" to the medical mystery.
Sometimes there's one clear diagnosis, sometimes there are multiple conditions, and sometimes doctors need to consider several possibilities (differential diagnosis).
Diagnosis Types
| Type | When It's Used |
|---|---|
| Primary | The main reason for this hospital visit |
| Secondary | Other conditions that also need attention |
| Differential | Possible diagnoses being considered |
| Admission | Initial diagnosis when patient arrives |
| Discharge | Final diagnosis when patient leaves |
Data Model
| Field | Type | Required | Description |
|---|---|---|---|
| patient_code | string | YES | Reference to patient unique code |
| visit_code | string | YES | Reference to visit unique code |
| encounter_code | string | Reference to encounter unique code | |
| diagnosis_type | string | YES | Name of diagnosis type as above table |
| diagnosis_code | string | YES | ICD-10 code for the diagnosis |
| diagnosis_name | string | YES | Name of the diagnosis |
| diagnosis_description | string | Detailed description of the diagnosis | |
| diagnosed_at | datetime | YES | Date and time of diagnosis |
| diagnosed_by | string | YES | Name of healthcare provider who made the diagnosis |
| title | string | Position of the healthcare provider (doctor or nurse) |
Example
{
"diagnoses": [
{
"patient_code": "P25003877",
"visit_code": "V420650",
"encounter_code": "E317001",
"diagnosis_type": "Primary",
"diagnosis_code": "B50.9",
"diagnosis_name": "Plasmodium falciparum malaria, unspecified",
"diagnosis_description": "Malaria caused by P. falciparum parasites, confirmed by blood smear",
"diagnosed_at": "2025-03-17T10:05:00.000+07:00",
"diagnosed_by": "Dr. Chhun Sovannarith"
}
]
}SOAP
SOAP (Subjective, Objective, Assessment, Plan) is a structured documentation method used by healthcare providers to organize clinical notes during patient encounters.
Data Model
| Field | Type | Required | Description |
|---|---|---|---|
| encounter_code | string | YES | Reference to encounter unique code |
| subjective | text | Patient's reported symptoms and feelings | |
| objective | text | Provider's objective | |
| assessment | text | Provider's assessment of the patient situation | |
| evaluation | text | Provider's summary or evaluation regarding the assessment | |
| plan | text | Plan for treatment or next steps | |
| code | string | Unique identifier for the SOAPs | |
| recorded_at | datetime | Date and time SOAPs was written | |
| recorded_by | string | Name of healthcare provider who wrote the SOAPs | |
| title | string | Position of the healthcare provider (doctor or nurse) |
Prescriptions
Updated on 2026-03-06Prescriptions are the doctor's treatment plan written down as specific medications. After diagnosing the problem, the doctor decides which medicines will help the patient get better.
Some medications are given at the hospital during treatment, while others are prescribed for the patient to take at home. Each prescription includes detailed instructions on how much to take, when to take it, and for how long.
NOTE
- Medication dispensed during hospitalization: Requires
encounter_codelinking to progress_notes, outpatient, inpatient, surgery, or emergency - Medication dispensed for home use: Requires
encounter_codeto benull
Data Model
| Field | Type | Required | Description |
|---|---|---|---|
| patient_code | string | YES | Reference to the patient's unique code |
| visit_code | string | YES | Reference to visit the unique code |
| encounter_code | string | Reference to encounter a unique code | |
| code | string | YES | Unique identifier for the prescription |
| prescribed_at | datetime | YES | Date and time the prescription was written |
| prescribed_by | string | YES | Name of healthcare provider who wrote the prescription |
| title | string | Position, whether doctor or nurse, or else | |
| medications | array of objects | YES | Array of medications is prescribed |
Medication Model
| Field | Type | Required | Description |
|---|---|---|---|
| medicine_code | string | YES | Unique identifier for the medication |
| medicine_name | string | YES | Name of the medicine |
| strength | string | Strength of the medicine | |
| method | string | YES | Method of administration |
| unit | string | YES | Unit of measurement |
| morning | numeric | Morning dose | |
| afternoon | numeric | Afternoon dose | |
| evening | numeric | Evening dose | |
| night | numeric | Night dose | |
| days | integer | YES | Duration of prescription in days |
| interval | string | Interval between doses | |
| note | text | Additional notes or instructions |
NOTE
- If no
intervalis provided,morning,afternoon,evening,nightshould be presented strengthis required if it is not presented inmedicine_name
Dispense Model
| Field | Type | Required | Description |
|---|---|---|---|
| unit | string | YES | Unit of measurement (e.g., "Boxes", "Bottles", "Tablets") |
| quantity | integer | YES | Total amount dispensed to the patient |
NOTE
Dispense: Specifies the total quantity of the drug provided to the patient. If the dispense field is not provided, the system calculates the quantity using this fallback logic:
- Quantity Formula:
(morning + afternoon + evening + night) × days - Zero Fallback: If
daysis 0 or missing, the quantity defaults to 0 - Unit: Defaults to the unit specified in the usage instructions
Example Calculation:
- Morning: 1, Afternoon: 0, Evening: 1, Night: 0
- Days: 7
- Calculated Quantity:
(1 + 0 + 1 + 0) × 7 = 14 tablets
Example
{
"prescriptions": [
{
"patient_code": "P25003877",
"visit_code": "V420650",
"encounter_code": "E417001",
"code": "RX20250317001",
"prescribed_at": "2025-03-17T10:10:00.000+07:00",
"prescribed_by": "Dr. Chhun Sovannarith",
"title": "Doctor",
"medications": [
{
"medicine_code": "MED001",
"medicine_name": "Artemether-Lumefantrine",
"strength": "20/120mg",
"method": "Oral",
"unit": "Tablet",
"morning": 4,
"afternoon": 0,
"evening": 4,
"night": 0,
"days": 3,
"interval": null,
"note": "Take with food. Complete the full course.",
"dispense": {
"quantity": 1,
"unit": "Boxes"
}
},
{
"medicine_code": "MED002",
"medicine_name": "Paracetamol",
"strength": "500mg",
"method": "Oral",
"unit": "Tablet",
"morning": 0,
"afternoon": 0,
"evening": 0,
"night": 0,
"days": 5,
"interval": "8 hours",
"note": "Take only when you have fever or pain.",
"dispense": {
"quantity": 1,
"unit": "Boxes"
}
}
]
}
]
}Invoices
Invoices are the financial record of the patient's visit - what services were provided and what they cost. This includes everything from consultation fees to laboratory tests to medications.
In Cambodia's healthcare system, many patients are covered by health insurance programs (like HEF or NSSF), so the invoice also tracks what the patient pays versus what the insurance covers.
Data Model
| Field | Type | Required | Description |
|---|---|---|---|
| patient_code | string | YES | Reference to patient unique code |
| visit_code | string | YES | Reference to visit unique code |
| encounter_code | string | Reference to encounter unique code | |
| code | string | YES | Invoice identifier |
| payment_type | string | YES | Type of payment |
| invoice_date | datetime | YES | Invoice date |
| total | number | YES | Total amount |
| created_at | datetime | YES | Creation timestamp |
| updated_at | datetime | Update timestamp | |
| cashier | string | YES | Name of cashier |
Service Model
| Field | Type | Required | Description |
|---|---|---|---|
| invoice_code | string | YES | Invoice identifier |
| service_code | string | YES | Code identify the provided service |
| service_name | string | YES | Name of the service provided |
| service_category | string | YES | Category name of the service |
| price | number | YES | Unit price |
| quantity | number | Number of service provided | |
| payment | number | Payment received from patient | |
| paid | boolean | Payment status | |
| discount_type | string | String whether in percentage or amount | |
| discount | number | Discount amount or percentage |
Medication Model
| Field | Type | Required | Description |
|---|---|---|---|
| invoice_code | string | YES | Invoice identifier |
| medicine_code | string | YES | Code identifies the provided service |
| medicine_name | string | YES | Name of the service provided |
| quantity | number | YES | Number of medicines provided |
| price | number | YES | Unit price |
| payment | number | Payment received from patient | |
| paid | boolean | Payment status | |
| discount_type | string | String whether in percentage or amount | |
| discount | number | Discount amount or percentage |
Example
{
"invoices": [
{
"patient_code": "P25003877",
"visit_code": "V420650",
"encounter_code": "E417001",
"code": "INV20250317001",
"payment_type": "HEF",
"invoice_date": "2025-03-17T11:00:00.000+07:00",
"total": 45000,
"cashier": "Sok Kunthea",
"services": [
{
"service_code": "SRV001",
"service_name": "Blood Smear for Malaria",
"service_category": "Laboratory Test",
"price": 15000,
"payment": 0,
"paid": false,
"discount": 15000
}
],
"medications": [
{
"medicine_code": "MED001",
"medicine_name": "Artemether-Lumefantrine 20/120mg",
"quantity": 24,
"unit": "Tablet",
"price": 1250,
"payment": 0,
"paid": false,
"discount": 30000
}
]
}
]
}Referrals
Sometimes a patient needs care that the current hospital can't provide - maybe they need specialized treatment, advanced equipment, or a higher level of care. When this happens, the patient is "referred" to another healthcare facility.
Referrals are like passing the patient's story to the next chapter, but at a different hospital. All the information about their condition, treatment so far, and why they need to be transferred is carefully documented.
Data Model
| Field | Type | Description |
|---|---|---|
| referred_from | object | Information about the referring facility |
| referred_to | object | Information about the receiving facility |
Detail Model
| Field | Type | Required | Description |
|---|---|---|---|
| code | string | YES | Unique identifier for the referral |
| referral_number | string | YES | Unique reference number for the referral |
| transportation | string | YES | Mode of transportation |
| reason | string | YES | Reason for referral |
| has_called | boolean | Whether the receiving facility was called in advance | |
| caretaker_name | string | Name of the person accompanying the patient | |
| caretaker_phone | string | Contact number for the caretaker | |
| referred_by | string | Name of the referring provider | |
| referred_by_phone | string | Contact number for the referring provider | |
| referred_at | datetime | Date and time of referral | |
| received_by | string | Name of the receiving provider | |
| received_by_phone | string | Contact number for the receiving provider | |
| received_at | datetime | Date and time the patient was received | |
| medications | string | Medications that the patient is taking | |
| health_facility | object | Receiving facility / referring facility |
Health Facility Model
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | YES | Health facility's name |
| code | string | YES | Health facility's code |
| label | string | Health facility's label | |
| type | string | Health facility's type |
Example
{
"referrals": {
"referred_from": null,
"referred_to": {
"code": "REF20250317001",
"referral_number": "HCPP/REF/2025/317",
"transportation": "Ambulance",
"health_facility": {
"name": "Calmette Hospital",
"code": "121020",
"label": "National Referral Hospital",
"type": "Tertiary"
},
"reason": "Severe malaria with complications requiring intensive care and specialized treatment not available at this facility",
"has_called": true,
"caretaker_name": "Sok Channary (wife)",
"caretaker_phone": "012345678",
"referred_by": "Dr. Chhun Sovannarith",
"referred_at": "2025-03-17T11:30:00.000+07:00",
"received_by": "Dr. Pich Vothy",
"received_at": "2025-03-17T12:15:00.000+07:00",
"medications": "Currently on Artemether-Lumefantrine (1 dose given), IV fluids started"
}
}
}Summary
Each component tells part of the patient's healthcare story. When connected together through their unique codes, they create a complete picture of the patient's journey from arrival to discharge, including all the care, tests, treatments, and outcomes along the way.
Consultations
A clinical encounter where a patient interacts with a healthcare provider for assessment, advice, or diagnosis, without necessarily receiving a prescription or procedure.
Data Model
| Field | Type | Required | Description |
|---|---|---|---|
| consultations | array of strings | NO | Assesses, advises, and guides a patient regarding their health condition. |
Example
{
"consultations": [ "Review of normal laboratory results and reassurance.", "Education on benign nature of tension headaches." ]
}