# Tình huống lâm sàng - Bộ Hướng dẫn Triển khai Core FHIR cho Việt Nam v0.5.0

## Tình huống lâm sàng

# Tình huống lâm sàng — Clinical Scenarios

Walkthrough nghiệp vụ đầu-cuối qua tình huống lâm sàng thực tế – từ đăng ký khám đến thanh toán BHYT – cho thấy resource nào xuất hiện theo từng bước, thứ tự tham chiếu ra sao và điểm giao cắt với lớp BHYT.

-------

## Tình huống 1: Khám ngoại trú — Thanh toán BHYT

### Bối cảnh

Bệnh nhân **Nguyễn Văn An** (nam, sinh 15/03/1985, CCCD 001085012345) đến khám ngoại trú tại **Bệnh viện Chợ Rẫy** với triệu chứng sốt, ho, khó thở. Bệnh nhân có thẻ BHYT đúng tuyến.

### Luồng dữ liệu FHIR

```
  ┌────────────┐  ┌────────────┐  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐
  │ 1. PATIENT │─▶│ 2. COVERAGE│─▶│ 3. ENCOUNTER │─▶│ 4. CONDITION │─▶│ 5. SERVICE   │
  │  Đăng ký   │  │  Thẻ BHYT  │  │  Lượt khám   │  │  Chẩn đoán   │  │   REQUEST    │
  └────────────┘  └────────────┘  └──────────────┘  └──────────────┘  │   Chỉ định    │
                                                                        └──────┬───────┘
                                                                               │
  ┌────────────┐  ┌────────────────┐  ┌──────────────────┐  ┌──────────────┐  │
  │ 10. CLAIM  │◀─│ 9. CLAIM       │◀─│ 8. MEDICATION    │◀─│ 7. OBSERVATION│◀─┘
  │ RESPONSE   │  │    BHYT        │  │    REQUEST       │  │   LAB         │
  │ Phản hồi TT│  │ Yêu cầu TT     │  │   Đơn thuốc      │  │ Kết quả XN    │
  └────────────┘  └────────────────┘  └──────────────────┘  └──────┬───────┘
                                                                    │
                                                             ┌──────▼───────┐
                                                             │ 6. SPECIMEN  │
                                                             │ Lấy/nhận mẫu │
                                                             └──────────────┘

```

> **Ghi chú**: Sơ đồ trên thể hiện 10 bước chính trong tình huống ngoại trú. Các resource hỗ trợ (Organization, Practitioner) không hiển thị trong sơ đồ nhưng được tham chiếu từ nhiều bước.

-------

### Bước 1: Đăng ký bệnh nhân — VNCorePatient

Tiếp nhận tạo/cập nhật hồ sơ bệnh nhân với thông tin nhân khẩu học.

| | | |
| :--- | :--- | :--- |
| `identifier[CCCD]` | `001085012345` | NamingSystem:`vn-cccd-ns` |
| `identifier[BHYT]` | `001085012345` | Format mới: CCCD 12 số (NĐ 188/2025, từ 15/8/2025) |
| `name.text` | "Nguyễn Văn An" | Họ tên đầy đủ (MS) |
| `name.family` | "Nguyễn" | Họ |
| `name.given` | ["Văn", "An"] | Tên đệm + tên |
| `gender` | `male` |   |
| `birthDate` | `1985-03-15` |   |
| `address.state` | "Hà Nội" | Text tự do |
| `address.extension[province]` | `01`= "Hà Nội" | VNProvinceCS (NQ 202/2025) |
| `address.extension[ward]` | `00008`= "Phường Ngọc Hà" | VNWardCS |
| `extension[ethnicity]` | `01`= "Kinh" | VNEthnicityCS (121/TCTK) |

**Profile**: [VNCorePatient](StructureDefinition-vn-core-patient.md) **Example**: [ExamplePatientNguyenVanAn](Patient-ExamplePatientNguyenVanAn.md)

-------

