Skip to content

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

FieldTypeDescription
codestringUnique identifier for this patient in the system
surnamestringPatient's family name
namestringPatient's given name
sexstringPatient's biological sex (M/F)
birthdatedatePatient's date of birth
phonestringPatient's contact number
nationalitystringPatient's nationality
disabilitiesarray of stringsAny disabilities the patient has
occupationstringPatient's job or profession
marital_statusstringPatient's marital status
photosarray of stringsURLs to patient photos (for identification)
addressobjectWhere the patient lives (detailed address)
identificationsarray of objectsID cards, passports, etc.
death_datedatetimeDate of death (if applicable)
spidstringSocial Protection ID (for benefit programs)
created_atdatetimeWhen this record was created
updated_atdatetimeWhen this record was last updated

Address Model

Cambodia uses a specific address structure based on NCDD standards:

FieldTypeDescription
provinceobjectProvince information (code and name)
districtobjectDistrict information (code and name)
communeobjectCommune information (code and name)
villageobjectVillage information (code and name)
house_numberstringHouse number
street_numberstringStreet number
locationstringAdditional location details

Example

json
{  
  "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

FieldTypeDescription
health_facility_codestringWhich hospital or clinic this visit is at
patient_codestringWhich patient this visit belongs to
codestringUnique identifier for this specific visit
admission_typestringHow the patient arrived (Walk-in, Appointment, Referral)
discharge_typestringHow the patient left (Authorized, Refer Out, etc.)
visit_outcomestringPatient's condition when leaving (Improved, Recovered, etc.)
visit_typestringType of care (IPD for inpatient, OPD for outpatient)
admitted_atdatetimeWhen the patient arrived
discharged_atdatetimeWhen the patient left
followup_atdatetimeWhen they should return for follow-up
created_atdatetimeWhen this record was created
updated_atdatetimeWhen this record was last updated

Example

json
{  
  "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

FieldTypeDescription
patient_codestringWhich patient this triage belongs to
visit_codestringWhich visit this triage is part of
encounter_codestringReference to encounter (usually itself)
codestringUnique identifier for this triage
chief_complainttextPatient's main complaint in their own words
heightnumberPatient's height in centimeters
weightnumberPatient's weight in kilograms
recorded_atdatetimeWhen this triage was done
recorded_bystringName of the healthcare provider
titlestringProvider's role (Doctor, Nurse, etc.)

Example

json
{  
  "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 SignNormal RangeUnits
Temperature36.5-37.3 °C°C
Heart Rate60-100 beats per minute/min
Respiratory Rate12-20 breaths per minute/min
Blood PressureSystolic: 90-120, Diastolic: 60-80mmHg
Oxygen Saturation95-100%%
Blood GlucoseFasting: 70-99, Random: < 140mg/dL

Data Model

FieldTypeDescription
encounter_codestringWhich encounter these vital signs were taken during
recorded_atdatetimeWhen these measurements were taken
recorded_bystringWho took these measurements
titlestringTheir role (Doctor, Nurse, etc.)
observationsarray of objectsThe actual vital sign measurements

Example

json
{  
  "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

CategoryWhat It Includes
Current IllnessWhat's happening now - symptoms, when they started, what makes them better or worse
Current MedicationsWhat medicines the patient is taking right now
Past Medical HistoryPrevious illnesses, hospitalizations, chronic conditions
Past Surgical HistoryAny surgeries the patient has had
AllergiesThings the patient is allergic to (foods, medicines, etc.)
ImmunizationsVaccinations the patient has received
Family HistoryHealth problems that run in the family
Social HistoryLifestyle factors like smoking, drinking, occupation

Data Model

FieldTypeDescription
patient_codestringWhich patient this history belongs to
visit_codestringWhich visit this was recorded during
encounter_codestringWhich encounter this was discussed in
namestringCategory of history (from table above)
valuearray of stringsList of relevant information for this category

Example

json
{  
  "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 SystemWhat Doctors Check
General AppearanceHow the patient looks overall - alert, distressed, well-nourished
Head & NeckEyes, ears, nose, throat, neck lymph nodes
Heart & LungsHeart sounds, breathing sounds, chest movement
AbdomenBelly tenderness, organ size, bowel sounds
SkinRashes, color changes, wounds
Nervous SystemReflexes, coordination, mental status
Muscles & JointsStrength, movement, swelling

Data Model

FieldTypeDescription
patient_codestringWhich patient was examined
visit_codestringWhich visit this examination was part of
encounter_codestringWhich encounter this examination occurred during
namestringWhich body system or area was examined
valuevariousWhat the doctor found
value_typestringType of finding (text, complex data, etc.)
value_unitstringUnit of measurement (if applicable)

Example

json
{  
  "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

FieldTypeDescription
patient_codestringWhich patient these tests belong to
visit_codestringWhich visit these tests were ordered during
encounter_codestringWhich encounter prompted these tests
request_codestringUnique identifier for this lab request
requested_atdatetimeWhen the tests were ordered
requested_bystringWhich doctor ordered the tests
titlestringDoctor's role
resultsarray of objectsThe test results

Result Model

FieldTypeDescription
namestringName of the test
categorystringType of test (Hematology, Chemistry, etc.)
valuevariousThe test result
value_typestringType of result (number, text, etc.)
value_unitstringUnit of measurement
reference_rangestringNormal range for this test
interpretationstringIs it normal, high, low?
verified_bystringLab technician who verified the result
recorded_bystringWho entered the result

Example

json
{  
  "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"  
        }  
      ]  
    }  
  ]  
}

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

TypeWhen It's Used
PrimaryThe main reason for this hospital visit
SecondaryOther conditions that also need attention
DifferentialPossible diagnoses being considered
AdmissionInitial diagnosis when patient arrives
DischargeFinal diagnosis when patient leaves

Data Model

FieldTypeDescription
patient_codestringWhich patient this diagnosis belongs to
visit_codestringWhich visit this diagnosis was made during
encounter_codestringWhich encounter this diagnosis was determined in
diagnosis_typestringType of diagnosis (Primary, Secondary, etc.)
diagnosis_codestringICD-10 medical code for this condition
diagnosis_namestringName of the condition
diagnosis_descriptionstringMore detailed description
diagnosed_atdatetimeWhen this diagnosis was made
diagnosed_bystringWhich doctor made this diagnosis

Example

json
{  
  "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"  
    }  
  ]  
}

