E-prescription via FHIR for Vietnam

Paper prescriptions with handwritten signatures are giving way to FHIR-based electronic prescriptions with legally valid digital signatures. The physician prescribes inside the EMR, signs digitally, pushes the record through the electronic medical record system and the Personal Health Record on VNeID — Vietnam's national digital identification app — and the pharmacy then authenticates and dispenses the medication. Every event in the chain is logged, auditable, and interoperable across healthcare facilities.

This page is written for hospital CIOs designing an e-prescription module, vendor development teams building pharmacy software, pharmacists running pharmacy chains, and legal teams who need to reconcile the latest regulatory framework through 2026.

TL;DR

  • Three core resources: MedicationRequest models the prescription, MedicationDispense records each dispensing event, and Medication describes the drug entry in the catalog.
  • Standard workflow: the physician prescribes inside the EMR, signs digitally, syncs to the Personal Health Record on VNeID, the patient presents a QR code at the pharmacy, and the pharmacist authenticates before dispensing.
  • The legal framework for prescribing chemical drugs and biologicals (outpatient) is governed by Circular 26/2025/TT-BYT; prescribing of traditional Vietnamese medicine (TVM/YHCT) is governed by Circular 55/2025/TT-BYT; social health insurance (BHYT) payment for traditional medicines is covered by Circular 27/2025/TT-BYT.
  • The EMR is the legal container for the prescription — Circular 13/2025/TT-BYT requires legally valid digital signatures, while Decree 137/2024/NĐ-CP provides the general electronic transactions framework.
  • Drug coding is layered: a Vietnam-internal CodeSystem, the WHO ATC classification, and UCUM units of measure; the national catalog standard is still being finalized.

1. The paper prescription problem

Vietnam's healthcare system still circulates a large volume of paper prescriptions. Physicians either handwrite or print them from a local application, sign by hand, stamp, and the patient carries the paper to a pharmacy and hands it to the pharmacist. This approach generates three distinct categories of risk: clinical safety, fraud, and lost analytical capability.

On clinical safety, handwriting is easy to misread — especially for dosage, route of administration, and lookalike brand names. When the pharmacy cannot see the patient's current medication history, interaction alerts depend solely on the pharmacist's memory. Patients treated at multiple facilities typically carry around scattered old prescriptions, making it hard to reconcile their full medication history.

On fraud, paper prescriptions can be forged, altered, or copied at will. Tightly controlled drug classes — opioids, latest-generation antibiotics, psychotropics — leave no audit trail when paper is used. Vietnam Social Security (BHYT) routinely struggles to reconcile outpatient prescriptions against social health insurance reimbursement records.

On analytics, prescription data sits in local data silos, is not standardized, and is nearly impossible to extract for purposes such as antimicrobial resistance surveillance, chronic disease adherence monitoring, or pharmacovigilance. FHIR e-prescription resolves all three problems with a standard data model, digital signatures, and API-based interoperability.

2. Legal framework 2025-2026

E-prescription in Vietnam is regulated simultaneously by three groups of legal instruments: prescribing rules, electronic medical records, and electronic transactions. You need to read all three groups to see the complete picture.

Instrument Effective date Scope of application for e-prescription
Circular 26/2025/TT-BYT Issued 30/06/2025, effective 01/07/2025 Regulates the prescribing of chemical drugs and biologicals in outpatient care — the primary basis for chemical-drug MedicationRequest.
Circular 55/2025/TT-BYT Effective 01/03/2026 Regulates the prescribing of traditional medicines and herbal materials — the legal basis for traditional Vietnamese medicine MedicationRequest.
Circular 27/2025/TT-BYT Issued 01/07/2025, effective 01/09/2025 Catalog and BHYT reimbursement rules for herbal medicines and traditional drugs — tied to Coverage and Claim, not to prescribing rules.
Circular 13/2025/TT-BYT Effective 21/07/2025 Electronic medical records — requires legally valid digital signatures, audit trail, and traceability; the prescription is one component of the EMR.
Decree 137/2024/NĐ-CP Effective 23/10/2024 Electronic transactions framework for state agencies — the general legal foundation for digital signatures and authentication.
Decision 1332/QĐ-BYT In rollout Personal Health Record integrated into the VNeID app — the patient-facing channel for displaying prescriptions.

