ตัวชี้วัดสุขภาพ — รูปแบบการส่งออก 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 — เวลาทำสมาธิหรือมีสติ

เคล็ดลับ

  • การจัดกลุ่มตามเวลา: ใช้การตั้งค่าการจัดกลุ่มตามเวลาในการกำหนดการส่งออกเพื่อควบคุมการรวมข้อมูล (ตามวินาที นาที ชั่วโมง วัน ฯลฯ)
  • การรวมข้อมูล: เปิดการรวมข้อมูลเพื่อสรุปการนอนและตัวชี้วัดอื่นตามวันเพื่อวิเคราะห์ง่ายขึ้น
  • การส่งออกแบบเลือก: เลือกเฉพาะตัวชี้วัดที่ต้องการเพื่อลดขนาดไฟล์และเวลาประมวลผล

เอกสารที่เกี่ยวข้อง