Soigneur FHIR Implementation Guide
0.1.0 - ci-build Germany flag

Soigneur FHIR Implementation Guide - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

: Soigneur Observation Codes (cycling metrics without LOINC) - JSON Representation

Active as of 2026-07-19

Raw json | Download

{
  "resourceType" : "CodeSystem",
  "id" : "cc-observations",
  "text" : {
    "status" : "generated",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: CodeSystem cc-observations</b></p><a name=\"cc-observations\"> </a><a name=\"hccc-observations\"> </a><p>This case-sensitive code system <code>https://fhir.soigneur.coach/fhir/CodeSystem/cc-observations</code> defines the following codes:</p><table class=\"codes\"><tr><td style=\"white-space:nowrap\"><b>Code</b></td><td><b>Display</b></td><td><b>Definition</b></td></tr><tr><td style=\"white-space:nowrap\">ftp<a name=\"cc-observations-ftp\"> </a></td><td>Functional Threshold Power</td><td>Athlete-set threshold-power anchor (W).</td></tr><tr><td style=\"white-space:nowrap\">eftp<a name=\"cc-observations-eftp\"> </a></td><td>Estimated FTP</td><td>Ratchet-estimated FTP from the power-duration curve (W).</td></tr><tr><td style=\"white-space:nowrap\">w-prime<a name=\"cc-observations-w-prime\"> </a></td><td>W-prime (anaerobic work capacity)</td><td>Anaerobic work capacity above CP (J).</td></tr><tr><td style=\"white-space:nowrap\">cp<a name=\"cc-observations-cp\"> </a></td><td>Critical power</td><td>Morton 2-parameter critical-power estimate (W).</td></tr><tr><td style=\"white-space:nowrap\">p-max<a name=\"cc-observations-p-max\"> </a></td><td>Maximal aerobic power</td><td>Maximal aerobic power (W).</td></tr><tr><td style=\"white-space:nowrap\">avg-power<a name=\"cc-observations-avg-power\"> </a></td><td>Average power</td><td>Per-activity mean power (W).</td></tr><tr><td style=\"white-space:nowrap\">np<a name=\"cc-observations-np\"> </a></td><td>Weighted Power</td><td>30 s-smoothed 4th-power power (W). Internal alias: NP.</td></tr><tr><td style=\"white-space:nowrap\">if<a name=\"cc-observations-if\"> </a></td><td>Intensity</td><td>Weighted Power / FTP ratio. Internal alias: IF.</td></tr><tr><td style=\"white-space:nowrap\">tss<a name=\"cc-observations-tss\"> </a></td><td>Load</td><td>Per-activity training-load score. Internal alias: TSS.</td></tr><tr><td style=\"white-space:nowrap\">ctl<a name=\"cc-observations-ctl\"> </a></td><td>Fitness</td><td>42-day EWMA of daily Load. Internal alias: CTL.</td></tr><tr><td style=\"white-space:nowrap\">atl<a name=\"cc-observations-atl\"> </a></td><td>Fatigue</td><td>7-day EWMA of daily Load. Internal alias: ATL.</td></tr><tr><td style=\"white-space:nowrap\">tsb<a name=\"cc-observations-tsb\"> </a></td><td>Form</td><td>Fitness minus Fatigue. Internal alias: TSB.</td></tr><tr><td style=\"white-space:nowrap\">ramp-rate<a name=\"cc-observations-ramp-rate\"> </a></td><td>Fitness ramp rate</td><td>Change in Fitness per week.</td></tr><tr><td style=\"white-space:nowrap\">cadence<a name=\"cc-observations-cadence\"> </a></td><td>Cadence</td><td>Pedalling cadence (rpm).</td></tr><tr><td style=\"white-space:nowrap\">avg-cadence<a name=\"cc-observations-avg-cadence\"> </a></td><td>Average cadence</td><td>Per-activity mean cadence (rpm).</td></tr><tr><td style=\"white-space:nowrap\">distance<a name=\"cc-observations-distance\"> </a></td><td>Distance</td><td>Per-activity distance (m).</td></tr><tr><td style=\"white-space:nowrap\">elevation-gain<a name=\"cc-observations-elevation-gain\"> </a></td><td>Elevation gain</td><td>Per-activity elevation gain (m).</td></tr><tr><td style=\"white-space:nowrap\">carbs-used<a name=\"cc-observations-carbs-used\"> </a></td><td>Carbohydrates oxidized</td><td>Estimated carbohydrate oxidation (g).</td></tr><tr><td style=\"white-space:nowrap\">variability-index<a name=\"cc-observations-variability-index\"> </a></td><td>Variability index</td><td>Weighted Power / average power.</td></tr><tr><td style=\"white-space:nowrap\">decoupling-pw-hr<a name=\"cc-observations-decoupling-pw-hr\"> </a></td><td>Pw:Hr decoupling</td><td>Aerobic decoupling: first-half vs second-half power:HR drift (%).</td></tr><tr><td style=\"white-space:nowrap\">polarization-index<a name=\"cc-observations-polarization-index\"> </a></td><td>Polarization index</td><td>Log-based intensity-distribution index.</td></tr><tr><td style=\"white-space:nowrap\">efficiency-factor<a name=\"cc-observations-efficiency-factor\"> </a></td><td>Efficiency factor</td><td>Weighted Power / average HR.</td></tr><tr><td style=\"white-space:nowrap\">wbal-depletion-max<a name=\"cc-observations-wbal-depletion-max\"> </a></td><td>Max W-prime balance depletion</td><td>Peak W-prime depletion over the ride (J).</td></tr><tr><td style=\"white-space:nowrap\">lr-balance<a name=\"cc-observations-lr-balance\"> </a></td><td>Left-right power balance</td><td>Right-side power share (%).</td></tr><tr><td style=\"white-space:nowrap\">power-zone-time<a name=\"cc-observations-power-zone-time\"> </a></td><td>Time in power zone</td><td>Time spent in a power zone (s), one component per zone.</td></tr><tr><td style=\"white-space:nowrap\">hr-zone-time<a name=\"cc-observations-hr-zone-time\"> </a></td><td>Time in heart-rate zone</td><td>Time spent in an HR zone (s), one component per zone.</td></tr><tr><td style=\"white-space:nowrap\">hrv-rmssd<a name=\"cc-observations-hrv-rmssd\"> </a></td><td>HRV rMSSD (overnight)</td><td>Overnight rMSSD (ms); no LOINC exists, method = overnight-rmssd.</td></tr><tr><td style=\"white-space:nowrap\">body-battery-charged<a name=\"cc-observations-body-battery-charged\"> </a></td><td>Body Battery charged</td><td>Garmin Body Battery charge gained (0-100).</td></tr><tr><td style=\"white-space:nowrap\">body-battery-low<a name=\"cc-observations-body-battery-low\"> </a></td><td>Body Battery low</td><td>Garmin Body Battery daily low (0-100).</td></tr><tr><td style=\"white-space:nowrap\">body-battery-most-recent<a name=\"cc-observations-body-battery-most-recent\"> </a></td><td>Body Battery most recent</td><td>Most recent Garmin Body Battery (0-100).</td></tr><tr><td style=\"white-space:nowrap\">garmin-stress-avg<a name=\"cc-observations-garmin-stress-avg\"> </a></td><td>Garmin stress (average)</td><td>Garmin all-day stress average (0-100).</td></tr><tr><td style=\"white-space:nowrap\">garmin-stress-max<a name=\"cc-observations-garmin-stress-max\"> </a></td><td>Garmin stress (max)</td><td>Garmin all-day stress maximum (0-100).</td></tr><tr><td style=\"white-space:nowrap\">garmin-stress-duration<a name=\"cc-observations-garmin-stress-duration\"> </a></td><td>Garmin stress duration</td><td>Garmin all-day stress duration (s).</td></tr><tr><td style=\"white-space:nowrap\">garmin-sleep-score<a name=\"cc-observations-garmin-sleep-score\"> </a></td><td>Garmin sleep score</td><td>Garmin sleep score (0-100).</td></tr><tr><td style=\"white-space:nowrap\">garmin-hrv-status<a name=\"cc-observations-garmin-hrv-status\"> </a></td><td>Garmin HRV status</td><td>Garmin HRV status: BALANCED / UNBALANCED / LOW / HIGH.</td></tr><tr><td style=\"white-space:nowrap\">body-water-pct<a name=\"cc-observations-body-water-pct\"> </a></td><td>Body water percentage</td><td>Scale-derived body water (%).</td></tr><tr><td style=\"white-space:nowrap\">muscle-mass<a name=\"cc-observations-muscle-mass\"> </a></td><td>Muscle mass</td><td>Scale-derived muscle mass (kg).</td></tr><tr><td style=\"white-space:nowrap\">bone-mass<a name=\"cc-observations-bone-mass\"> </a></td><td>Bone mass</td><td>Scale-derived bone mass (kg).</td></tr><tr><td style=\"white-space:nowrap\">visceral-fat<a name=\"cc-observations-visceral-fat\"> </a></td><td>Visceral fat</td><td>Scale-derived visceral-fat rating.</td></tr><tr><td style=\"white-space:nowrap\">metabolic-age<a name=\"cc-observations-metabolic-age\"> </a></td><td>Metabolic age</td><td>Scale-derived metabolic age (a).</td></tr><tr><td style=\"white-space:nowrap\">training-block-review<a name=\"cc-observations-training-block-review\"> </a></td><td>Training-block review</td><td>Composed plan-outcome verdict over a training block.</td></tr><tr><td style=\"white-space:nowrap\">experiment-review<a name=\"cc-observations-experiment-review\"> </a></td><td>Experiment review</td><td>Composed outcome verdict over a fueling/position/equipment experiment.</td></tr><tr><td style=\"white-space:nowrap\">rolling-baseline<a name=\"cc-observations-rolling-baseline\"> </a></td><td>Rolling baseline</td><td>Rolling-baseline derived value (method marker).</td></tr></table></div>"
  },
  "url" : "https://fhir.soigneur.coach/fhir/CodeSystem/cc-observations",
  "version" : "0.1.0",
  "name" : "CcObservations",
  "title" : "Soigneur Observation Codes (cycling metrics without LOINC)",
  "status" : "active",
  "experimental" : false,
  "date" : "2026-07-19T17:47:36+00:00",
  "publisher" : "Soigneur",
  "contact" : [
    {
      "name" : "Soigneur",
      "telecom" : [
        {
          "system" : "url",
          "value" : "https://soigneur.coach"
        }
      ]
    }
  ],
  "description" : "Cycling / training metrics that have no LOINC concept (05 14.4). The\n`Code` identifiers are internal, stable machine keys (`np`, `if`, `tss`, `ctl`, `atl`,\n`tsb`, …). The `Display` strings are the trademark-safe product vocabulary (15 14.4). The\n`Code` identifiers are internal, stable machine keys (`np`, `if`, `tss`, `ctl`, `atl`,\n`tsb`, …). The `Display` strings are the trademark-safe product vocabulary (15 jurisdiction" : [
    {
      "coding" : [
        {
          "system" : "urn:iso:std:iso:3166",
          "code" : "DE",
          "display" : "Germany"
        }
      ]
    }
  ],
  "copyright" : "Copyright (c) Soigneur. Licensed under CC0-1.0 (public domain dedication). FHIR(R) is the registered trademark of HL7 and is used with permission.",
  "caseSensitive" : true,
  "content" : "complete",
  "count" : 43,
  "concept" : [
    {
      "code" : "ftp",
      "display" : "Functional Threshold Power",
      "definition" : "Athlete-set threshold-power anchor (W)."
    },
    {
      "code" : "eftp",
      "display" : "Estimated FTP",
      "definition" : "Ratchet-estimated FTP from the power-duration curve (W)."
    },
    {
      "code" : "w-prime",
      "display" : "W-prime (anaerobic work capacity)",
      "definition" : "Anaerobic work capacity above CP (J)."
    },
    {
      "code" : "cp",
      "display" : "Critical power",
      "definition" : "Morton 2-parameter critical-power estimate (W)."
    },
    {
      "code" : "p-max",
      "display" : "Maximal aerobic power",
      "definition" : "Maximal aerobic power (W)."
    },
    {
      "code" : "avg-power",
      "display" : "Average power",
      "definition" : "Per-activity mean power (W)."
    },
    {
      "code" : "np",
      "display" : "Weighted Power",
      "definition" : "30 s-smoothed 4th-power power (W). Internal alias: NP."
    },
    {
      "code" : "if",
      "display" : "Intensity",
      "definition" : "Weighted Power / FTP ratio. Internal alias: IF."
    },
    {
      "code" : "tss",
      "display" : "Load",
      "definition" : "Per-activity training-load score. Internal alias: TSS."
    },
    {
      "code" : "ctl",
      "display" : "Fitness",
      "definition" : "42-day EWMA of daily Load. Internal alias: CTL."
    },
    {
      "code" : "atl",
      "display" : "Fatigue",
      "definition" : "7-day EWMA of daily Load. Internal alias: ATL."
    },
    {
      "code" : "tsb",
      "display" : "Form",
      "definition" : "Fitness minus Fatigue. Internal alias: TSB."
    },
    {
      "code" : "ramp-rate",
      "display" : "Fitness ramp rate",
      "definition" : "Change in Fitness per week."
    },
    {
      "code" : "cadence",
      "display" : "Cadence",
      "definition" : "Pedalling cadence (rpm)."
    },
    {
      "code" : "avg-cadence",
      "display" : "Average cadence",
      "definition" : "Per-activity mean cadence (rpm)."
    },
    {
      "code" : "distance",
      "display" : "Distance",
      "definition" : "Per-activity distance (m)."
    },
    {
      "code" : "elevation-gain",
      "display" : "Elevation gain",
      "definition" : "Per-activity elevation gain (m)."
    },
    {
      "code" : "carbs-used",
      "display" : "Carbohydrates oxidized",
      "definition" : "Estimated carbohydrate oxidation (g)."
    },
    {
      "code" : "variability-index",
      "display" : "Variability index",
      "definition" : "Weighted Power / average power."
    },
    {
      "code" : "decoupling-pw-hr",
      "display" : "Pw:Hr decoupling",
      "definition" : "Aerobic decoupling: first-half vs second-half power:HR drift (%)."
    },
    {
      "code" : "polarization-index",
      "display" : "Polarization index",
      "definition" : "Log-based intensity-distribution index."
    },
    {
      "code" : "efficiency-factor",
      "display" : "Efficiency factor",
      "definition" : "Weighted Power / average HR."
    },
    {
      "code" : "wbal-depletion-max",
      "display" : "Max W-prime balance depletion",
      "definition" : "Peak W-prime depletion over the ride (J)."
    },
    {
      "code" : "lr-balance",
      "display" : "Left-right power balance",
      "definition" : "Right-side power share (%)."
    },
    {
      "code" : "power-zone-time",
      "display" : "Time in power zone",
      "definition" : "Time spent in a power zone (s), one component per zone."
    },
    {
      "code" : "hr-zone-time",
      "display" : "Time in heart-rate zone",
      "definition" : "Time spent in an HR zone (s), one component per zone."
    },
    {
      "code" : "hrv-rmssd",
      "display" : "HRV rMSSD (overnight)",
      "definition" : "Overnight rMSSD (ms); no LOINC exists, method = overnight-rmssd."
    },
    {
      "code" : "body-battery-charged",
      "display" : "Body Battery charged",
      "definition" : "Garmin Body Battery charge gained (0-100)."
    },
    {
      "code" : "body-battery-low",
      "display" : "Body Battery low",
      "definition" : "Garmin Body Battery daily low (0-100)."
    },
    {
      "code" : "body-battery-most-recent",
      "display" : "Body Battery most recent",
      "definition" : "Most recent Garmin Body Battery (0-100)."
    },
    {
      "code" : "garmin-stress-avg",
      "display" : "Garmin stress (average)",
      "definition" : "Garmin all-day stress average (0-100)."
    },
    {
      "code" : "garmin-stress-max",
      "display" : "Garmin stress (max)",
      "definition" : "Garmin all-day stress maximum (0-100)."
    },
    {
      "code" : "garmin-stress-duration",
      "display" : "Garmin stress duration",
      "definition" : "Garmin all-day stress duration (s)."
    },
    {
      "code" : "garmin-sleep-score",
      "display" : "Garmin sleep score",
      "definition" : "Garmin sleep score (0-100)."
    },
    {
      "code" : "garmin-hrv-status",
      "display" : "Garmin HRV status",
      "definition" : "Garmin HRV status: BALANCED / UNBALANCED / LOW / HIGH."
    },
    {
      "code" : "body-water-pct",
      "display" : "Body water percentage",
      "definition" : "Scale-derived body water (%)."
    },
    {
      "code" : "muscle-mass",
      "display" : "Muscle mass",
      "definition" : "Scale-derived muscle mass (kg)."
    },
    {
      "code" : "bone-mass",
      "display" : "Bone mass",
      "definition" : "Scale-derived bone mass (kg)."
    },
    {
      "code" : "visceral-fat",
      "display" : "Visceral fat",
      "definition" : "Scale-derived visceral-fat rating."
    },
    {
      "code" : "metabolic-age",
      "display" : "Metabolic age",
      "definition" : "Scale-derived metabolic age (a)."
    },
    {
      "code" : "training-block-review",
      "display" : "Training-block review",
      "definition" : "Composed plan-outcome verdict over a training block."
    },
    {
      "code" : "experiment-review",
      "display" : "Experiment review",
      "definition" : "Composed outcome verdict over a fueling/position/equipment experiment."
    },
    {
      "code" : "rolling-baseline",
      "display" : "Rolling baseline",
      "definition" : "Rolling-baseline derived value (method marker)."
    }
  ]
}