Key distinction between Circular 27/2025 and Circular 55/2025

Circular 27/2025/TT-BYT belongs to the BHYT instrument family — it specifies the catalog and reimbursement levels for herbal medicines and traditional drugs when the BHYT fund pays. It does not regulate the prescribing process. The legal basis for prescribing traditional Vietnamese medicine is Circular 55/2025/TT-BYT, which takes effect on 01/03/2026. When modeling a MedicationRequest for a traditional medicine, the primary citation is Circular 55, while Circular 27 applies only to Claim and Coverage.

Decree 137/2024/NĐ-CP supplies the general legal framework for electronic transactions and digital signatures within state agencies; it does not mandate a specific signature container format such as PKCS#7 or JOSE for prescriptions. Choosing the digital-signature format is a decision left to each facility's implementation profile, aligned with the digital-certificate ecosystem and PKI infrastructure already in use at the hospital.

3. FHIR e-prescription architecture

The reference model splits the e-prescription chain across four system domains: the prescribing facility's EMR, the hospital's FHIR server, the patient-facing channel, and the dispensing pharmacy's system. Each domain has its own trust boundary and exchanges data over digitally signed end-to-end protocols.

[Physician in EMR]
   ↓ creates MedicationRequest + digital signature
[Hospital FHIR Server]
   ↓ syncs through the integration gateway
[Personal Health Record on VNeID]
   ↓ patient views in the app
[Patient arrives at pharmacy]
   ↓ presents prescription identifier
[Pharmacy system — FHIR client]
   ↓ verifies signature, reads MedicationRequest
[Dispenses medication + creates MedicationDispense]
   ↓ writes back to FHIR server
[Physician sees the prescription has been dispensed in the EMR]

The most important property is the immutability of MedicationRequest after it has been signed. Any subsequent change — cancellation, dose change, drug switch — is implemented as a new MedicationRequest with a priorPrescription link back to the old one; the original is never overwritten. This rule satisfies the audit-trail requirement of Circular 13/2025/TT-BYT and aligns with FHIR's immutable-record model.

4. The three core resources

4.1. MedicationRequest — the prescription

MedicationRequest is the legal representation of the prescription. The status field takes values active, completed, stopped, or cancelled; the intent field distinguishes a formal order (order) from an internal proposal (proposal) or a treatment plan (plan). The requester field references the prescribing physician, constrained to a Practitioner with a valid practice license.

{
  "resourceType": "MedicationRequest",
  "id": "mr-amlodipin-001",
  "status": "active",
  "intent": "order",
  "subject": { "reference": "Patient/lan-001" },
  "encounter": { "reference": "Encounter/enc-001" },
  "authoredOn": "2026-04-30T11:00:00+07:00",
  "requester": { "reference": "Practitioner/bs-001" },
  "medicationCodeableConcept": {
    "coding": [
      {
        "system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-medication",
        "code": "AML005",
        "display": "Amlodipin 5mg viên nén"
      },
      {
        "system": "http://www.whocc.no/atc",
        "code": "C08CA01",
        "display": "Amlodipine"
      }
    ]
  },
  "dosageInstruction": [
    {
      "text": "Uống 1 viên sau bữa sáng",
      "timing": {
        "repeat": { "frequency": 1, "period": 1, "periodUnit": "d" }
      },
      "route": {
        "coding": [
          {
            "system": "http://snomed.info/sct",
            "code": "26643006",
            "display": "Oral route"
          }
        ]
      },
      "doseAndRate": [
        {
          "doseQuantity": {
            "value": 5,
            "unit": "mg",
            "system": "http://unitsofmeasure.org",
            "code": "mg"
          }
        }
      ]
    }
  ],
  "dispenseRequest": {
    "validityPeriod": {
      "start": "2026-04-30",
      "end": "2026-05-30"
    },
    "numberOfRepeatsAllowed": 0,
    "quantity": {
      "value": 30,
      "unit": "viên",
      "system": "http://unitsofmeasure.org",
      "code": "{tbl}"
    }
  },
  "substitution": {
    "allowedBoolean": true
  }
}

