Manipulating FHIR Resource: CRUD Operation

SIL-Thailand
SIL-Thailand
Published in
3 min readMar 3, 2020

จัดการ FHIR Resource: CRUD Operation

REST

REST หรือ REpresentational State Transfer เป็น protocol ที่สร้างขึ้นมาบน HTTP (HyperText Transfer Protocol) ซึ่งเป็น request/response protocol

REST ใช้แนวคิดในแง่ของ Resource แต่ละ resource สามารถระบุ identity ได้โดย Uniform Resource Identifier (URI) และระบุตำแหน่งของ resource โดยไม่ซ้ำกัน และจำเพาะเจาะจงกับ server ที่ใช้งาน

CRUD: Create, Read, Update and Delete

Method ต่างๆ ที่ใช้จัดการกับ resource

  • POST สร้าง resource ที่ต้องการขึ้นใหม่ (Create), server จะกำหนด id ให้, id รวมกับที่อยู่ของ server จะกลายเป็น URI ของ resource นั้น
  • GET (Read) ดึงข้อมูล resource ที่ต้องการตาม URI (server + id) ที่ระบุ, FHIR ใช้ GET method ทั้งในการดึงข้อมูล resource เดียวและในการค้นหาซึ่งอาจจะได้ ผลลัพธ์เป็นจำนวนหลาย resource กลับมา
  • PUT (Update) ใช้ปรับปรุงข้อมูล resource ที่มีอยู่แล้ว จึงจำเป็นต้องรู้ URI ของ resource นั้น, ใน FHIR นั้น PUT method จะสร้าง version ใหม่ของ resource นั้นขึ้นมา
  • DELETE (Remove) ใช้ลบ resource จาก URI ที่ระบุ แต่ยังเข้าถึงสำเนาของ resource นั้นได้ จาก history

(OPTIONS เป็น method พิเศษใน FHIR ซึ่งให้ผลลัพธ์เป็น Conformance resource ที่บอกถึงความสามารถหรือ capabilities ของ server นั้น)

Headers

  • Content-type header ระบุว่าเนื้อหาข้อมูลของ resource อยู่ในรูปแบบ XML หรือ JSON
  • Location header ใช้แจ้ง client ระบุ URI ของ resource ที่เพิ่งสร้างขึ้นใหม่
  • Accept header ใช้แจ้ง server ถึงรูปแบบข้อมูล (XML/JSON) ที่ client ต้องการ เมื่อ client เรียกข้อมูลจาก server โดยใช้ GET method

ในที่นี้จะใช้แอป Postman สำหรับรับ-ส่ง HTTP requests เพื่อระบุ content, HTTP method, request header และดู response header, Status code และ response body ที่ server ส่งกลับมา

รายชื่อ FHIR Test Server ที่เปิดสาธารณะ (public)

ในตอนแรกนี้จะใช้ http://test.fhir.org/r4 เป็น Test Server

สร้าง Resource ใหม่ (Create)

ลองส่ง Patient resource ที่ต้องการสร้างไปที่ FHIR server โดยใช้ POST method ส่ง request ไปที่ FHIR Test Server

ตัวอย่าง Patient Resource ที่จะส่งไปสร้างขึ้นใหม่บน server

<?xml version="1.0" encoding="UTF-8"?>
<Patient xmlns="http://hl7.org/fhir">
<text>
<status value="generated"/>
<div xmlns="http://www.w3.org/1999/xhtml">John Melonseed</div>
</text>
<identifier>
<system value="http://clinfhir.com/fhir/NamingSystem/identifier"/>
<value value="1234567890"/>
</identifier>
<name>
<use value="official"/>
<text value="John Melonseed"/>
<family value="Melonseed"/>
<given value="John"/>
<prefix value="Mr."/>
</name>
<telecom>
<system value="phone"/>
<value value="(08) 9765 4321"/>
<use value="mobile"/>
</telecom>
<gender value="male"/>
<birthDate value="2000-01-01"/>
<address>
<use value="home"/>
<type value="both"/>
<text value="88/20 Tiwanon Road, Talad Kwan, Muang, Nonthaburi, 11000, TH"/>
<line value="88/20 Tiwanon Road"/>
<city value="Talad Kwan"/>
<district value="Muang"/>
<state value="Nonthaburi"/>
<postalCode value="11000"/>
<country value="TH"/>
</address>
</Patient>

รายละเอียดของแต่ละ element และ Data type ที่เกี่ยวข้องใน Patient resource ดูรายละเอียดได้จาก http://hl7.org/fhir/patient.html#resource

ระบุ Content-type ใน Headers ให้ตรงกับรูปแบบข้อมูลที่จะส่งไป ในที่นี้ คือ application/fhir+xml

ในส่วนของ Body วางเนื้อหาของ resource ที่จะส่ง ระบุ server ที่ต้องการส่งข้อมูล (http://test.fhir.org/r4/Patient) ตั้ง method เป็น POST แล้วกด Send

รอ server ประมวลผล request ที่ส่งไป และส่ง response กลับมา Status code = 201 หมายถึง สร้าง resource สำเร็จ

สังเกตเลข ID ที่ถูก assigned ให้กับ resource ที่สร้างใหม่นี้ ใน Headers ของ response ที่ server ส่งกลับมา

ID นี้จะถูกสร้างขึ้นใหม่ตามระบบของ server ที่ส่ง request ไปใช้งาน เปรียบได้กับ HN ที่ได้ขึ้นมาใหม่หลังจากลงทะเบียนผู้ป่วยใหม่ในระบบโรงพยาบาล

Resource นี้ มี _history/1 เนื่องจากเป็น version แรกของ resource นี้

เลข ID นี้ รวมกับที่อยู่ของ server คือ URI ที่ใช้ในการ GET (Read) และ method อื่นๆ กับ resource นี้ต่อไป

--

--