### Bước 2: Xác minh thẻ BHYT — VNCoreCoverage

Kiểm tra và ghi nhận thông tin thẻ BHYT.

| | | |
| :--- | :--- | :--- |
| `identifier` | `001085012345` | Số thẻ BHYT format mới (CCCD 12 số) |
| `status` | `active` |   |
| `type` | BHYT |   |
| `beneficiary` | Reference(Patient) | Bệnh nhân |
| `payor` | Reference(Organization/BHXH) | Cơ quan BHXH |
| `period.start` | `2025-08-01` | Hiệu lực từ |
| `period.end` | `2026-07-31` | Hiệu lực đến |
| `extension[bhytCardType]` | `DN`= "Người lao động trong doanh nghiệp" | Loại đối tượng (NĐ 146/2018) |
| `extension[primaryCareFacility]` | Reference(Organization/ChoRay) | Nơi ĐKKCB ban đầu |

**Profile**: [VNCoreCoverage](StructureDefinition-vn-core-coverage.md) **Example**: [ExampleCoverageBHYTNew](Coverage-ExampleCoverageBHYTNew.md)

-------

### Bước 3: Tạo lượt khám — VNCoreEncounter

Khi bệnh nhân vào phòng khám, hệ thống tạo Encounter.

| | | |
| :--- | :--- | :--- |
| `status` | `in-progress`→`finished` | Trạng thái lượt khám |
| `class` | `AMB` | Ngoại trú (ambulatory) |
| `subject` | Reference(Patient) |   |
| `period.start` | `2026-03-19T08:30:00+07:00` | Giờ bắt đầu |
| `period.end` | `2026-03-19T11:00:00+07:00` | Giờ kết thúc |
| `serviceProvider` | Reference(Organization/ChoRay) | BV Chợ Rẫy |
| `extension[insuranceVisitType]` | `5`= "Khám chữa bệnh ban đầu" | MALYDO (QĐ 3176) |

**Profile**: [VNCoreEncounter](StructureDefinition-vn-core-encounter.md) **Example**: [ExampleEncounterOutpatient](Encounter-ExampleEncounterOutpatient.md)

-------

### Bước 4: Chẩn đoán — VNCoreCondition

Bác sĩ khám và chẩn đoán: Viêm phổi (J18.9).

| | | |
| :--- | :--- | :--- |
| `clinicalStatus` | `active` |   |
| `verificationStatus` | `confirmed` |   |
| `category` | `encounter-diagnosis` |   |
| `code.coding[0]` | ICD-10 VN`J18.9`= "Viêm phổi, không xác định" | VN ICD-10 CS (QĐ 4469) |
| `subject` | Reference(Patient) |   |
| `encounter` | Reference(Encounter) |   |
| `recordedDate` | `2026-03-19` |   |
| `recorder` | Reference(Practitioner) | BS khám |

**Profile**: [VNCoreCondition](StructureDefinition-vn-core-condition.md) **Example**: [ExampleConditionPneumonia](Condition-ExampleConditionPneumonia.md)

-------

### Bước 5: Chỉ định xét nghiệm — VNCoreServiceRequest

BS chỉ định xét nghiệm glucose máu lúc đói.

| | | |
| :--- | :--- | :--- |
| `status` | `active` |   |
| `intent` | `order` |   |
| `category` | `XN`= "Xét nghiệm" | VNServiceRequestCategoryCS |
| `code.coding[0]` | LOINC`1558-6`= "Fasting glucose [Mass/volume] in Serum or Plasma" | LOINC VN (QĐ 1227) |
| `code.text` | "Glucose máu lúc đói" |   |
| `subject` | Reference(Patient) |   |
| `encounter` | Reference(Encounter) |   |
| `requester` | Reference(Practitioner) | BS chỉ định |
| `performerType` | `01`= "Hóa sinh" | VNSpecialtyVS |