The medicationCodeableConcept block carries multiple parallel coding entries: a Vietnam-internal code and a WHO ATC code. The dosageInstruction block structures the dose — timing for the schedule, route for the route of administration coded against SNOMED CT, and doseQuantity for the per-dose amount. The dispenseRequest block bounds the validity period and the number of refills allowed.

4.2. MedicationDispense — the dispensing event

When the pharmacy dispenses the medication, the system creates a MedicationDispense that points back to MedicationRequest through authorizingPrescription. This resource records the actual dispensing event: who dispensed, where, how much, and when. It is the basis for matching the prescription against the BHYT reimbursement record and for detecting double-dispensing.

{
  "resourceType": "MedicationDispense",
  "id": "md-amlodipin-001",
  "status": "completed",
  "subject": { "reference": "Patient/lan-001" },
  "performer": [
    { "actor": { "reference": "Practitioner/pharm-001" } }
  ],
  "location": { "reference": "Location/pharm-h-001" },
  "authorizingPrescription": [
    { "reference": "MedicationRequest/mr-amlodipin-001" }
  ],
  "medicationCodeableConcept": {
    "coding": [
      {
        "system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-medication",
        "code": "AML005",
        "display": "Amlodipin 5mg viên nén"
      }
    ]
  },
  "quantity": {
    "value": 30,
    "unit": "viên",
    "system": "http://unitsofmeasure.org",
    "code": "{tbl}"
  },
  "whenHandedOver": "2026-04-30T15:30:00+07:00",
  "dosageInstruction": [
    {
      "text": "Uống 1 viên sau bữa sáng"
    }
  ]
}

4.3. Medication — the drug catalog entry

Medication describes a drug in the catalog: code, dosage form, ingredients, and strength. A single Medication is referenced by many MedicationRequest instances. In production data, Medication is typically synchronized periodically from the hospital's drug catalog or from the BHYT catalog.

{
  "resourceType": "Medication",
  "id": "med-amlodipin-5mg",
  "code": {
    "coding": [
      {
        "system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-medication",
        "code": "AML005",
        "display": "Amlodipin 5mg viên nén"
      },
      {
        "system": "http://www.whocc.no/atc",
        "code": "C08CA01",
        "display": "Amlodipine"
      }
    ]
  },
  "form": {
    "coding": [
      {
        "system": "http://snomed.info/sct",
        "code": "385055001",
        "display": "Tablet"
      }
    ]
  },
  "ingredient": [
    {
      "itemCodeableConcept": {
        "coding": [
          {
            "system": "http://www.whocc.no/atc",
            "code": "C08CA01",
            "display": "Amlodipine besilate"
          }
        ]
      },
      "strength": {
        "numerator": {
          "value": 5,
          "unit": "mg",
          "system": "http://unitsofmeasure.org",
          "code": "mg"
        },
        "denominator": {
          "value": 1,
          "unit": "viên",
          "system": "http://unitsofmeasure.org",
          "code": "{tbl}"
        }
      }
    }
  ]
}

5. Drug codes and identifier sets

The drug-coding system in Vietnamese FHIR is layered into three parallel tiers. The first tier is the marketing authorization number issued by the Drug Administration of Vietnam when a drug is licensed for sale on the market. The middle tier is the BHYT catalogs that accompany payment circulars — for example, the essential drugs list and the traditional medicines list per Circular 27/2025/TT-BYT. The outer tier is the international WHO ATC code, used for pharmacological classification and cross-border reconciliation.

The Vietnamese Pharmacopoeia is a set of quality standards for drugs — it specifies purity, test methods, and dosage-form requirements — not a list of drugs that may be prescribed. When writing technical documentation, draw the lines clearly: the Drug Administration's authorization number identifies the product, the BHYT catalog drives reimbursement, ATC drives analytics, and the Pharmacopoeia drives quality references.

