Data Types
แต่ละ element ใน resource หนึ่งๆ จะมี data type หรือประเภทข้อมูล โดยเฉพาะ
Data type ใน FHIR มี 4 ประเภท
- Simple/Primitive types ซึ่งเป็น element เดี่ยวๆ
- Complex types ซึ่งเป็นกลุ่มของ element
- Metadata types สำหรับใช้กับ metadata resources
- Special Purpose Data types สำหรับการใช้งานเฉพาะด้าน
Data Types บางตัวที่มีการใช้งานประจำ เช่น
Code
ใช้เมื่อระบบจำเป็นต้องสร้างตัวเลือกที่มีพื้นฐานบนรหัส (code) เช่น มีขั้นตอนการทำงานที่สัมพันธ์กับ resource อย่างเช่น อาจใช้ สถานะ (status) ของ Condition Resource กำหนดว่าจะแสดง condition (สภาวะการเจ็บป่วย) นั้น ในรายการสภาวะผู้ป่วย (patient’s list of conditions) หรือไม่
CodeableConcept
เป็นชนิดข้อมูลที่ใช้บ่อยที่สุดสำหรับข้อมูลที่เป็นรหัส แสดงค่าที่มักจะได้จากการอ้างอิงระบบคำศัพท์เฉพาะทาง (Terminology) หนึ่งระบบหรือมากกว่า แต่อาจถูกกำหนดค่าเป็นข้อความได้เช่นกัน
ลักษณะเด่นที่สำคัญของ CodeableConcept ได้แก่
- สนับสนุนรหัสหลายๆ รหัส หรือ “การแปลงค่า (Translation)” ซึ่งยินยอมให้ resource กรณีตัวอย่างเดียวกัน (common resource instance) ถูกใช้ในสถานการณ์ที่ผู้รับที่แตกต่างกันอาจต้องการรหัสที่ไม่เหมือนกัน
- ยินยอมให้มีการโยกย้าย (Migration) ระหว่างระบบรหัสเมื่อเวลาผ่านไป
การใช้งานทั่วไปของ CodeableConcept ที่พบประจำคือการส่งรหัสของ concept ที่เป็น local code พร้อมกับ translation อย่างน้อยหนึ่งรายการไปยังระบบรหัสสาธารณะเช่น LOINC หรือ SNOMED CT ตัวอย่างเช่น ผลทดสอบทางห้องปฏิบัติการที่เป็นเชิง qualitative สมมติระบบ Lab ของโรงพยาบาล Acme ใช้ local code = “NEG” และ translation กับรหัสมาตรฐาน SNOMED-CT
"valueCodeableConcept": {
"coding": [{
"system": "http://snomed.info/sct",
"code": "260385009",
"display": "Negative"
}, {
"system": "https://acme.lab/resultcodes",
"code": "NEG",
"display": "Negative"
}],
"text": "Negative for Chlamydia Trachomatis rRNA"
}
- สนับสนุนการสื่อใจความของ concept ซึ่งสำคัญสำหรับสถานการณ์ที่ไม่มีรหัสที่เหมาะสมอยู่ หรือในกรณีที่ผู้รับไม่รู้จักระบบรหัส (code system) หรือต้องการดูรายละเอียดเดิมของ concept ซึ่งไม่สามารถแสดงให้เห็นโดย code นั้นได้
"valueCodeableConcept": {
"text": "uncoded free text result"
}
Reference/Resource reference
Reference เป็น data type พิเศษ ให้ resource หนึ่งอ้างถึงอีก resource หนึ่งได้ ตัวอย่างเช่น resource ทางคลินิกอย่าง Problem หรือ Observation จำเป็นต้องอ้างถึง Patient resource
Contained Resources
Contained Resource เป็นการอ้าง resource อีกแบบ โดย resource ที่ถูกอ้างถึงถูกบรรจุอยู่ใน “parent” resource จริงๆ
Contained Resource จะไม่มี identity เป็นของตัวเอง นั่นก็คือ มันไม่ได้ถูกจัดเก็บบน server ในที่ๆ เป็นอิสระจาก resource ที่บรรจุมัน
{
"resourceType" : "Condition",
"contained": [{
"resourceType" : "Practitioner",
"id" : "p1",
"name" : [{
"family" : "Person",
"given" : ["Patricia"]
}]
}],
"asserter" : {
"reference" : "#p1"
}
}