**Profile**: [VNCoreServiceRequest](StructureDefinition-vn-core-service-request.md) **Example**: [ExampleServiceRequestLabGlucose](ServiceRequest-ExampleServiceRequestLabGlucose.md)

-------

### Bước 6: Lấy và tiếp nhận mẫu bệnh phẩm — VNCoreSpecimen

Phòng xét nghiệm tiếp nhận mẫu huyết thanh sau khi lấy máu.

| | | |
| :--- | :--- | :--- |
| `status` | `available` | Mẫu đạt điều kiện xét nghiệm |
| `type` | `SER`= "Serum" | Huyết thanh |
| `subject` | Reference(Patient) |   |
| `request[0]` | Reference(ServiceRequest) | Liên kết lại chỉ định gốc |
| `collection.collectedDateTime` | `2026-03-19T09:00:00+07:00` | Thời điểm lấy mẫu |
| `receivedTime` | `2026-03-19T09:05:00+07:00` | Thời điểm tiếp nhận mẫu |
| `container.type` | "Ống tách huyết thanh" | Vật chứa mẫu |

**Profile**: [VNCoreSpecimen](StructureDefinition-vn-core-specimen.md) **Example**: [ExampleSpecimenSerumChemistry](Specimen-ExampleSpecimenSerumChemistry.md)

-------

### Bước 7: Kết quả xét nghiệm — VNCoreObservationLab

Phòng xét nghiệm trả kết quả.

| | | |
| :--- | :--- | :--- |
| `status` | `final` |   |
| `category` | `laboratory` |   |
| `code` | LOINC`14771-0`= "Fasting glucose [Moles/volume] in Serum or Plasma" | Đúng cho đơn vị mmol/L |
| `subject` | Reference(Patient) |   |
| `encounter` | Reference(Encounter) |   |
| `effectiveDateTime` | `2026-03-19T09:20:00+07:00` | Thời điểm có kết quả sau khi tiếp nhận mẫu |
| `valueQuantity` | 6.8 mmol/L | Kết quả — cao hơn giới hạn trên |
| `referenceRange.low` | 3.9 mmol/L | Giới hạn dưới |
| `referenceRange.high` | 6.1 mmol/L | Giới hạn trên |
| `interpretation` | `H`= "High" | Cao — gợi ý cần theo dõi đường huyết |

**Profile**: [VNCoreObservationLab](StructureDefinition-vn-core-observation-lab.md) **Example**: [ExampleObservationLabGlucose](Observation-ExampleObservationLabGlucose.md)

-------

### Bước 8: Kê đơn thuốc — VNCoreMedicationRequest

BS kê đơn thuốc điện tử.

| | | |
| :--- | :--- | :--- |
| `status` | `active` |   |
| `intent` | `order` |   |
| `medicationCodeableConcept` | ATC`J01CA04`= "Amoxicillin" | Mã ATC |
| `subject` | Reference(Patient) |   |
| `encounter` | Reference(Encounter) |   |
| `requester` | Reference(Practitioner) | BS kê đơn |
| `dosageInstruction.text` | "Uống 500mg x 3 lần/ngày, sau ăn" | Hướng dẫn sử dụng |
| `dosageInstruction.timing` | 3 lần/ngày x 7 ngày |   |
| `dosageInstruction.doseAndRate` | 500 mg |   |
| `dispenseRequest.quantity` | 21 viên |   |

**Profile**: [VNCoreMedicationRequest](StructureDefinition-vn-core-medication-request.md) **Example**: [ExampleMedicationRequestAmoxicillin](MedicationRequest-ExampleMedicationRequestAmoxicillin.md)

> **Lưu ý**: Example FSH dùng `medicationCodeableConcept` (inline). Profile cũng hỗ trợ `medicationReference` khi cần link đến resource Medication riêng (có thêm SNOMED CT, số đăng ký thuốc).

-------

### Bước 9: Thanh toán BHYT — VNCoreClaim

Khi kết thúc lượt khám, hệ thống tạo yêu cầu thanh toán BHYT.

