Skip to content

Changelog

Version 1.2 (Current)

Production 2026-03-24

Version Status

This version is currently in development and features may change before release.

Data Quality Enhancements

High Impact Changes

The following changes are marked as high impact and may require significant updates to your EMR integration.

New Features

Surgeries - Required fields (high impact):

  • theater_name
  • service_type
  • started_at
  • ended_at
  • reason
  • procedure_notes
  • surgeon_name

Surgeries - New attributes:

  • pre_operative_diagnosis - The clinical diagnosis made BEFORE surgery, based on symptoms, physical examination, and investigations.
  • post_operative_diagnosis - The final diagnosis confirmed AFTER the surgery, based on what the surgeon actually found during the operation.
  • surgeries.details.position - how the patient lies during surgery
surgeries Example Structure
json
 "surgeries": [
        {
          "visit_code": "00V00332",
          "encounter_code": "00E00333",
          "code": "00C00322",
          "symptoms": ["Swelling of the abdomen", "Red skin"], //optional
          "theater_name": "Operating Theater 2",
          "service_type": "Laparoscopic Cholecystectomy",
          "started_at": "2026-01-17T10:45:00.000+07:00",
          "ended_at": "2026-01-17T13:15:00.000+07:00",
          "reason": "Symptomatic gallstones with recurrent biliary colic",
          "anesthesia_type": "General Endotracheal",
          "procedure_notes": "Patient positioned supine. Pneumoperitoneum established with Veress needle. Four ports were placed. Gallbladder dissected from liver bed with hook cautery. Cystic duct and artery identified, clipped and divided. Gallbladder removed through umbilical port. Hemostasis confirmed. No bile leak. Ports removed under direct visualization. Wounds closed with 3-0 Vicryl and 4-0 Monocryl. Patient tolerated procedure well.",
          "complications": [
            "Mild bleeding from liver bed, controlled with electrocautery"
          ],
          "specimens": [
            "Gallbladder with multiple stones",
            "Cystic fluid sample"
          ],
          "pre_operative_diagnosis": "Ancienne Sign nail du fémur gauche avec plaie infecté (3ans)",
          "post_operative_diagnosis": "Ancienne Sign nail du fémur gauche avec plaie infecté (3ans)",
          "details": {
            "position": "Décubitus dorsale"
          },

          "blood_loss": "5cl",
          "surgeon_name": "Dr. Sok Chanmaly",
          "anesthetist_name": "Dr. Chea Sokunthea",
          "assistant_names": ["Dr. Chhan Sokun", "Nurse Van Chea"],
          "created_at": "2026-01-17T10:45:00.000+07:00",
          "updated_at": "2026-01-17T13:15:00.000+07:00"
        }
      ]

Version 1.1

New Features

Data Integrity Improvements

Introduced Submission Block Rules to enhance data integrity:

RuleDescription
Duplication SubmissionPrevents patient admission at the same time with different codes
Abnormal SubmissionBlocks attempts to update previous submission data

Data Quality Enhancements

High Impact Changes

The following changes are marked as high impact and may require significant updates to your EMR integration.

Triage - Required fields (high impact):

  • Height
  • Weight

Vital Signs - Required fields (high impact):

  • Systolic Blood Pressure
  • Diastolic Blood Pressure
  • Heart Rate
  • Respiratory Rate
  • Temperature
  • Blood Oxygen

SOAP Notes - New attributes:

  • code - Unique identifier
  • recorded_at - Timestamp
  • recorded_by - Healthcare provider name
  • title - Provider title/role
SOAP Example Structure
json
"SOAPS": [
  {
    "encounter_code": "EN123",
    "code": "EN123-SP1",
    "subjective": "Descriptive Subject",
    "objective": "Descriptive Object",
    "assessment": "Descriptive assessment",
    "plan": "Treatment plan details",
    "evaluation": "Evaluation could be diagnosis or more",
    "recorded_at": "2026-01-01T00:00:00+07:00",
    "recorded_by": "John Doe",
    "title": "Doctor"
  }
]

Prescriptions - Required fields (high impact):

  • medication.days
  • medication.code - Refer to drug code, must be unique (no duplicate drug codes)

Invoice - Required fields:

  • payment_type - use NPCA standard for payment type, can be code or name

Clinical Encounters (Progress Notes, Outpatient, Inpatient, Emergency, Surgery):

  • Added optional symptoms array property
  • Added optional is_new boolean field to distinguish new cases from follow-ups

Changed Features

Migration Guide

These changes may require updates to your existing integration. See migration notes below.

Triage

  • Must have only one item per visit
  • If patient is triaged multiple times during wait, use the latest one before admission or consultation

Vital Signs

  • Must link to another encounter:
    • At least one link to a Triage encounter (triage.code = vital_sign.encounter_code)
    • Remaining vital signs must link to Progress Notes encounters (progress_notes.code = vital_signs.encounter_code)

Migration Note

If your EMR records daily vital signs but submits them as Triage data, convert those to Progress Notes (except the first one). Progress Notes don't require chief_complaint, height, or weight fields, making this conversion easier.

Progress Notes

  • For IPD visits:
    • Must have at least one Progress Note
    • Should have at least one SOAPS reference linked to the Progress Note

SOAPS Notes

  • OPD visits: Should have 1 SOAPS per encounter (soap.encounter_code links to outpatient.code)
  • IPD visits: Should have multiple SOAPS based on length of stay (soap.encounter_code links to inpatient.code or progress_note.code)

Referrals

  • Introduced health_facility object structure:
Referrals Structure Example
json
"referrals": {
  "referred_from": null,
  "referred_to": {
    "code": "",
    "referral_number": "",
    "transportation": "",
    "health_facility": {
      "name": "",        // required
      "code": "",        // required
      "label": "string", // optional
      "type": "string"   // optional
    },
    "reason": "",
    "has_called": true,
    "caretaker_name": "",
    "caretaker_phone": "",
    "referred_by": "",
    "referred_by_phone": null,
    "referred_at": null,
    "received_by": null,
    "received_at": null,
    "medications": ""
  }
}

Bug Fixes

Fixed Issues

  • Fixed issue where vital sign notes could not be created under core encounters
  • Resolved duplicate SOAP notes creation under IPD visits
  • Corrected edge cases in encounter transitions that bypassed validation rules

Deprecated

Deprecated Features

The following features are deprecated and will be removed in future versions:

  • Allowing multiple triage notes
  • Allowing multiple SOAP notes without strict visit-type validation

Important Clarifications

Prescriptions

Prescriptions serve as containers for all medications with the following characteristics:

  • Medication dispenses during hospitalization: Require encounter_code linking to progress_notes, out.patient, inpatient, surgery, or emergency
  • Medication dispensed for home use: Require encounter_code to be null
  • Validation: Medications submitted without encounter_code are treated as home medications and may be rejected
Diagnosis

The standard supports detailed diagnosis tracking per encounter:

  • Requirements:
    • At least 1 diagnosis_in required
    • At least 1 diagnosis_out required (type "primary" treated as diagnosis_out)
  • Behavior:
    • Diagnosis with encounter_code saved as submitted
    • Single diagnosis submissions saved as both diagnosis_in and diagnosis_out