The CodeSystem expected in the VN Core IG uses the canonical URI http://fhir.hl7.org.vn/core/CodeSystem/vn-medication. As of this writing, that CodeSystem does not have a finalized public spec and is being calibrated against the interoperable drug-code catalog shared between the Ministry of Health and Vietnam Social Security. Early-adopter projects should keep the reference open and stay ready to update once the formal spec is published.

ATC uses the full URI http://www.whocc.no/atc. Units of measure follow UCUM at http://unitsofmeasure.org. RxNorm has no Vietnamese translation and is suitable only as a reference mapping when exchanging data with United States systems.

6. Full end-to-end workflow

A complete e-prescription cycle breaks down into ten steps. Each step has its own inputs, outputs, and the events that need to be recorded:

  1. The physician prescribes inside the EMR interface — selects the patient, picks the drug from the local catalog, enters dose and route.
  2. The system runs pre-confirmation checks — reconciles against recorded allergies, screens for interactions with the active medication list, and matches contraindications against current diagnoses.
  3. The physician confirms the prescription — the system creates a draft MedicationRequest with status = "draft".
  4. The physician signs digitally — using a personal digital certificate registered with the facility; the signature container is a decision of the hospital's implementation profile.
  5. The record is written to the FHIR serverstatus moves to active, and Provenance captures who signed and when.
  6. The record is pushed to the Personal Health Record on VNeID through the integration gateway operated by the Ministry of Health under Decision 1332/QĐ-BYT.
  7. The patient arrives at the pharmacy and presents the prescription identifier — either as a QR code in the app or as a printed prescription number.
  8. The pharmacy system authenticates and reads the prescription — calls the FHIR API, validates the signature, and verifies validity and the number of times it has been dispensed.
  9. Dispenses the medication and records the event — creates a MedicationDispense with status = "completed" and a back-link to the original prescription.
  10. Syncs back to the EMR and BHYT — the physician sees that the prescription has been dispensed, and the BHYT reimbursement file has the necessary supporting evidence.

Each step generates a corresponding AuditEvent, satisfying the audit-trail requirements of Circular 13/2025/TT-BYT and the Personal Data Protection Law (Law 91/2025/QH15).

7. Integration with the Personal Health Record on VNeID

Decision 1332/QĐ-BYT defines the content and integration scope of the Personal Health Record on VNeID. It specifies what types of data are displayed to the patient — clinical visit summaries, lab results, prescriptions — while also setting the principle that the data is created, signed, and synchronized by the originating healthcare facility.

Reference model — pending official spec

As of May 2026, the Ministry of Health and the Ministry of Public Security have not published a public API for pharmacies to look up prescriptions through VNeID. The descriptions of the /rx/ endpoints, QR code format, and JWT authentication procedures in this document are a reference model intended to support internal system design; implementing facilities must reconcile with the official spec when it is published and remain ready to adapt.

The reference model that several hospitals are jointly building today assumes the QR code carries the prescription identifier together with a short-lived token. When the pharmacy scans the QR code, its system calls the FHIR endpoint of the prescribing hospital, validates the digital signature on the MedicationRequest, and verifies that the prescription is still valid, has not been canceled, and has not been dispensed up to the allowed quantity. The full flow should be standardized through an implementation guide led by the Ministry of Health.

8. Traditional Vietnamese medicine prescriptions

Traditional Vietnamese medicine (TVM/YHCT) has three peculiarities that do not exist in chemical-drug prescribing: a formula typically combines several herbs, each at its own weight; herbs are usually dispensed by the "thang" (a single dose unit) rather than by tablet; and the diagnostic and therapeutic vocabulary has its own coding system. FHIR can model all three peculiarities through the Medication.ingredient list and Medication.amount in units of "thang".