Prescriptions

Updated on 2026-03-06

Prescriptions 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.

Data Model

FieldTypeDescription
patient_codestringWhich patient this prescription is for
visit_codestringWhich visit this prescription was written during
encounter_codestringWhich encounter prompted this prescription
codestringUnique identifier for this prescription
prescribed_atdatetimeWhen this prescription was written
prescribed_bystringWhich doctor wrote this prescription
titlestringDoctor's role
medicationsarray of objectsList of prescribed medications

Medication Model

FieldTypeDescription
medicine_codestringUnique identifier for this medication
medicine_namestringName of the medicine
strengthstringHow strong the medicine is (e.g., "500mg")
formstringWhat form it comes in (tablet, syrup, injection)
methodstringHow to take it (oral, injection, topical)
unitstringUnit of measurement
morningnumericHow many to take in the morning
afternoonnumericHow many to take in the afternoon
eveningnumericHow many to take in the evening
nightnumericHow many to take at night
daysintegerHow many days to take this medicine
intervalstringHow often to take it (e.g., "every 8 hours")
notetextSpecial instructions
dispenseobjectOptional Total quantity dispensed to the patient

Dispense Field

The dispense object contains:

  • quantity (number): Total amount dispensed
  • unit (string): Unit of measurement (e.g., "Boxes", "Bottles")

If not provided, the system calculates quantity as: (morning + afternoon + evening + night) × days

Example

json
{
  "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

FieldTypeDescription
patient_codestringWhich patient this invoice belongs to
visit_codestringWhich visit this invoice covers
encounter_codestringWhich encounter these charges are from
codestringUnique identifier for this invoice
payment_typestringHow this will be paid (HEF, NSSF, Cash, etc.)
invoice_datedatetimeWhen this invoice was created
totalnumberTotal amount of all charges
cashierstringWho processed this invoice
servicesarray of objectsMedical services provided
medicationsarray of objectsMedications dispensed

Example

json
{  
  "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

FieldTypeDescription
referred_fromobjectInformation about where the patient came from
referred_toobjectInformation about where the patient is going

Referral Details

FieldTypeDescription
codestringUnique identifier for this referral
referral_numberstringOfficial referral document number
transportationstringHow the patient will travel (Ambulance, Family car, etc.)
reasonstringWhy the patient needs to be referred
has_calledbooleanWhether the receiving hospital was contacted in advance
caretaker_namestringPerson accompanying the patient
caretaker_phonestringContact number for the caretaker
referred_bystringDoctor making the referral
referred_atdatetimeWhen the referral was made
received_bystringDoctor receiving the patient
received_atdatetimeWhen the patient arrived at the new hospital
medicationsstringCurrent medications the patient is taking
health_facilityobjectDetails about the receiving hospital

Example

json
{  
  "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.