| | | |
| :--- | :--- | :--- |
| `status` | `active` |   |
| `type` | `institutional` |   |
| `use` | `claim` |   |
| `patient` | Reference(Patient) |   |
| `provider` | Reference(Organization/ChoRay) | CSKCB |
| `insurance.coverage` | Reference(Coverage/BHYT) | Thẻ BHYT |
| `item[0].productOrService` | "Khám bệnh" | Phí khám |
| `item[1].productOrService` | "XN Glucose" | Chi phí XN |
| `item[2].productOrService` | "Amoxicillin 500mg x 21" | Chi phí thuốc |

> **Lưu ý**: Example [ExampleClaimBHYT](Claim-ExampleClaimBHYT.md) minh họa Claim cho **lượt nội trú** (viêm ruột thừa, tổng 14.370.000 VND) với đầy đủ 14 nhóm chi phí theo QĐ 697/QĐ-BYT. Claim ngoại trú đơn giản hơn — chỉ có 2-3 item (khám, XN, thuốc).

**Profile**: [VNCoreClaim](StructureDefinition-vn-core-claim.md)

-------

### Bước 10: Phản hồi thanh toán — VNCoreClaimResponse

Cơ quan BHXH xử lý và phản hồi yêu cầu thanh toán.

| | | |
| :--- | :--- | :--- |
| `status` | `active` |   |
| `type` | `institutional` |   |
| `use` | `claim` |   |
| `patient` | Reference(Patient) |   |
| `outcome` | `complete` | Xử lý hoàn tất |
| `request` | Reference(Claim) | Tham chiếu Claim bước 8 |

**Profile**: [VNCoreClaimResponse](StructureDefinition-vn-core-claim-response.md)

-------

### Tổng kết luồng dữ liệu

```
  ┌────────────────────────────────────────────────────────────────────┐
  │                    TIMELINE — Lượt khám ngoại trú BHYT            │
  ├────────┬──────────────────────────────────────────────────────────┤
  │ 08:30  │ Patient + Coverage → Đăng ký, xác minh BHYT             │
  │ 08:35  │ Encounter (in-progress) → Bắt đầu lượt khám            │
  │ 08:45  │ Condition → BS chẩn đoán Viêm phổi J18.9               │
  │ 08:50  │ ServiceRequest → Chỉ định XN Glucose                    │
  │ 09:00  │ Specimen → Lấy mẫu huyết thanh xét nghiệm               │
  │ 09:05  │ Specimen → Tiếp nhận mẫu tại phòng xét nghiệm           │
  │ 09:20  │ Observation → Kết quả XN: 6.8 mmol/L (High)            │
  │ 09:30  │ MedicationRequest → Kê đơn Amoxicillin                 │
  │ 10:00  │ Encounter (finished) → Kết thúc khám                   │
  │ 10:05  │ Claim → Yêu cầu thanh toán BHYT                        │
  │ 10:10  │ ClaimResponse → BHXH phản hồi: chấp nhận               │
  └────────┴──────────────────────────────────────────────────────────┘

```

### Tài nguyên tham gia

| | | | |
| :--- | :--- | :--- | :--- |
| 1 | Patient | VNCorePatient | Hồ sơ bệnh nhân |
| 2 | Coverage | VNCoreCoverage | Thẻ BHYT |
| 3 | Organization | VNCoreOrganization | BV Chợ Rẫy |
| 4 | Practitioner | VNCorePractitioner | Bác sĩ khám |
| 5 | Encounter | VNCoreEncounter | Lượt khám ngoại trú |
| 6 | Condition | VNCoreCondition | Chẩn đoán ICD-10 |
| 7 | ServiceRequest | VNCoreServiceRequest | Chỉ định XN |
| 8 | Specimen | VNCoreSpecimen | Mẫu bệnh phẩm |
| 9 | Observation | VNCoreObservationLab | Kết quả XN |
| 10 | MedicationRequest | VNCoreMedicationRequest | Đơn thuốc |
| 11 | Claim | VNCoreClaim | Yêu cầu thanh toán |
| 12 | ClaimResponse | VNCoreClaimResponse | Phản hồi BHXH |

