Manipulating FHIR Resource: Update & Delete

SIL-Thailand
SIL-Thailand
Published in
4 min readMar 25, 2020

จัดการ FHIR Resource: แก้ไข และลบ Resource

ในตอนนี้จะใช้ clinFHIR ช่วยสร้าง Patient resource โดยเข้าไปใช้งาน clinFHIR Launcher ได้ที่ http://clinfhir.com

clinfhir.com พัฒนาโดย Dr David Hay แพทย์และผู้เชี่ยวชาญ FHIR ชาว New Zealand เป็น online tools ที่ช่วยในการสร้างตัวอย่างต่างๆ สำหรับการใช้งาน FHIR ทางคลินิกเพื่อการศึกษาและทดลอง FHIR

http://clinfhir.com

เราสามารถเปลี่ยน FHIR Server ที่ต้องการใช้งานใน clinFHIR ได้โดยคลิก Edit

Edit Current servers

แล้วเลือก FHIR Server ที่ต้องการ

หรือจะเพิ่ม FHIR Server อื่นๆ ที่ต้องการได้โดยคลิกที่ Add Server

Add Server

ใส่รายละเอียดของ FHIR Server ที่ต้องการ Add เสร็จแล้วกด Test

Add new server and Test

ถ้าทดสอบ Conformance testing ผ่านจะสามารถกด Add ได้

กลับออกมาที่หน้า clinFHIR Launcher เลือก server ทุกตัวให้สอดคล้องกัน แล้วกด Save

Save Current servers

หลังจากนั้น คลิกที่ Patient Viewer เพื่อไปที่ http://clinfhir.com/patientViewer.html คลิก Select Patient → Add new patient

clinfhir.com
Patient Viewer

ใส่รายละเอียดของ Patient resource ตามต้องการ กด Add patient

Add new Patient

clinFHIR จะสร้าง Patient resource ตามรายละเอียดที่กำหนด รวมทั้ง sample resources อื่นๆ ที่ใช้งานทางคลินิกเพื่อเป็นตัวอย่างให้ทดลอง

สังเกต URL ที่เก็บ resource และ resource id เพื่อใช้ในการจัดการ resource เหล่านี้ต่อไป

ลอง read Patient resource ที่สร้างขึ้นมาด้วยแอป Postman โดยใช้ method GET และ URI ของ resource ที่สร้างตาม <host>/<resourceType>/<id>

Postman

Copy หรือ save XML ที่ server response กลับมาเป็นไฟล์เพื่อแก้ไขเพิ่มเติมต่อไป

Update Resource

แก้ไข XML โดยเพิ่มเติมในส่วนของชื่อเรียกไม่เป็นทางการ เบอร์โทรศัพท์และที่อยู่ที่ทำงาน

<Patient xmlns="http://hl7.org/fhir">
<id value="921009"/>
<meta>
<versionId value="1"/>
<lastUpdated value="2020-03-25T11:06:22.714+00:00"/>
<source value="#Qd0xJZ3qBIgz4rlV"/>
</meta>
<text>
<status value="generated"/>
<div xmlns="http://www.w3.org/1999/xhtml">Edward Melonseed</div>
</text>
<!-- ORIGINAL NAME -->
<name>
<use value="official"/>
<text value="Edward Melonseed"/>
<family value="Melonseed"/>
<given value="Edward"/>
</name>
<!-- ADDED NAME -->
<name>
<use value="usual"/>
<text value="Ed Melonseed"/>
<family value="Melonseed"/>
<given value="Ed"/>
</name>
<!-- MOBILE PHONE -->
<telecom>
<system value=”phone”/>
<value value=”(08)97654321"/>
<use value=”mobile”/>
</telecom>
<gender value="male"/>
<birthDate value="1988-03-25"/>
<!-- WORK ADDRESS -->
<address>
<use value=”work”/>
<type value=”postal”/>
<text value=”88/20 Tiwanon Road, Talad Kwan, Muang, Nonthaburi, 11000, Thailand”/>
<line value=”88/20 Tiwanon Road”/>
<city value=”Talad Kwan”/>
<district value=”Muang”/>
<state value=”Nonthaburi”/>
<postalCode value=”11000"/>
<country value=”TH”/>
</address>
</Patient>

Update Patient resource เดิมด้วยแอป Postman โดยใช้ method PUT และ URL ของ resource วาง XML ที่แก้ไขแล้วลงในส่วน Request Body

ถ้า update สำเร็จ server จะทำการเพิ่มข้อมูลที่แก้ไขและคืนค่า Response Status code เป็น 200 กลับมา ค่าของ Content-Location ในส่วนของ Response Header ควรแสดงเป็นเลข version history ที่เพิ่มขึ้นจากเดิม

Notes:

  • ถ้าใช้ PUT method แต่ URI ที่ request resource นั้นไม่มีอยู่ server จะยังคงจัดเก็บข้อมูลที่ส่งไปให้แต่ Response Status code ที่ส่งกลับมาจะเป็น 201
  • เราสามารถเรียกดู version ต่างๆ ของ resource ได้โดยใช้ version-specific URI เช่น ในกรณีนี้จะเรียกดู resource version ก่อนหน้าได้โดยใช้ URI http://hapi.fhir.org/baseR4/Patient/921009/_history/1
  • เราสามารถเรียกดูรายการ version ทั้งหมดของ resource ได้โดยใช้ _history ต่อท้าย URI ของ resource นั้น เช่น http://hapi.fhir.org/baseR4/Patient/921009/_history

Delete Resource

เราสามารถลบ resource ได้โดยใช้ DELETE method กับ URI ของ resource นั้น

DELETE <host>/<resourceType>/<id>

ถ้า delete สำเร็จ server จะส่ง Status code 204 (No content) กลับมา แต่ถ้า delete ไม่ได้ ค่า Status code ที่ส่งกลับมาจะเป็นได้ทั้ง 404 (Not found), 405 (Method not allowed) หรือ 409 (Conflict)

การลบ resource หมายถึง server จะไม่ส่งข้อมูลของ resource นั้นกลับมาตามปกติจาก request ที่ใช้ GET method และ Status code ที่ได้กลับมา คือ 410 (Gone) ซึ่งแตกต่างกับกรณีส่ง request กับ resource ที่ไม่เคยมีอยู่ใน server จะได้ Status code เป็น 404

Version ต่างๆ ของ resource จะยังคงไม่หายไปไหน สามารถเข้าถึงได้โดย request ผ่าน version-specific URI

--

--