{
  "resourceType": "Medication",
  "id": "med-bo-trung-ich-khi-thang",
  "code": {
    "coding": [
      {
        "system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-yhct-prescription",
        "code": "BTIKT-001",
        "display": "Bổ trung ích khí thang"
      }
    ]
  },
  "ingredient": [
    {
      "itemCodeableConcept": {
        "coding": [
          {
            "system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-yhct-herb",
            "code": "DD001",
            "display": "Đảng sâm"
          }
        ]
      },
      "strength": {
        "numerator": { "value": 16, "unit": "g", "system": "http://unitsofmeasure.org", "code": "g" },
        "denominator": { "value": 1, "unit": "thang", "system": "http://unitsofmeasure.org", "code": "1" }
      }
    },
    {
      "itemCodeableConcept": {
        "coding": [
          {
            "system": "http://fhir.hl7.org.vn/core/CodeSystem/vn-yhct-herb",
            "code": "DD002",
            "display": "Hoàng kỳ"
          }
        ]
      },
      "strength": {
        "numerator": { "value": 20, "unit": "g", "system": "http://unitsofmeasure.org", "code": "g" },
        "denominator": { "value": 1, "unit": "thang", "system": "http://unitsofmeasure.org", "code": "1" }
      }
    }
  ]
}

The legal basis for prescribing traditional Vietnamese medicine is Circular 55/2025/TT-BYT, effective 01/03/2026. It governs the presentation of formulas, the diagnostic requirements framed in TVM terms, and the practitioner's scope of practice. When BHYT pays, the traditional medicine prescription is also bound by Circular 27/2025/TT-BYT — the BHYT catalog of traditional drugs, payment caps, and prescribing conditions per disease category.

The shared TVM terminology codes have been issued by the Ministry of Health in two waves: Decision 2552/QĐ-BYT dated 12/08/2025 for wave 1 — clinical patterns, diagnoses, acupoints, and techniques; and Decision 3080/QĐ-BYT dated 26/09/2025 for wave 2 — symptoms, tongue, pulse, treatment principles, herbal materials, and formulas. These are the source for the vn-yhct-prescription and vn-yhct-herb CodeSystems planned for the VN Core IG.

9. Interaction alerts and CDS Hooks

FHIR pairs naturally with CDS Hooks — the specification for embedding clinical decision support inside an EMR. As the physician is about to confirm the prescription, the EMR fires a medication-prescribe event to an external CDS service, sending along the patient context and the draft prescription. The service returns a list of Card objects carrying alerts: drug-drug interactions, drug-comorbidity interactions, allergies, unusually high doses, and lower-cost equivalents at the same active ingredient.

In Vietnam, the CDS service can come from three sources: the drug-interaction database maintained by the Drug Administration, an in-house hospital system maintained by the clinical pharmacy team, or a commercial API from an international vendor. If the CDS service uses machine learning to predict interactions or recommend regimens, it may fall within the scope of Law 134/2025/QH15 on artificial intelligence (effective 01/03/2026), with an appropriate risk classification.

Every alert and every final decision by the physician — accept, dismiss, or modify — should be recorded in Provenance or AuditEvent for downstream auditing. This is good for patient safety and provides legal grounding when a clinical incident occurs.

10. Frequently asked questions

What about small pharmacies that do not yet have a FHIR system?

Independent pharmacies do not need to deploy a full FHIR server. A lightweight progressive web app (PWA) running in the browser, capable of scanning a QR code and calling REST APIs, is enough for the dispensing use case. Pharmacy software vendors can offer this PWA as a shared service.

Where do patients pick up the prescription if they don't have VNeID yet?

During the transition period, the prescription is printed on paper with a QR code and a textual prescription identifier. The patient brings the paper to the pharmacy, where the pharmacist either scans the QR code or types in the prescription number to retrieve the FHIR prescription from the hospital's system.

How do you change a prescription after it has been signed?

You don't edit the old one. Create a new MedicationRequest with priorPrescription pointing back to the previous one and set the previous prescription's status to stopped. Both records remain in place to preserve the full history.

Can a single prescription be dispensed multiple times?

Yes. The numberOfRepeatsAllowed field within dispenseRequest sets the number of refills. Each dispensing event creates its own MedicationDispense; the total number of MedicationDispense records referencing the same prescription must not exceed numberOfRepeatsAllowed + 1.

11. References