---
# System prepended metadata

title: 情境三 SASDSR文件

---

# 情境三：跨院病歷整合管理系統
## 2.1 主題

**跨院病歷整合管理系統（Cross-Hospital Record Administration and Synchronization System）**

> 管理員透過中央 FHIR 平台監控並整合不同醫院的病歷資料（Patient），
> 使用 `Person` 建立唯一身份索引，確保資料正確對應並維持系統同步狀態。
> 系統支援審核、授權、資料一致性檢查、以及異常警示。

---

## 2.2 應用情境（User Story）

**主要參與者：** 系統管理員、醫院資訊部門（HIS 管理員）、FHIR 中央伺服器（Central FHIR Server）

**使用者故事：**

> 作為一名系統管理員，我希望能在中央平台上整合與管理來自多家醫院的病歷資料，
> 並確保所有 `Patient` 都正確連結至唯一的 `Person` 身份，避免重複登錄或錯誤配對。
>
> 當新醫院加入、病歷更新或異常發生時，我能即時檢視同步狀態、修正連結、或停用不活躍帳號，
> 以維持跨院資料的完整性與一致性。

---

## 2.3 系統流程與 CRUD 對應

| 流程階段          | 管理員操作說明                                          | CRUD 類型                    | 使用的 FHIR 資源                       |
| ------------- | ------------------------------------------------ | -------------------------- | --------------------------------- |
| (1) 醫院註冊與授權   | 管理員建立 `Organization` 並核發授權金鑰，允許其上傳病歷資料。          | **C（Create）**              | `Organization`, `Practitioner`    |
| (2) 身分驗證與資料整合 | 管理員審核新上傳的 `Patient` 資料，並建立或連結對應的 `Person`。       | **C / U（Create / Update）** | `Person`, `Patient`               |
| (3) 資料查詢與稽核   | 管理員可查詢各醫院同步狀況、資料異常、重複紀錄與更新歷程。                    | **R（Read）**                | `Patient`, `Person`, `AuditEvent` |
| (4) 資料修正與同步   | 管理員可手動修正 `Person.link` 或 `Patient.link`，確保跨院一致性。 | **U（Update）**              | `Person`, `Patient`               |
| (5) 停用或封存資料   | 若發現重複或不合法紀錄，管理員可標記為不活躍狀態。                        | **D（Deactivate）**          | `Patient`, `Person`               |

---

## 2.4 使用的 FHIR 資源

| 資源名稱                                  | 主要欄位                                                                                                         | 說明                  |
| ------------------------------------- | ------------------------------------------------------------------------------------------------------------ | ------------------- |
| **Person**                            | `identifier`, `name`, `gender`, `birthDate`, `link`, `active`                                                | 作為中央身分索引，統一連結多院病歷   |
| **Patient**                           | `identifier`, `name`, `gender`, `birthDate`, `managingOrganization`, `generalPractitioner`, `link`, `active` | 來自各醫院的個別病歷資料        |
| **Organization**                      | `id`, `name`, `address`, `type`, `telecom`                                                                   | 醫療機構資訊與授權來源         |
| **Observation**                       | `code`, `valueQuantity`, `effectiveDateTime`, `subject`                                                      | 管理員可查閱同步的病人觀察資料     |
| **AuditEvent**                        | `action`, `recorded`, `agent`, `entity`, `outcome`                                                           | 系統稽核事件（登入、修改、資料異常等） |
| **Link (Person.link / Patient.link)** | `other`, `type`                                                                                              | 管理員可用於修正或建立跨院關聯     |

---


## 2.5 範例程式碼（FHIR Person、Patient、Observation、Organization）

### ✅ (1) 管理員建立醫院組織（Organization）

```python
import requests

org = {
  "resourceType": "Organization",
  "id": "hospitalA",
  "name": "台北醫學中心",
  "type": [{"text": "Hospital"}],
  "address": [{"city": "台北市", "line": ["仁愛路三段"]}],
  "telecom": [{"system": "phone", "value": "02-12345678"}]
}

res = requests.post("http://central.fhir.server/Organization", json=org)
print(res.status_code)
```

---

### ✅ (2) 管理員建立 Person（中央身分索引）

```python
person = {
  "resourceType": "Person",
  "identifier": [{"system": "http://national-id.tw", "value": "A123456789"}],
  "name": [{"use": "official", "family": "林", "given": ["小華"]}],
  "gender": "female",
  "birthDate": "1985-06-10",
  "active": True
}

res = requests.post("http://central.fhir.server/Person", json=person)
print(res.status_code)
```

---

### ✅ (3) 管理員連結多院病人（Person.link）

```python
link_update = {
  "resourceType": "Person",
  "id": "12345",
  "link": [
    {"target": {"reference": "Patient/HOSP-A-123"}},
    {"target": {"reference": "Patient/HOSP-B-456"}}
  ]
}

res = requests.put("http://central.fhir.server/Person/12345", json=link_update)
print(res.status_code)
```

---

### ✅ (4) 稽核紀錄查詢（AuditEvent）

```python
audit_query = "http://central.fhir.server/AuditEvent?_sort=-recorded&_count=10"
result = requests.get(audit_query).json()

for entry in result["entry"]:
    e = entry["resource"]
    print(f"[{e['recorded']}] {e['action']} by {e['agent'][0]['who']['display']}")
```

---

### ✅ (5) 停用不活躍病歷

```python
deactivate = {
  "resourceType": "Patient",
  "id": "HOSP-A-123",
  "active": False
}
requests.put("http://central.fhir.server/Patient/HOSP-A-123", json=deactivate)
```

---

## 2.6 延伸應用

1. **跨院資料稽核平台**：管理員可視覺化監控各醫院上傳頻率、異常狀況、同步延遲等。
2. **角色權限管理**：區分醫師、護理師、行政人員、資料管理者不同權限層級。
3. **自動比對重複資料**：利用姓名、身分證字號、生日自動比對重複的 `Patient`，自動建立或提示 `Person.link`。
4. **FHIR Subscription 通知**：當新醫院上傳病歷或異常發生時，系統自動通知管理員。
5. **AI 驗證輔助**：可利用 NLP 模型檢測跨院紀錄中可能的資料不一致性。
