ตัวชี้วัดสุขภาพ — รูปแบบการส่งออก JSON
เอกสารโครงสร้างตัวชี้วัดสุขภาพในการส่งออก JSON
Last updated: April 5, 2026
ในหน้านี้
ตัวชี้วัดสุขภาพ
ตัวชี้วัดสุขภาพแทนค่าวัดและจุดข้อมูลต่าง ๆ ที่เก็บจากแอป Apple Health และอุปกรณ์ที่เชื่อมต่อ ในการส่งออก JSON ตัวชี้วัดสุขภาพอยู่ในอาร์เรย์ metrics
รูปแบบชื่อตัวชี้วัด
ชื่อตัวชี้วัดทั้งหมดในการส่งออก JSON ใช้รูปแบบ snake_case (ตัวพิมพ์เล็กและขีดล่าง) ตัวอย่าง:
- "Step Count" กลายเป็น
"step_count" - "Blood Pressure" กลายเป็น
"blood_pressure" - "Heart Rate" กลายเป็น
"heart_rate" - "Walking + Running Distance" กลายเป็น
"walking_running_distance"
โครงสร้าง
อาร์เรย์ metrics มีอ็อบเจ็กต์แต่ละตัวแทนประเภทตัวชี้วัดหนึ่งประเภท ตัวชี้วัดส่วนใหญ่ใช้โครงสร้างทั่วไป:
{
"name": "step_count",
"units": "count",
"data": [
{
"qty": 8500,
"date": "2024-02-06 14:30:00 -0800"
}
]
}
ฟิลด์ทั่วไป
name(String): ชื่อตัวชี้วัดในรูปแบบ snake_case (เช่น "step_count", "heart_rate", "active_energy")units(String): หน่วยวัด (เช่น "count", "bpm", "kcal")data(Array): อาร์เรย์ของจุดข้อมูล แต่ละจุดมี:qty(Number): ค่าปริมาณdate(Date): เวลาในรูปแบบyyyy-MM-dd HH:mm:ss Z
รูปแบบพิเศษของตัวชี้วัด
บางตัวชี้วัดมีโครงสร้างเฉพาะที่ต่างจากรูปแบบทั่วไป:
ความดันโลหิต
การอ่านความดันมีทั้งค่าซิสโตลิกและไดแอสโตลิก:
{
"name": "blood_pressure",
"units": "mmHg",
"data": [
{
"date": "2024-02-06 14:30:00 -0800",
"systolic": 120,
"diastolic": 80
}
]
}
ฟิลด์:
systolic(Number): ค่าความดันช่วงหดตัว (ตัวบน)diastolic(Number): ค่าความดันช่วงคลายตัว (ตัวล่าง)
อัตราการเต้นของหัวใจ
ข้อมูลอัตราการเต้นมีค่าต่ำสุด เฉลี่ย และสูงสุด:
{
"name": "heart_rate",
"units": "bpm",
"data": [
{
"date": "2024-02-06 14:30:00 -0800",
"Min": 65,
"Avg": 72,
"Max": 85
}
]
}
ฟิลด์:
Min(Number): อัตราการเต้นต่ำสุดในช่วงวัดAvg(Number): อัตราการเต้นเฉลี่ยในช่วงวัดMax(Number): อัตราการเต้นสูงสุดในช่วงวัด
การวิเคราะห์การนอน
โครงสร้างข้อมูลการนอนเปลี่ยนตามว่าเปิดการรวมข้อมูลในการตั้งค่าการส่งออกหรือไม่
ข้อมูลการนอนที่รวมแล้ว
เมื่อเปิดการรวม ข้อมูลการนอนสรุปตามวัน:
{
"name": "sleep_analysis",
"units": "hr",
"data": [
{
"date": "2024-02-06",
"totalSleep": 7.5,
"asleep": 7.0,
"core": 3.5,
"deep": 1.5,
"rem": 2.0,
"sleepStart": "2024-02-05 23:00:00 -0800",
"sleepEnd": "2024-02-06 06:30:00 -0800",
"inBed": 8.0,
"inBedStart": "2024-02-05 22:45:00 -0800",
"inBedEnd": "2024-02-06 06:45:00 -0800"
}
]
}
ฟิลด์:
totalSleep(Number): เวลานอนหลับรวมเป็นชั่วโมงasleep(Number): เวลารวมในสถานะนอนหลับใด ๆcore(Number): ระยะเวลานอนหลับแบบ core เป็นชั่วโมงdeep(Number): ระยะเวลานอนหลับลึกเป็นชั่วโมงrem(Number): ระยะเวลา REM เป็นชั่วโมงsleepStart(Date): เวลาที่เริ่มนอนหลับจริงsleepEnd(Date): เวลาที่ตื่นนอนจริงinBed(Number): เวลารวมบนเตียงเป็นชั่วโมงinBedStart(Date): เวลาขึ้นเตียงinBedEnd(Date): เวลาลงจากเตียง
ข้อมูลการนอนที่ไม่รวม
เมื่อปิดการรวม จะรวมช่วงการนอนแต่ละช่วง:
{
"name": "sleep_analysis",
"units": "hr",
"data": [
{
"startDate": "2024-02-05 23:00:00 -0800",
"endDate": "2024-02-05 23:30:00 -0800",
"qty": 0.5,
"value": "Core",
"deep": 0.0,
"rem": 0.0,
"sleepStart": "2024-02-05 23:00:00 -0800",
"sleepEnd": "2024-02-06 06:30:00 -0800",
"inBed": 8.0,
"inBedStart": "2024-02-05 22:45:00 -0800",
"inBedEnd": "2024-02-06 06:45:00 -0800"
}
]
}
ฟิลด์:
startDate(Date): เวลาเริ่มช่วงการนอนendDate(Date): เวลาสิ้นสุดช่วงการนอนqty(Number): ระยะเวลาของช่วงเป็นชั่วโมงvalue(String): สถานะการนอน — หนึ่งในค่า:"Awake""Asleep"(ระยะการนอนที่ยังไม่จำแนกประเภท)"In Bed""Core""REM""Deep""Unspecified"
หมายเหตุ: "Asleep" หมายถึงระยะการนอนที่ยังไม่จำแนกประเภท (ไม่ใช่เวลานอนหลับรวม) อาจเกิดหากแหล่งข้อมูลไม่รองรับการติดตามระยะการนอน
น้ำตาลในเลือด
การอ่านน้ำตาลในเลือดรวมข้อมูลเวลามื้อ:
{
"name": "blood_glucose",
"units": "mg/dL",
"data": [
{
"date": "2024-02-06 08:00:00 -0800",
"qty": 95,
"mealTime": "Before Meal"
}
]
}
ฟิลด์:
qty(Number): ระดับน้ำตาลในเลือดmealTime(String): หนึ่งในค่า:"Before Meal""After Meal""Unspecified"
กิจกรรมทางเพศ
รายการกิจกรรมทางเพศติดตามการใช้การป้องกัน:
{
"name": "sexual_activity",
"units": "count",
"data": [
{
"date": "2024-02-06 20:00:00 -0800",
"Unspecified": 0,
"Protection Used": 1,
"Protection Not Used": 0
}
]
}
ฟิลด์:
Unspecified(Number): จำนวนเมื่อสถานะการป้องกันไม่ทราบProtection Used(Number): จำนวนเมื่อใช้การป้องกันProtection Not Used(Number): จำนวนเมื่อไม่ใช้การป้องกัน
การล้างมือ
เหตุการณ์ล้างมือติดตามสถานะการทำครบ:
{
"name": "handwashing",
"units": "count",
"data": [
{
"date": "2024-02-06 12:00:00 -0800",
"qty": 1,
"value": "Complete"
}
]
}
ฟิลด์:
qty(Number): จำนวนครั้งที่ล้างมือvalue(String): หนึ่งในค่า:"Complete""Incomplete"
การแปรงฟัน
เหตุการณ์แปรงฟันติดตามสถานะการทำครบ:
{
"name": "toothbrushing",
"units": "count",
"data": [
{
"date": "2024-02-06 08:00:00 -0800",
"qty": 1,
"value": "Complete"
}
]
}
ฟิลด์:
qty(Number): จำนวนครั้งที่แปรงฟันvalue(String): หนึ่งในค่า:"Complete""Incomplete"
การให้อินซูลิน
รายการการให้อินซูลินรวมเหตุผลของการให้:
{
"name": "insulin_delivery",
"units": "IU",
"data": [
{
"date": "2024-02-06 08:00:00 -0800",
"qty": 5,
"reason": "Bolus"
}
]
}
ฟิลด์:
qty(Number): ปริมาณอินซูลินที่ให้reason(String): หนึ่งในค่า:"Bolus"(อินซูลินก่อน/หลังมื้อ)"Basal"(อินซูลินพื้นฐาน)
ตัวชี้วัดสุขภาพที่พบบ่อย
ตัวอย่างตัวชี้วัดที่ส่งออกบ่อย (ชื่อทั้งหมดเป็น snake_case):
- step_count — จำนวนก้าวรายวัน
- walking_running_distance — ระยะทางที่เคลื่อนที่
- active_energy — แคลอรี่ที่เผาผลาญจากกิจกรรม
- resting_heart_rate — อัตราการเต้นขณะพัก
- heart_rate — การวัดอัตราการเต้น
- respiratory_rate — อัตราการหายใจ
- body_temperature — การวัดอุณหภูมิร่างกาย
- blood_oxygen_saturation — ระดับ SpO₂
- weight_&_body_mass — การวัดน้ำหนัก
- body_mass_index — ค่า BMI ที่คำนวณ
- height — การวัดส่วนสูง
- dietary_water — ปริมาณของเหลวที่ดื่ม
- mindful_minutes — เวลาทำสมาธิหรือมีสติ
เคล็ดลับ
- การจัดกลุ่มตามเวลา: ใช้การตั้งค่าการจัดกลุ่มตามเวลาในการกำหนดการส่งออกเพื่อควบคุมการรวมข้อมูล (ตามวินาที นาที ชั่วโมง วัน ฯลฯ)
- การรวมข้อมูล: เปิดการรวมข้อมูลเพื่อสรุปการนอนและตัวชี้วัดอื่นตามวันเพื่อวิเคราะห์ง่ายขึ้น
- การส่งออกแบบเลือก: เลือกเฉพาะตัวชี้วัดที่ต้องการเพื่อลดขนาดไฟล์และเวลาประมวลผล