Монгол Улсын үндэсний цөм FHIR удирдамж (Mongolian National Core IG)
0.1.0 - draft Mongolia

Монгол Улсын үндэсний цөм FHIR удирдамж (Mongolian National Core IG) - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Integration

Эмнэлгийн мэдээллийн системийг MN Core Server-т холбох алхам алхмын заавар.


1. Бэлтгэл

ЭМХТ-ээс байгууллагадаа дараах зүйлсийг авна:

Юу Тайлбар
client_id Ихэвчлэн hospital-{байгууллагын код} хэлбэртэй
client_secret Нууц түлхүүр — эх кодод бичиж болохгүй
Байгууллагын дугаар Organization/{uuid} — токенд автоматаар шигтгэгдэнэ
Маягтын эрх Аль маягтад унших/бичих эрхтэй болох

2. Токен авах

POST https://auth.fhir.mn/realms/hdc/protocol/openid-connect/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id=hospital-1234&client_secret=…
{
  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6…",
  "expires_in": 36000,
  "token_type": "Bearer"
}

Токен 10 цаг хүчинтэй. Дуусахаас өмнө шинээр авна. Хүсэлт бүрд токен дахин авах шаардлагагүй — кэшлэж ашиглана.


3. Өвчтөнийг олох буюу бүртгэх

Эхлээд регистрийн дугаараар хайна:

GET https://fhir.mn/fhir/Patient?identifier=УБ12345678
Authorization: Bearer {token}

total = 0 бол шинээр бүртгэнэ:

POST https://fhir.mn/fhir/Patient
Authorization: Bearer {token}
Content-Type: application/fhir+json

{
  "resourceType": "Patient",
  "identifier": [{
    "system": "http://fhir.mn/sid/national-id",
    "value": "УБ12345678"
  }],
  "name": [{ "family": "Бат", "given": ["Болд"] }],
  "gender": "male",
  "birthDate": "1990-05-07"
}

managingOrganization талбарыг бичих шаардлагагүй — сервер өөрөө нөхнө.


4. Маягтын тодорхойлолт татах

Маягт бүрийн бүтэц, талбарын нэр, сонголтын утгыг токенгүйгээр уншиж болно:

GET https://fhir.mn/fhir/Questionnaire/EMM4-4-1

Сонголттой (choice) талбарын боломжит утгуудыг:

GET https://fhir.mn/fhir/ValueSet/{valueset-id}/$expand

Чухал. Маягтын хувилбар өөрчлөгдөж болно. Системээ хатуу бичсэн талбарын жагсаалтад биш, татаж авсан тодорхойлолт дээр тулгуурлан ажиллуулах нь зүйтэй.


5. Маягт илгээх

POST https://fhir.mn/fhir/QuestionnaireResponse
Authorization: Bearer {token}
Content-Type: application/fhir+json

{
  "resourceType": "QuestionnaireResponse",
  "status": "in-progress",
  "questionnaire": "http://fhir.mn/fhir/Questionnaire/EMM4-4-1",
  "subject": { "reference": "Patient/12345" },
  "authored": "2026-09-08T09:00:00+08:00",
  "item": [
    { "linkId": "child_registry_number",
      "answer": [{ "valueString": "УБ23050777" }] },
    { "linkId": "weight",
      "answer": [{ "valueDecimal": 14.2 }] }
  ]
}

Хэсэгчлэн хадгалахдаа status = "in-progress", дуусахдаа "completed".


6. Түгээмэл алдаанууд

Код Мессеж Шалтгаан ба засвар
401 Unauthorized Токен дууссан эсвэл буруу. Шинээр ав.
403 Танд бичих эрх байхгүй Тухайн маягтад эрх олгогдоогүй. ЭМХТ-д хандана.
403 Та зөвхөн өөрийн эмнэлгийн… Өөр байгууллагын нэрийн өмнөөс бичихийг оролдсон.
403 Өгөгдөл устгах эрх байхгүй DELETE хаалттай.
422 items are out of order Талбаруудыг тодорхойлолтын дарааллаар эрэмбэл.
422 is in the wrong place Бүлгийн доторх талбарыг үндсэн түвшинд гаргасан. Үүрлэсэн бүтцээр илгээ.
422 Item has answer though not enabled enableWhen-ээр хаалттай талбарт хариулт бичсэн.
422 The code … is not in the options value set Сонголтын код буруу. $expand-аар зөв кодыг ав.
422 Answer value must be of the type … answer-ийн төрөл item.type-тай таарахгүй байна.
412 HAPI-0988 Ижил маягт давхардаж үүсэх гэж байна. Эхлээд хайж, байвал PUT хий.

7. Туршилтын дараалал

Postman collection-ыг Татах багц-аас авч дараах дарааллаар ажиллуулна:

  1. Токен авах → 200
  2. Өвчтөн хайх → 200
  3. Маягт үүсгэх → 201
  4. Маягт шинэчлэх → 200
  5. completed болгох → 200
  6. Хязгаарлалтууд: өөр байгууллагын өгөгдөл унших, устгах → бүгд 403

Зургаа дахь алхам 403 буцаахгүй бол системд алдаа байна — ЭМХТ-д мэдэгдэнэ үү.


8. Зөвлөмж

  • Дахин оролдлого. 5xx алдаанд экспоненциал хүлээлттэй дахин оролдоно. 4xx алдаанд дахин оролдох нь утгагүй — хүсэлтээ засах хэрэгтэй.
  • Идемпотент байдал. Маягт үүсгэхийн өмнө өвчтөн, огноогоор хайж, байгаа эсэхийг шалгах нь давхардлаас сэргийлнэ.
  • Огноо. Бүх огноог цагийн бүсийн хамт бичнэ: 2026-09-08T09:00:00+08:00.
  • Нууц түлхүүр. client_secret-ийг эх код, git репод хадгалахгүй.