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

Extension: Athlete home location

Official URL: https://fhir.soigneur.coach/fhir/StructureDefinition/cc-ext-location Version: 0.1.0
Draft as of 2026-11-14 Computable Name: CcExtLocation

Copyright/Legal: Copyright (c) Soigneur. Licensed under CC0-1.0 (public domain dedication). FHIR(R) is the registered trademark of HL7 and is used with permission.

Where the athlete lives — city and/or postal code plus ISO 3166-1 alpha-2 country, with the offline-resolved label, centroid coordinates (4 decimals, ~11 m — the same precision cap MET Norway enforces on forecast queries; never a GPS position) and the resolved IANA timezone. Coach-memorized from conversation, the optional onboarding question, or the settings editor (ADR 0100); drives the local weather guidance (02 G.3, issue #252). Geocoding is offline (vendored GeoNames data, ADR 0100) — location strings never egress. At least one of postalCode / city must be present. Live-class: never dirties Frame Core (ADR 0040 6).

Context of Use

    This extension may be used on the following element(s)

Usage info

Usages:

You can also check for usages in the FHIR IG Statistics

Formal Views of Extension Content

Description of Profiles, Differentials, Snapshots, and how the XML and JSON presentations work.

This structure is derived from Extension

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Extension C 0..* Extension Extension
Constraints: cc-inv-location-has-place
Extension.extension 1..* Extension Extension
Extension.Slices for extension Content/Rules for all slices
Extension.Slices for extension.extension:postalCode 0..1 Extension Postal code as written by the athlete (country-specific format, never reformatted in code)
Extension.Slices for extension.extension:postalCode.extension 0..0 Extension
Extension.Slices for extension.extension:postalCode.url 1..1 uri "postalCode"
Extension.Slices for extension.extension:postalCode.value[x] 1..1 string Value of extension
Extension.Slices for extension.extension:city 0..1 Extension City / town (the offline resolver's name when it matched)
Extension.Slices for extension.extension:city.extension 0..0 Extension
Extension.Slices for extension.extension:city.url 1..1 uri "city"
Extension.Slices for extension.extension:city.value[x] 1..1 string Value of extension
Extension.Slices for extension.extension:country 1..1 Extension ISO 3166-1 alpha-2 country code — the required disambiguator (city or postal alone is ambiguous)
Extension.Slices for extension.extension:country.extension 0..0 Extension
Extension.Slices for extension.extension:country.url 1..1 uri "country"
Extension.Slices for extension.extension:country.value[x] 1..1 code Value of extension
Binding: urn:iso:std:iso:3166 (required)
Extension.Slices for extension.extension:label 0..1 Extension Human-readable resolved place label ('Berlin, Germany') — what the coach echoes back
Extension.Slices for extension.extension:label.extension 0..0 Extension
Extension.Slices for extension.extension:label.url 1..1 uri "label"
Extension.Slices for extension.extension:label.value[x] 1..1 string Value of extension
Extension.Slices for extension.extension:latitude 0..1 Extension Resolved centroid latitude, 4 decimals
Extension.Slices for extension.extension:latitude.extension 0..0 Extension
Extension.Slices for extension.extension:latitude.url 1..1 uri "latitude"
Extension.Slices for extension.extension:latitude.value[x] 1..1 decimal Value of extension
Extension.Slices for extension.extension:longitude 0..1 Extension Resolved centroid longitude, 4 decimals
Extension.Slices for extension.extension:longitude.extension 0..0 Extension
Extension.Slices for extension.extension:longitude.url 1..1 uri "longitude"
Extension.Slices for extension.extension:longitude.value[x] 1..1 decimal Value of extension
Extension.Slices for extension.extension:timezone 0..1 Extension Resolved IANA timezone — the moved-abroad cross-check against cc-ext-timezone
Extension.Slices for extension.extension:timezone.extension 0..0 Extension
Extension.Slices for extension.extension:timezone.url 1..1 uri "timezone"
Extension.Slices for extension.extension:timezone.value[x] 1..1 string Value of extension
Extension.url 1..1 uri "https://fhir.soigneur.coach/fhir/StructureDefinition/cc-ext-location"

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraints    Filter: doco
Extension C 0..* Extension Extension
Constraints: cc-inv-location-has-place
Extension.id 0..1 string Unique id for inter-element referencing
Extension.Slices for extension 1..* Extension Extension
Slice: Unordered, Open by value:url
Extension.Slices for extension.extension:postalCode 0..1 Extension Postal code as written by the athlete (country-specific format, never reformatted in code)
Extension.Slices for extension.extension:postalCode.id 0..1 string Unique id for inter-element referencing
Extension.Slices for extension.extension:postalCode.extension 0..0 Extension
Slice: Unordered, Open by value:url
Extension.Slices for extension.extension:postalCode.url 1..1 uri "postalCode"
Extension.Slices for extension.extension:postalCode.value[x] 1..1 string Value of extension
Extension.Slices for extension.extension:city 0..1 Extension City / town (the offline resolver's name when it matched)
Extension.Slices for extension.extension:city.id 0..1 string Unique id for inter-element referencing
Extension.Slices for extension.extension:city.extension 0..0 Extension
Slice: Unordered, Open by value:url
Extension.Slices for extension.extension:city.url 1..1 uri "city"
Extension.Slices for extension.extension:city.value[x] 1..1 string Value of extension
Extension.Slices for extension.extension:country 1..1 Extension ISO 3166-1 alpha-2 country code — the required disambiguator (city or postal alone is ambiguous)
Extension.Slices for extension.extension:country.id 0..1 string Unique id for inter-element referencing
Extension.Slices for extension.extension:country.extension 0..0 Extension
Slice: Unordered, Open by value:url
Extension.Slices for extension.extension:country.url 1..1 uri "country"
Extension.Slices for extension.extension:country.value[x] 1..1 code Value of extension
Binding: urn:iso:std:iso:3166 (required)
Extension.Slices for extension.extension:label 0..1 Extension Human-readable resolved place label ('Berlin, Germany') — what the coach echoes back
Extension.Slices for extension.extension:label.id 0..1 string Unique id for inter-element referencing
Extension.Slices for extension.extension:label.extension 0..0 Extension
Slice: Unordered, Open by value:url
Extension.Slices for extension.extension:label.url 1..1 uri "label"
Extension.Slices for extension.extension:label.value[x] 1..1 string Value of extension
Extension.Slices for extension.extension:latitude 0..1 Extension Resolved centroid latitude, 4 decimals
Extension.Slices for extension.extension:latitude.id 0..1 string Unique id for inter-element referencing
Extension.Slices for extension.extension:latitude.extension 0..0 Extension
Slice: Unordered, Open by value:url
Extension.Slices for extension.extension:latitude.url 1..1 uri "latitude"
Extension.Slices for extension.extension:latitude.value[x] 1..1 decimal Value of extension
Extension.Slices for extension.extension:longitude 0..1 Extension Resolved centroid longitude, 4 decimals
Extension.Slices for extension.extension:longitude.id 0..1 string Unique id for inter-element referencing
Extension.Slices for extension.extension:longitude.extension 0..0 Extension
Slice: Unordered, Open by value:url
Extension.Slices for extension.extension:longitude.url 1..1 uri "longitude"
Extension.Slices for extension.extension:longitude.value[x] 1..1 decimal Value of extension
Extension.Slices for extension.extension:timezone 0..1 Extension Resolved IANA timezone — the moved-abroad cross-check against cc-ext-timezone
Extension.Slices for extension.extension:timezone.id 0..1 string Unique id for inter-element referencing
Extension.Slices for extension.extension:timezone.extension 0..0 Extension
Slice: Unordered, Open by value:url
Extension.Slices for extension.extension:timezone.url 1..1 uri "timezone"
Extension.Slices for extension.extension:timezone.value[x] 1..1 string Value of extension
Extension.url 1..1 uri "https://fhir.soigneur.coach/fhir/StructureDefinition/cc-ext-location"

doco Documentation for this format

This structure is derived from Extension

Summary

Complex Extension: Where the athlete lives — city and/or postal code plus ISO 3166-1 alpha-2 country, with the offline-resolved label, centroid coordinates (4 decimals, ~11 m — the same precision cap MET Norway enforces on forecast queries; never a GPS position) and the resolved IANA timezone. Coach-memorized from conversation, the optional onboarding question, or the settings editor (ADR 0100); drives the local weather guidance (02 G.3, issue #252). Geocoding is offline (vendored GeoNames data, ADR 0100) — location strings never egress. At least one of postalCode / city must be present. Live-class: never dirties Frame Core (ADR 0040 6).

  • postalCode: string: An Extension
  • city: string: An Extension
  • country: code: An Extension
  • label: string: An Extension
  • latitude: decimal: An Extension
  • longitude: decimal: An Extension
  • timezone: string: An Extension

Differential View

This structure is derived from Extension

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Extension C 0..* Extension Extension
Constraints: cc-inv-location-has-place
Extension.extension 1..* Extension Extension
Extension.Slices for extension Content/Rules for all slices
Extension.Slices for extension.extension:postalCode 0..1 Extension Postal code as written by the athlete (country-specific format, never reformatted in code)
Extension.Slices for extension.extension:postalCode.extension 0..0 Extension
Extension.Slices for extension.extension:postalCode.url 1..1 uri "postalCode"
Extension.Slices for extension.extension:postalCode.value[x] 1..1 string Value of extension
Extension.Slices for extension.extension:city 0..1 Extension City / town (the offline resolver's name when it matched)
Extension.Slices for extension.extension:city.extension 0..0 Extension
Extension.Slices for extension.extension:city.url 1..1 uri "city"
Extension.Slices for extension.extension:city.value[x] 1..1 string Value of extension
Extension.Slices for extension.extension:country 1..1 Extension ISO 3166-1 alpha-2 country code — the required disambiguator (city or postal alone is ambiguous)
Extension.Slices for extension.extension:country.extension 0..0 Extension
Extension.Slices for extension.extension:country.url 1..1 uri "country"
Extension.Slices for extension.extension:country.value[x] 1..1 code Value of extension
Binding: urn:iso:std:iso:3166 (required)
Extension.Slices for extension.extension:label 0..1 Extension Human-readable resolved place label ('Berlin, Germany') — what the coach echoes back
Extension.Slices for extension.extension:label.extension 0..0 Extension
Extension.Slices for extension.extension:label.url 1..1 uri "label"
Extension.Slices for extension.extension:label.value[x] 1..1 string Value of extension
Extension.Slices for extension.extension:latitude 0..1 Extension Resolved centroid latitude, 4 decimals
Extension.Slices for extension.extension:latitude.extension 0..0 Extension
Extension.Slices for extension.extension:latitude.url 1..1 uri "latitude"
Extension.Slices for extension.extension:latitude.value[x] 1..1 decimal Value of extension
Extension.Slices for extension.extension:longitude 0..1 Extension Resolved centroid longitude, 4 decimals
Extension.Slices for extension.extension:longitude.extension 0..0 Extension
Extension.Slices for extension.extension:longitude.url 1..1 uri "longitude"
Extension.Slices for extension.extension:longitude.value[x] 1..1 decimal Value of extension
Extension.Slices for extension.extension:timezone 0..1 Extension Resolved IANA timezone — the moved-abroad cross-check against cc-ext-timezone
Extension.Slices for extension.extension:timezone.extension 0..0 Extension
Extension.Slices for extension.extension:timezone.url 1..1 uri "timezone"
Extension.Slices for extension.extension:timezone.value[x] 1..1 string Value of extension
Extension.url 1..1 uri "https://fhir.soigneur.coach/fhir/StructureDefinition/cc-ext-location"
Extension.value[x] 0..0 Value of extension

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Extension C 0..* Extension Extension
Constraints: cc-inv-location-has-place
Extension.id 0..1 string Unique id for inter-element referencing
Extension.Slices for extension 1..* Extension Extension
Slice: Unordered, Open by value:url
Extension.Slices for extension.extension:postalCode 0..1 Extension Postal code as written by the athlete (country-specific format, never reformatted in code)
Extension.Slices for extension.extension:postalCode.id 0..1 string Unique id for inter-element referencing
Extension.Slices for extension.extension:postalCode.extension 0..0 Extension
Slice: Unordered, Open by value:url
Extension.Slices for extension.extension:postalCode.url 1..1 uri "postalCode"
Extension.Slices for extension.extension:postalCode.value[x] 1..1 string Value of extension
Extension.Slices for extension.extension:city 0..1 Extension City / town (the offline resolver's name when it matched)
Extension.Slices for extension.extension:city.id 0..1 string Unique id for inter-element referencing
Extension.Slices for extension.extension:city.extension 0..0 Extension
Slice: Unordered, Open by value:url
Extension.Slices for extension.extension:city.url 1..1 uri "city"
Extension.Slices for extension.extension:city.value[x] 1..1 string Value of extension
Extension.Slices for extension.extension:country 1..1 Extension ISO 3166-1 alpha-2 country code — the required disambiguator (city or postal alone is ambiguous)
Extension.Slices for extension.extension:country.id 0..1 string Unique id for inter-element referencing
Extension.Slices for extension.extension:country.extension 0..0 Extension
Slice: Unordered, Open by value:url
Extension.Slices for extension.extension:country.url 1..1 uri "country"
Extension.Slices for extension.extension:country.value[x] 1..1 code Value of extension
Binding: urn:iso:std:iso:3166 (required)
Extension.Slices for extension.extension:label 0..1 Extension Human-readable resolved place label ('Berlin, Germany') — what the coach echoes back
Extension.Slices for extension.extension:label.id 0..1 string Unique id for inter-element referencing
Extension.Slices for extension.extension:label.extension 0..0 Extension
Slice: Unordered, Open by value:url
Extension.Slices for extension.extension:label.url 1..1 uri "label"
Extension.Slices for extension.extension:label.value[x] 1..1 string Value of extension
Extension.Slices for extension.extension:latitude 0..1 Extension Resolved centroid latitude, 4 decimals
Extension.Slices for extension.extension:latitude.id 0..1 string Unique id for inter-element referencing
Extension.Slices for extension.extension:latitude.extension 0..0 Extension
Slice: Unordered, Open by value:url
Extension.Slices for extension.extension:latitude.url 1..1 uri "latitude"
Extension.Slices for extension.extension:latitude.value[x] 1..1 decimal Value of extension
Extension.Slices for extension.extension:longitude 0..1 Extension Resolved centroid longitude, 4 decimals
Extension.Slices for extension.extension:longitude.id 0..1 string Unique id for inter-element referencing
Extension.Slices for extension.extension:longitude.extension 0..0 Extension
Slice: Unordered, Open by value:url
Extension.Slices for extension.extension:longitude.url 1..1 uri "longitude"
Extension.Slices for extension.extension:longitude.value[x] 1..1 decimal Value of extension
Extension.Slices for extension.extension:timezone 0..1 Extension Resolved IANA timezone — the moved-abroad cross-check against cc-ext-timezone
Extension.Slices for extension.extension:timezone.id 0..1 string Unique id for inter-element referencing
Extension.Slices for extension.extension:timezone.extension 0..0 Extension
Slice: Unordered, Open by value:url
Extension.Slices for extension.extension:timezone.url 1..1 uri "timezone"
Extension.Slices for extension.extension:timezone.value[x] 1..1 string Value of extension
Extension.url 1..1 uri "https://fhir.soigneur.coach/fhir/StructureDefinition/cc-ext-location"

doco Documentation for this format

This structure is derived from Extension

Summary

Complex Extension: Where the athlete lives — city and/or postal code plus ISO 3166-1 alpha-2 country, with the offline-resolved label, centroid coordinates (4 decimals, ~11 m — the same precision cap MET Norway enforces on forecast queries; never a GPS position) and the resolved IANA timezone. Coach-memorized from conversation, the optional onboarding question, or the settings editor (ADR 0100); drives the local weather guidance (02 G.3, issue #252). Geocoding is offline (vendored GeoNames data, ADR 0100) — location strings never egress. At least one of postalCode / city must be present. Live-class: never dirties Frame Core (ADR 0040 6).

  • postalCode: string: An Extension
  • city: string: An Extension
  • country: code: An Extension
  • label: string: An Extension
  • latitude: decimal: An Extension
  • longitude: decimal: An Extension
  • timezone: string: An Extension

 

Other representations of profile: CSV, Excel, Schematron

Terminology Bindings

Path Status Usage ValueSet Version Source
Extension.extension:country.​value[x] Base required

urn:iso:std:iso:3166

Not State Unknown

Constraints

Id Grade Path(s) Beschreibung Expression
cc-inv-location-has-place error Extension An athlete home location must name at least a postal code or a city — a bare country is not a place (ADR 0100). extension('postalCode').exists() or extension('city').exists()