-------

## Tình huống 2: CT lồng ngực ngoại trú BHYT

### Bối cảnh

Bệnh nhân ngoại trú có triệu chứng hô hấp được bác sĩ chỉ định CT lồng ngực. Quy trình cần nối chỉ định, metadata DICOM, báo cáo đọc phim và nhóm chi phí CĐHA trong hồ sơ BHYT.

### Luồng dữ liệu FHIR

```
  ┌────────────────────┐
  │ 1. SERVICE REQUEST │  BS chỉ định CT lồng ngực
  └─────────┬──────────┘
            │
            ▼
  ┌────────────────────┐
  │ 2. IMAGING STUDY   │  KTV chụp, StudyInstanceUID, modality CT
  └─────────┬──────────┘
            │
            ▼
  ┌────────────────────┐
  │ 3. DIAG REPORT     │  BS đọc phim, imagingStudy, PDF kết quả
  │    IMAGING         │
  └─────────┬──────────┘
            │
            ▼
  ┌────────────────────┐
  │ 4. CLAIM BHYT      │  Nhóm chi phí 4 CĐHA theo QĐ 697
  └────────────────────┘

```

| | | |
| :--- | :--- | :--- |
| 1 | [VNCoreServiceRequest](StructureDefinition-vn-core-service-request.md) | Bác sĩ tạo chỉ định CT |
| 2 | [VNCoreImagingStudy](StructureDefinition-vn-core-imaging-study.md) | KTV/RIS/PACS ghi DICOM`StudyInstanceUID`, modality`CT`, thời điểm thực hiện và kỹ thuật CĐHA |
| 3 | [VNCoreDiagnosticReportImaging](StructureDefinition-vn-core-diagnostic-report-imaging.md) | Bác sĩ đọc phim ghi`resultsInterpreter`, tham chiếu`imagingStudy`, đính kèm`presentedForm`PDF phiếu kết quả |
| 4 | [VNCoreClaim](StructureDefinition-vn-core-claim.md) | Tổng hợp thanh toán BHYT, category nhóm chi phí`4`CĐHA theo**QĐ 697/QĐ-BYT ngày 19/03/2026** |

Điểm kiểm tra quan trọng: `VNCoreDiagnosticReportImaging.imagingStudy` phải tham chiếu đúng [VNCoreImagingStudy](StructureDefinition-vn-core-imaging-study.md) đã sinh từ bước thực hiện chụp, thay vì chỉ gửi text kết quả rời rạc.

-------

## Tình huống 3: Sinh thiết giải phẫu bệnh

### Bối cảnh

Bệnh nhân được chỉ định sinh thiết tổn thương nghi ngờ. Luồng này cần bảo toàn bệnh phẩm, kết luận giải phẫu bệnh và khả năng cập nhật chẩn đoán xác định.

### Luồng dữ liệu FHIR

```
  ┌────────────────────┐
  │ 1. SERVICE REQUEST │  BS chỉ định sinh thiết
  └─────────┬──────────┘
            │
            ▼
  ┌────────────────────┐
  │ 2. SPECIMEN        │  Bệnh phẩm, type/body site theo SNOMED Body Structure
  └─────────┬──────────┘
            │
            ▼
  ┌────────────────────┐
  │ 3. DIAG REPORT     │  GPB: specimen bắt buộc, conclusionCode extensible
  │    PATHOLOGY       │
  └─────────┬──────────┘
            │
            ▼
  ┌────────────────────┐
  │ 4. CONDITION       │  Cập nhật chẩn đoán xác định nếu có
  └────────────────────┘

```

