กรณียังไม่มีบัญชีผู้ใช้ สมัครบัญชีผู้ใช้ที่
https://hcode.moph.go.th/signup/
HTTP Request ใช้ POST method ส่ง key-value ใน body มี key 2 ตัวคือ "username" และ "password" ที่ท่านใช้สมัครบัญชี
ส่งไปที่ endpoint https://hcode.moph.go.th/api/token/
โดยตั้งค่า headers เป็น "Content-Type": "application/json"
{
"username": "your_username",
"password": "your_password"
}
{
"refresh": "eyJhbGciOiJIUzI1NiIsInR5cAI6IkpXVCE9.eyJ0b2tlbi90eXBlIjoicmVmcmVzaCIsImV4cCI6MTY5OTg0MTg5NywiaWF0IjoxNjk5MjM3MDk3LCJqdGkiOiIxMmI1nmUwODY0Yjc0YTJlYjM1N2VmZGYwNjlhOWRlZCIsInVzZXJfaWQiOjQ5fQ.GFuP7MuQuenmYAeblPmqmYGJlnDq2bf8Vlr5-CXqbAw",
"access": "eyJhbGciOiTIUzI1NiIsInR5cCI6IkpVXCE9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjk5MjQwNjk3LCJpYXQiOjE2OTkyMzcwOTcsImp0aSI6IjYxMzllyMJkZTJlNjQ1YjA4OTI3NzM0ZGY4NTQ3YzEwIiwidXNlal9pZCI6NDl9.RsQHNIQ3-rkCPNkHiZngwa4V934E-EtzJK_mMlrArWs"
}
ส่ง refresh-token ไปที่ https://hcode.moph.go.th/api/token/refresh/
{
"refresh": "eyJhbGciOiJIUzI1NiIsInR5cAI6IkpXVCE9.eyJ0b2tlbi90eXBlIjoicmVmcmVzaCIsImV4cCI6MTY5OTg0MTg5NywiaWF0IjoxNjk5MjM3MDk3LCJqdGkiOiIxMmI1nmUwODY0Yjc0YTJlYjM1N2VmZGYwNjlhOWRlZCIsInVzZXJfaWQiOjQ5fQ.GFuP7MuQuenmYAeblPmqmYGJlnDq2bf8Vlr5-CXqbAw"
}
Response ที่ได้จะเป็น access-token ใหม่ที่รีเซ็ตอายุเป็น 240 นาที
{
"access": "eyJhizCiOpObnzI1NiIsInR5cCI6IkpXVCJ9.eyT0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzA4NDkzMDAyLCJpYXQiOJE3MDgzMjM4MTcsImp0aSI6IjI2MDdiNzFiMTY1ZDQ3OyjiYTaXZGY2ZjgxNTIxNTE5IiwidXNlcl9pZCI6MywiaXNzIjoiaGNvZGUubW9yAc5nby50aCJ9.qAXx2AEvCr1R4L9UiukCLKi4fbemJ539glUeeHlvBMY"
}
ใช้ GET ไปที่ endpoint https://hcode.moph.go.th/api/health_office/ โดยตั้งค่า headers ของ HTTP Request ดังนี้ (access-token หลัง Bearer ในตัวอย่างนี้ ให้แทนด้วย access-token จริงที่ได้จากข้างต้น)
{
"Content-Type": "application/json",
"Authorization": "Bearer access-token"
}
JSON ที่เซิร์ฟเวอร์ตอบสนองจะมีลักษณะเป็น Pagination หรือการแบ่งชุดข้อมูลย่อยต่อหน้า ปัจจุบันได้ตั้งค่าการตอบสนองไว้เป็นข้อมูลตั้งต้น 100 รายการ ต่อหน้า บัญชีทั่วไปสามารถปรับได้สูงสุดหน้าละ 1,000 รายการ และบัญชีผู้ใช้ประเภทหน่วยงานรัฐบาลจะเพิ่มได้สูงสุดหน้าละ 10,000 รายการ แต่ละหน้าจะมี key ทั้งหมด 4 ตัว ได้แก่ "count", "next", "previous" และ "results" ดังต่อไปนี้
{
"count": 0,
"next": null,
"previous": null,
"results": []
}
null
null
[] โดยจะแบ่งข้อมูลหน้าละ 10 รายการ ท่านสามารถใช้พารามิเตอร์
page_size ได้ 1 - 1,000 รายการหรือ 1 - 10,000 รายการสำหรับบัญชีประเภทหน่วยงานรัฐบาล ดังตัวอย่างต่อไปนี้
page_size=3 ให้ตอบสนองหน้าละ 3 รายการ
https://hcode.moph.go.th/api/province/?page_size=3
{
"count": 77,
"next": "https://hcode.moph.go.th/api/province/?page=2&page_size=3",
"previous": null,
"results": [
{
"id": 1,
"code": "10",
"name": "กรุงเทพมหานคร",
"en_name": "Bangkok",
"province_type": "เขตปกครองพิเศษ",
"country": "ไทย",
"region": "ภาคกลาง",
"health_zone": "เขตสุขภาพที่ 13",
"utm_zone": "48N"
},
{
"id": 2,
"code": "11",
"name": "สมุทรปราการ",
"en_name": "Samut Prakan",
"province_type": "จังหวัด",
"country": "ไทย",
"region": "ภาคกลาง",
"health_zone": "เขตสุขภาพที่ 6",
"utm_zone": "48N"
},
{
"id": 3,
"code": "12",
"name": "นนทบุรี",
"en_name": "Nonthaburi",
"province_type": "จังหวัด",
"country": "ไทย",
"region": "ภาคกลาง",
"health_zone": "เขตสุขภาพที่ 4",
"utm_zone": "47N"
}
]
}
เราสามารถกรองหน้าเพิ่มเติมได้ใช้พารามิเตอร์ page ตัวอย่างด้านล่างนี้เป็นการกรองข้อมูลเพิ่มเติมจากข้างต้นไปที่ หน้า 2
โดยเพิ่มพารามิเตอร์ page=2 ซึ่งเป็น URL เดียวกันกับ key ที่ชื่อ "next" ท่านอาจทดลองเปลี่ยนเป็นเลขหน้าอื่น ๆ แทนได้
https://hcode.moph.go.th/api/province/?page=2&page_size=3
{
"count": 77,
"next": "https://hcode.moph.go.th/api/province/?page=3&page_size=3",
"previous": "https://hcode.moph.go.th/api/province/?page_size=3",
"results": [
{
"id": 4,
"code": "13",
"name": "ปทุมธานี",
"en_name": "Pathum Thani",
"province_type": "จังหวัด",
"country": "ไทย",
"region": "ภาคกลาง",
"health_zone": "เขตสุขภาพที่ 4",
"utm_zone": "47N"
},
{
"id": 5,
"code": "14",
"name": "พระนครศรีอยุธยา",
"en_name": "Phra Nakhon Si Ayutthaya",
"province_type": "จังหวัด",
"country": "ไทย",
"region": "ภาคกลาง",
"health_zone": "เขตสุขภาพที่ 4",
"utm_zone": "47N"
},
{
"id": 6,
"code": "15",
"name": "อ่างทอง",
"en_name": "Ang Thong",
"province_type": "จังหวัด",
"country": "ไทย",
"region": "ภาคกลาง",
"health_zone": "เขตสุขภาพที่ 4",
"utm_zone": "48N"
}
]
}
[] หากต้องการขอข้อมูลหน้าถัดไปให้ใช้ URL จาก "next"
ซึ่งต่างกันเพียงมีพารามิเตอร์ page ในการแบ่งเลขหน้า เช่น กรณีที่ท่านแบ่ง 77 จังหวัดให้แสดงด้วยพารามิเตอร์
page_size=5 จำนวนหน้าทั้งหมดที่ท่านกรองจะมี 16 หน้า โดยหน้าสุดท้ายมี 2 รายการ -> (15 x 5) + 2 = 77 จังหวัด
ข้อมูลหน่วยงานบริการสุขภาพสามารถกรองได้โดยใช้ query parameter ข้อมูลประเภท boolean
จะใช้ "1" หรือ "True" แสดงตรรกะ "จริง"
และใช้ "0" หรือ "False" แสดงตรรกะ "เท็จ"
query parameter ที่ใช้งานได้กับหน่วยงานบริการสุขภาพ สามารถตรวจสอบได้ที่
https://hcode.moph.go.th/api_documentation/endpoint_and_queryparameter/
ตัวอย่างนี้จะใช้ GET โดยส่ง access-token ไปที่
endpoint https://hcode.moph.go.th/api/health_office/
พร้อมกรองด้วย query parameter "name" และ "code9"
-> https://hcode.moph.go.th/api/health_office/?name=มิตรไมตรีคลินิกเวชกรรม(สุขสวัสดิ์)&code9=004162000
จะได้ผลลัพธ์ออกมา 1 รายการใน key "results" ดังนี้
หมายเหตุ: ฟิลด์ "address" และ "display_address" อาจจะแสดงข้อมูลไม่ตรงกันเนื่องจากฐานข้อมูลเดิมก่อนวันที่ 1 กันยายน พ.ศ.2566
ไม่ได้แยกฟิลด์ เลขที่, หมู่, หมู่บ้าน, ซอย, ถนน, อาคาร, ห้อง, ชั้น และชั้นลอย ทำให้ระบบใหม่ต้องทำฟิลด์ "details" รองรับข้อมูลที่อยู่เดิมใน "address"
ซึ่งมีรูปแบบไม่ตายตัว จึงไม่สามารถ Serialize ข้อมูลให้เหมือนกันได้
ให้ท่าน"อ้างอิงที่อยู่โดยใช้ address เท่านั้น"
หาก "details" ใน "address" ไม่เป็น null รูปแบบข้อมูลใน "display_address" จะเป็น details + moo + subdistrict + district + province + zipcode
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 5050,
"name": "มิตรไมตรีคลินิกเวชกรรม(สุขสวัสดิ์)",
"code9": "004162000",
"code5": "41620",
"private_code": "11101006162",
"organization_type": "เอกชน",
"health_office_type": "คลินิกเอกชน",
"hospital_level": null,
"organization": "เอกชน",
"department": null,
"active": true,
"address": {
"id": 5050,
"number": null,
"moo": "2",
"village": null,
"street": null,
"alley": null,
"building": null,
"room": null,
"floor": null,
"is_double_space": false,
"subdistrict": "ในคลองบางปลากด",
"subdistrict_code": "110505",
"district": "พระสมุทรเจดีย์",
"district_code": "1105",
"province": "สมุทรปราการ",
"province_code": "11",
"province_type": "จังหวัด",
"region": "ภาคกลาง",
"utm_zone": "48N",
"zipcode": "10290",
"details": "168/6-7 ถนนสุขสวัสดิ์"
},
"host_agency": null,
"established_date": "2019-04-23",
"closed_date": null,
"bed": null,
"hdc": true,
"is_client_hospital": false,
"send_hdc_with_agency": false,
"client_health_office_type": null,
"contact": [
{
"id": 9353,
"contact_type": "โทรศัพท์",
"employee_contact": null,
"name": "xx-xxxxxxx"
},
{
"id": 9354,
"contact_type": "โทรศัพท์",
"employee_contact": {
"id": 4595,
"name": "xxxxx xxxxx",
"nickname": null,
"jobtitle": null,
"office": "มิตรไมตรีคลินิกเวชกรรม",
"active": true
},
"name": "xxx-xxxxxxx"
},
{
"id": 9355,
"contact_type": "อีเมล",
"employee_contact": {
"id": 4595,
"name": "xxxxx xxxxx",
"nickname": null,
"jobtitle": null,
"office": "มิตรไมตรีคลินิกเวชกรรม",
"active": true
},
"name": ""
}
],
"notes": [
{
"id": 59,
"note_category": "HDC",
"name": "HDC",
"details": "ขอส่งข้อมูลเอง"
}
]
}
]
}