Soigneur FHIR Implementation Guide
0.1.0 - ci-build
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
| Official URL: https://fhir.soigneur.coach/fhir/StructureDefinition/cc-ext-location | Version: 0.1.0 | |||
| Draft as of 2026-09-08 | 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 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
Context of Use
This extension may be used on the following element(s)
Patient
Usage info
Usages:
You can also check for usages in the FHIR IG Statistics
Description of Profiles, Differentials, Snapshots, and how the XML and JSON presentations work.
This structure is derived from Extension
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Extension | Extension Constraints: cc-inv-location-has-place |
![]() ![]() |
1..* | Extension | Extension | |
![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() |
0..1 | Extension | Postal code as written by the athlete (country-specific format, never reformatted in code) | |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "postalCode" | |
![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() |
0..1 | Extension | City / town (the offline resolver's name when it matched) | |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "city" | |
![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() |
1..1 | Extension | ISO 3166-1 alpha-2 country code — the required disambiguator (city or postal alone is ambiguous) | |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "country" | |
![]() ![]() ![]() ![]() |
1..1 | code | Value of extension Binding: urn:iso:std:iso:3166 (required) | |
![]() ![]() ![]() |
0..1 | Extension | Human-readable resolved place label ('Berlin, Germany') — what the coach echoes back | |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "label" | |
![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() |
0..1 | Extension | Resolved centroid latitude, 4 decimals | |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "latitude" | |
![]() ![]() ![]() ![]() |
1..1 | decimal | Value of extension | |
![]() ![]() ![]() |
0..1 | Extension | Resolved centroid longitude, 4 decimals | |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "longitude" | |
![]() ![]() ![]() ![]() |
1..1 | decimal | Value of extension | |
![]() ![]() ![]() |
0..1 | Extension | Resolved IANA timezone — the moved-abroad cross-check against cc-ext-timezone | |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "timezone" | |
![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() |
1..1 | uri | "https://fhir.soigneur.coach/fhir/StructureDefinition/cc-ext-location" | |
![]() ![]() |
0..0 | Value of extension | ||
Documentation for this format | ||||
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Extension | Extension Constraints: cc-inv-location-has-place |
![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() |
1..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..1 | Extension | Postal code as written by the athlete (country-specific format, never reformatted in code) | |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "postalCode" | |
![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() |
0..1 | Extension | City / town (the offline resolver's name when it matched) | |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "city" | |
![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() |
1..1 | Extension | ISO 3166-1 alpha-2 country code — the required disambiguator (city or postal alone is ambiguous) | |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "country" | |
![]() ![]() ![]() ![]() |
1..1 | code | Value of extension Binding: urn:iso:std:iso:3166 (required) | |
![]() ![]() ![]() |
0..1 | Extension | Human-readable resolved place label ('Berlin, Germany') — what the coach echoes back | |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "label" | |
![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() |
0..1 | Extension | Resolved centroid latitude, 4 decimals | |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "latitude" | |
![]() ![]() ![]() ![]() |
1..1 | decimal | Value of extension | |
![]() ![]() ![]() |
0..1 | Extension | Resolved centroid longitude, 4 decimals | |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "longitude" | |
![]() ![]() ![]() ![]() |
1..1 | decimal | Value of extension | |
![]() ![]() ![]() |
0..1 | Extension | Resolved IANA timezone — the moved-abroad cross-check against cc-ext-timezone | |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "timezone" | |
![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() |
1..1 | uri | "https://fhir.soigneur.coach/fhir/StructureDefinition/cc-ext-location" | |
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 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
Differential View
This structure is derived from Extension
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Extension | Extension Constraints: cc-inv-location-has-place |
![]() ![]() |
1..* | Extension | Extension | |
![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() |
0..1 | Extension | Postal code as written by the athlete (country-specific format, never reformatted in code) | |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "postalCode" | |
![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() |
0..1 | Extension | City / town (the offline resolver's name when it matched) | |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "city" | |
![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() |
1..1 | Extension | ISO 3166-1 alpha-2 country code — the required disambiguator (city or postal alone is ambiguous) | |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "country" | |
![]() ![]() ![]() ![]() |
1..1 | code | Value of extension Binding: urn:iso:std:iso:3166 (required) | |
![]() ![]() ![]() |
0..1 | Extension | Human-readable resolved place label ('Berlin, Germany') — what the coach echoes back | |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "label" | |
![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() |
0..1 | Extension | Resolved centroid latitude, 4 decimals | |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "latitude" | |
![]() ![]() ![]() ![]() |
1..1 | decimal | Value of extension | |
![]() ![]() ![]() |
0..1 | Extension | Resolved centroid longitude, 4 decimals | |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "longitude" | |
![]() ![]() ![]() ![]() |
1..1 | decimal | Value of extension | |
![]() ![]() ![]() |
0..1 | Extension | Resolved IANA timezone — the moved-abroad cross-check against cc-ext-timezone | |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "timezone" | |
![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() |
1..1 | uri | "https://fhir.soigneur.coach/fhir/StructureDefinition/cc-ext-location" | |
![]() ![]() |
0..0 | Value of extension | ||
Documentation for this format | ||||
Snapshot View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Extension | Extension Constraints: cc-inv-location-has-place |
![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() |
1..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..1 | Extension | Postal code as written by the athlete (country-specific format, never reformatted in code) | |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "postalCode" | |
![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() |
0..1 | Extension | City / town (the offline resolver's name when it matched) | |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "city" | |
![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() |
1..1 | Extension | ISO 3166-1 alpha-2 country code — the required disambiguator (city or postal alone is ambiguous) | |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "country" | |
![]() ![]() ![]() ![]() |
1..1 | code | Value of extension Binding: urn:iso:std:iso:3166 (required) | |
![]() ![]() ![]() |
0..1 | Extension | Human-readable resolved place label ('Berlin, Germany') — what the coach echoes back | |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "label" | |
![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() ![]() |
0..1 | Extension | Resolved centroid latitude, 4 decimals | |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "latitude" | |
![]() ![]() ![]() ![]() |
1..1 | decimal | Value of extension | |
![]() ![]() ![]() |
0..1 | Extension | Resolved centroid longitude, 4 decimals | |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "longitude" | |
![]() ![]() ![]() ![]() |
1..1 | decimal | Value of extension | |
![]() ![]() ![]() |
0..1 | Extension | Resolved IANA timezone — the moved-abroad cross-check against cc-ext-timezone | |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "timezone" | |
![]() ![]() ![]() ![]() |
1..1 | string | Value of extension | |
![]() ![]() |
1..1 | uri | "https://fhir.soigneur.coach/fhir/StructureDefinition/cc-ext-location" | |
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 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
Other representations of profile: CSV, Excel, Schematron
| Path | Status | Usage | ValueSet | Version | Source |
| Extension.extension:country.value[x] | Base | required |
urn:iso:std:iso:3166 |
Not State | Unknown |
| Id | Grade | Path(s) | Description | 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()
|