⚕ Хөгжүүлэгчдийн гарын авлага
ЭМХТ — FHIR API
Интеграцийн гарын авлага
Эмнэлгийн мэдээллийн технологийн хөгжүүлэгчид болон EMR программ хангамж нийлүүлэгчдэд зориулсан дэлгэрэнгүй техникийн заавар.
5
API
Endpoint
Endpoint
R4
FHIR
Хувилбар
Хувилбар
3
CodeSystem
Лавлах сан
Лавлах сан
JWT
Token
Хэлбэр
Хэлбэр
Base URL
https://fhir.mn/fhir
Auth URL
https://auth.fhir.mn/realms/hdc/…/token
1
Ерөнхий мэдээлэл болон Үе шатууд
EMR нийлүүлэгчдийн интеграци хийх нийтлэг үе шатууд:
1
Баталгаажуулалт
Систем автоматаар client_credentials ашиглан хүчинтэй Access Token авна.
2
Жагсаалт татах (Cache)
Үндэсний нэр томьёоны сангууд болон лавлах жагсаалт (CodeSystems)-ийг татаж системдээ хадгална.
3
Эмчийн үйлдэл
Эмч маягт, өвчний түүхийг бөглөнө.
4
Мэдээлэл илгээх
EMR систем мэдээллийг автоматаар FHIR Transaction Bundle руу хөрвүүлэн илгээнэ.
5
Сунгах (Renewal)
Токены хугацаа дуусвал EMR автоматаар дахин шинэ токен авна.
2.1
Authentication — Баталгаажуулалт
Бүх хүсэлтийн (Metadata-аас бусад) Header хэсэгт
Authorization: Bearer <TOKEN> ба Content-Type: application/fhir+json байх ёстой.
POST
https://auth.fhir.mn/realms/hdc/protocol/openid-connect/token
FHIR API руу хандах эрхийн токен авах хүсэлт. Систем хоорондын харилцаа тул хэрэглэгчийн нэвтрэх үйлдэл шаардлагагүй (
client_credentials).
Request Headers
| Header | Утга |
|---|---|
Content-Type | application/x-www-form-urlencoded |
Request Body (Form-Data)
| Parameter | Төрөл | Шаардлага | Тайлбар |
|---|---|---|---|
client_id | String | Заавал | Танд олгогдсон Application (Client) ID |
client_secret | String | Заавал | Танд олгогдсон Нууц үг (Secret) |
grant_type | String | Заавал | client_credentials байх ёстой |
curl -X POST "https://auth.fhir.mn/realms/hdc/protocol/openid-connect/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id=hospital-first-client" \
-d "client_secret=<ЭМХТ-ӨӨС_ӨГСӨН_НУУЦ_ҮГ>" \
-d "grant_type=client_credentials"
Буцах хариу — 200 OK
{
"access_token": "eyJhbGciOiJ...",
"expires_in": 300,
"refresh_expires_in": 0,
"token_type": "Bearer",
"not-before-policy": 0,
"scope": "profile email"
}
2.2
System Metadata — Системийн мэдээлэл
GET
/metadata
FHIR серверийн дэмжиж ажилладаг ресурсууд, үйлдлүүд болон тохиргоог буцаах Capability Statement.
Энэ endpoint руу токенгүй хандах боломжтой.
2.3
Terminology Services — Нэр томьёо, Лавлах сан
Өвчтөний EMR мэдээллийг илгээхээс өмнө онош (ICD-10), морфологийн код гэх мэт албан ёсны кодыг татаж авах, шалгахад ашиглана.
Жишээ Лавлах сангуудын URL
http://fhir.mn/fhir/CodeSystem/mn-core-icd10
http://fhir.mn/fhir/CodeSystem/mn-core-icd9
http://fhir.mn/fhir/CodeSystem/mn-core-morphology
2.3.1 Read CodeSystem — Кодын системийг татах
GET
/CodeSystem?url={system_url}
curl -X GET "https://fhir.mn/fhir/CodeSystem?url=http://fhir.mn/fhir/CodeSystem/mn-core-icd10" \
-H "Authorization: Bearer <ТАНЫ_ACCESS_TOKEN>"
2.3.2 Lookup Code — Код шалгах
GET
/CodeSystem/$lookup?system={system_url}&code={code}
Тухайн код өгөгдсөн лавлах санд байгаа эсэх болон түүний дэлгэрэнгүй тайлбарыг буцаана.
curl -X GET "https://fhir.mn/fhir/CodeSystem/\$lookup?system=http://fhir.mn/fhir/CodeSystem/mn-core-icd10&code=J09" \
-H "Authorization: Bearer <ТАНЫ_ACCESS_TOKEN>" \
-H "Content-Type: application/fhir+json"
2.4
Clinical Data Submission — Эмнэлзүйн мэдээлэл илгээх
2.4.1 Create Single Resource — Ганц мэдээлэл үүсгэх
POST
/{ResourceType}
Өвчтөн (Patient), Үзлэг (Encounter), Онош (Condition) зэргийг саллангид байдлаар илгээх тохиолдолд ашиглана.
curl -X POST "https://fhir.mn/fhir/Condition" \
-H "Authorization: Bearer <ТАНЫ_ACCESS_TOKEN>" \
-H "Content-Type: application/fhir+json" \
-d '{
"resourceType": "Condition",
"code": {
"coding": [
{
"system": "http://fhir.mn/fhir/CodeSystem/mn-core-icd10",
"code": "J09"
}
]
},
"subject": { "reference": "Patient/12345" }
}'
2.4.2 Transaction Bundle — Цогц маягт илгээх
POST
/ (Шууд Base URL руу хандана)
ЭММ-3 маягт зэрэг олон төрлийн ресурс (Patient, Encounter, Observation, Condition г.м) хослож үүсэх өгөгдлийг цогцоор нь нэгтгэн илгээх хэлбэр. Өгөгдлийн бүрэн бүтэн байдлыг баталгаажуулж, алдаа гарвал rollback хийгдэнэ.
References (
Үйлдэл тус бүрийн
urn:uuid:xxx) — Bundle доторх ресурсуудыг хооронд нь холбохдоо түр зуурын UUID ашиглана. Төв сервер нь бодит ID үүсгэж, хооронд нь саадгүй холбоно.Үйлдэл тус бүрийн
request хэсэгт өөрийн үйлдэл болон URL-ийг заана.
curl -X POST "https://fhir.mn/fhir" \
-H "Authorization: Bearer <ТАНЫ_ACCESS_TOKEN>" \
-H "Content-Type: application/fhir+json" \
-d @emm3-bundle.json
{
"resourceType": "Bundle",
"type": "transaction",
"entry": [
{
"fullUrl": "urn:uuid:b590e211-1da3-406c-9c71-332e6fb0e0fa",
"resource": {
"resourceType": "Patient",
"meta": {
"profile": [ "http://fhir.mn/fhir/StructureDefinition/mn-core-patient" ]
},
"identifier": [
{ "system": "http://fhir.mn/sid/national-id", "value": "УУ80010155" }
],
"name": [ { "family": "Сүх", "given": [ "Намсрай" ] } ],
"gender": "male",
"birthDate": "1980-01-01"
},
"request": { "method": "POST", "url": "Patient" }
},
{
"fullUrl": "urn:uuid:7c0ebbd0-5d6e-4f01-9ac0-cd5cf5480eb4",
"resource": {
"resourceType": "Encounter",
"meta": {
"profile": [ "http://fhir.mn/fhir/StructureDefinition/mn-core-encounter" ]
},
"status": "finished",
"class": {
"system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
"code": "AMB"
},
"subject": {
"reference": "urn:uuid:b590e211-1da3-406c-9c71-332e6fb0e0fa"
},
"period": { "start": "2026-05-15T10:00:00Z" }
},
"request": { "method": "POST", "url": "Encounter" }
}
]
}
3
HTTP Response Codes — Буцах хариуны кодууд
200 OK / 201 Created
Хүсэлт амжилттай болж өгөгдөл бүртгэгдсэн / буцсан.
400 Bad Request
Илгээсэн FHIR JSON өгөгдлийн бүтэц алдаатай эсвэл дутуу байна.
401 Unauthorized
Таны токены хугацаа дууссан буюу токен буруу байна. Шинэ токен авна уу.
500 Server Error
Серверийн түвшний алдаа.