| | | |
| :--- | :--- | :--- |
| 1 | [VNCoreServiceRequest](StructureDefinition-vn-core-service-request.md) | Bác sĩ chỉ định sinh thiết |
| 2 | [VNCoreSpecimen](StructureDefinition-vn-core-specimen.md) | Ghi nhận bệnh phẩm, loại mẫu và vị trí giải phẫu; ưu tiên SNOMED CT VN Body Structure theo**QĐ 2427/QĐ-BYT ngày 25/07/2025** |
| 3 | [VNCoreDiagnosticReportPathology](StructureDefinition-vn-core-diagnostic-report-pathology.md) | Báo cáo GPB;`specimen`bắt buộc`1..*`;`conclusionCode`binding extensible tới`VNMorphologyVS`theo**QĐ 2493/QĐ-BYT năm 2025**;`conclusion`giữ diễn giải narrative |
| 4 | [VNCoreCondition](StructureDefinition-vn-core-condition.md) | Cập nhật chẩn đoán xác định khi kết quả GPB thay đổi hoặc xác nhận chẩn đoán lâm sàng |

[VNCoreDiagnosticReportPathology](StructureDefinition-vn-core-diagnostic-report-pathology.md) dùng `conclusionCode` với binding `extensible`, không dùng `required`, vì terminology QA và mapping local chưa hoàn tất cho toàn bộ mã hình thái. Implementer nên dùng `VNMorphologyVS` khi có mã phù hợp, nhưng vẫn được fallback sang SNOMED CT chính thức hoặc text narrative để không chặn triển khai thực tế.

-------

## Các tình huống đang harden cho pilot

Các tình huống dưới đây thuộc phạm vi `v0.5.0` nhưng vẫn cần phản hồi triển khai thật trước khi nâng mức maturity. Phản hồi từ cộng đồng và bên triển khai sẽ giúp xác định thứ tự ưu tiên cho các ví dụ end-to-end tiếp theo.

| | | |
| :--- | :--- | :--- |
| **Nội trú** | Nhập viện, chuyển khoa, xuất viện, thanh toán 14 nhóm chi phí theo QĐ 697/QĐ-BYT | Encounter (inpatient), Claim (14 item categories) |
| **Chuyển tuyến** | Giấy chuyển viện, KCB trái tuyến, mức thanh toán BHYT theo NĐ 188/2025 | DocumentReference (giấy chuyển viện), Coverage (trái tuyến) |
| **Y học cổ truyền** | Chẩn đoán YHCT kèm Tây y, bát cương biện chứng, huyệt vị châm cứu | Condition (YHCT), Observation (YHCT), Procedure |
| **Cấp cứu** | KCB cấp cứu, xử lý khi chưa có thẻ BHYT hoặc chưa xác định danh tính | Encounter (emergency), Coverage (cấp cứu) |

Mọi góp ý xin gửi qua email [info@hl7.org.vn](mailto:info@hl7.org.vn).

-------

## Liên hệ với các trang khác

| | |
| :--- | :--- |
| Xem chi tiết các hồ sơ FHIR được dùng trong scenario | [Danh mục hồ sơ](profiles.md) |
| Liên thông scenario với hồ sơ thanh toán BHYT | [BHYT Submission](bhyt-submission.md) |
| Kiểm tra hợp lệ dữ liệu trong scenario | [Hướng dẫn kiểm tra hợp lệ](validation-guidance.md) |
| Bắt đầu cài đặt và chạy thử scenario trên môi trường local | [Getting Started](getting-started.md) |

## English Summary

This page walks through a complete outpatient visit at a Vietnamese hospital, from patient registration through BHYT insurance claim adjudication, using 12 interlinked VN Core profiles across 10 clinical steps. The scenario illustrates Vietnam-specific elements such as CCCD-based identifiers, BHYT coverage verification, ICD-10 VN coding, and insurance claim submission. Additional scenarios covering inpatient care, referral, traditional medicine, and emergency visits are part of the v0.5.0 pilot-hardening scope and will be promoted as implementation evidence matures.

