Integrated Campaign Registry (ICR) Implementation Guide
0.1.0 - ci-build
Integrated Campaign Registry (ICR) 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://icr.healthcampaigns.org/StructureDefinition/spatial-index | Version: 0.1.0 | |||
| Draft as of 2026-09-06 | Computable Name: SpatialIndex | |||
| A spatial index cell derived from the Location's position: which tiling scheme (quadkey | h3 | geohash), at what level (quadkey zoom / H3 resolution / geohash precision), and the cell key. Repeatable — a point carries at most one cell per scheme and level (ICRLocation invariant icr-loc-spatial-one-per-level); several schemes and levels may coexist. Quadkey and geohash cells are prefix-hierarchical, so a FHIR string search on the cell (Location?quadkey=0313…) answers 'every point inside this coarser tile' with no geometry engine; H3 cells join on exact match. Derived data: written by the loader (kiln) at import or as a backfill edit, recomputed whenever the position changes, never hand-entered. Not an identifier — many places share a cell (spatial-index round, Sep 2026). |
Context of Use
This extension may be used on the following element(s)
Location
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 | Spatial Index Cell Constraints: icr-spatial-quadkey, icr-spatial-h3, icr-spatial-geohash |
![]() ![]() |
3..* | Extension | Extension | |
![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() |
S | 1..1 | Extension | quadkey | h3 | geohash |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "system" | |
![]() ![]() ![]() ![]() |
0..1 | code | Value of extension Binding: ICR Spatial Index Scheme (required) | |
![]() ![]() ![]() |
S | 1..1 | Extension | Quadkey zoom (1–23), H3 resolution (0–15), geohash precision (1–12) — explicit even where recoverable from the cell, so 'every point indexed at level 18' is a plain query |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "level" | |
![]() ![]() ![]() ![]() |
0..1 | unsignedInt | Value of extension | |
![]() ![]() ![]() |
S | 1..1 | Extension | The cell key in the scheme's canonical string form (quadkey: base-4 digits; h3: 15 hex chars; geohash: base-32) |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "cell" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() |
1..1 | uri | "https://icr.healthcampaigns.org/StructureDefinition/spatial-index" | |
![]() ![]() |
0..0 | Value of extension | ||
Documentation for this format | ||||
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Extension | Spatial Index Cell Constraints: icr-spatial-quadkey, icr-spatial-h3, icr-spatial-geohash |
![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() |
3..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
S | 1..1 | Extension | quadkey | h3 | geohash |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "system" | |
![]() ![]() ![]() ![]() |
0..1 | code | Value of extension Binding: ICR Spatial Index Scheme (required) | |
![]() ![]() ![]() |
S | 1..1 | Extension | Quadkey zoom (1–23), H3 resolution (0–15), geohash precision (1–12) — explicit even where recoverable from the cell, so 'every point indexed at level 18' is a plain query |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "level" | |
![]() ![]() ![]() ![]() |
0..1 | unsignedInt | Value of extension | |
![]() ![]() ![]() |
S | 1..1 | Extension | The cell key in the scheme's canonical string form (quadkey: base-4 digits; h3: 15 hex chars; geohash: base-32) |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "cell" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() |
1..1 | uri | "https://icr.healthcampaigns.org/StructureDefinition/spatial-index" | |
Documentation for this format | ||||
This structure is derived from Extension
Summary
Complex Extension: A spatial index cell derived from the Location's position: which tiling scheme (quadkey | h3 | geohash), at what level (quadkey zoom / H3 resolution / geohash precision), and the cell key. Repeatable — a point carries at most one cell per scheme and level (ICRLocation invariant icr-loc-spatial-one-per-level); several schemes and levels may coexist. Quadkey and geohash cells are prefix-hierarchical, so a FHIR string search on the cell (Location?quadkey=0313…) answers 'every point inside this coarser tile' with no geometry engine; H3 cells join on exact match. Derived data: written by the loader (kiln) at import or as a backfill edit, recomputed whenever the position changes, never hand-entered. Not an identifier — many places share a cell (spatial-index round, Sep 2026).
Differential View
This structure is derived from Extension
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Extension | Spatial Index Cell Constraints: icr-spatial-quadkey, icr-spatial-h3, icr-spatial-geohash |
![]() ![]() |
3..* | Extension | Extension | |
![]() ![]() |
Content/Rules for all slices | |||
![]() ![]() ![]() |
S | 1..1 | Extension | quadkey | h3 | geohash |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "system" | |
![]() ![]() ![]() ![]() |
0..1 | code | Value of extension Binding: ICR Spatial Index Scheme (required) | |
![]() ![]() ![]() |
S | 1..1 | Extension | Quadkey zoom (1–23), H3 resolution (0–15), geohash precision (1–12) — explicit even where recoverable from the cell, so 'every point indexed at level 18' is a plain query |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "level" | |
![]() ![]() ![]() ![]() |
0..1 | unsignedInt | Value of extension | |
![]() ![]() ![]() |
S | 1..1 | Extension | The cell key in the scheme's canonical string form (quadkey: base-4 digits; h3: 15 hex chars; geohash: base-32) |
![]() ![]() ![]() ![]() |
0..0 | Extension | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "cell" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() |
1..1 | uri | "https://icr.healthcampaigns.org/StructureDefinition/spatial-index" | |
![]() ![]() |
0..0 | Value of extension | ||
Documentation for this format | ||||
Snapshot View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Extension | Spatial Index Cell Constraints: icr-spatial-quadkey, icr-spatial-h3, icr-spatial-geohash |
![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() |
3..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
S | 1..1 | Extension | quadkey | h3 | geohash |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "system" | |
![]() ![]() ![]() ![]() |
0..1 | code | Value of extension Binding: ICR Spatial Index Scheme (required) | |
![]() ![]() ![]() |
S | 1..1 | Extension | Quadkey zoom (1–23), H3 resolution (0–15), geohash precision (1–12) — explicit even where recoverable from the cell, so 'every point indexed at level 18' is a plain query |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "level" | |
![]() ![]() ![]() ![]() |
0..1 | unsignedInt | Value of extension | |
![]() ![]() ![]() |
S | 1..1 | Extension | The cell key in the scheme's canonical string form (quadkey: base-4 digits; h3: 15 hex chars; geohash: base-32) |
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |
![]() ![]() ![]() ![]() |
0..0 | Extension Slice: Unordered, Open by value:url | ||
![]() ![]() ![]() ![]() |
1..1 | uri | "cell" | |
![]() ![]() ![]() ![]() |
0..1 | string | Value of extension | |
![]() ![]() |
1..1 | uri | "https://icr.healthcampaigns.org/StructureDefinition/spatial-index" | |
Documentation for this format | ||||
This structure is derived from Extension
Summary
Complex Extension: A spatial index cell derived from the Location's position: which tiling scheme (quadkey | h3 | geohash), at what level (quadkey zoom / H3 resolution / geohash precision), and the cell key. Repeatable — a point carries at most one cell per scheme and level (ICRLocation invariant icr-loc-spatial-one-per-level); several schemes and levels may coexist. Quadkey and geohash cells are prefix-hierarchical, so a FHIR string search on the cell (Location?quadkey=0313…) answers 'every point inside this coarser tile' with no geometry engine; H3 cells join on exact match. Derived data: written by the loader (kiln) at import or as a backfill edit, recomputed whenever the position changes, never hand-entered. Not an identifier — many places share a cell (spatial-index round, Sep 2026).
Other representations of profile: CSV, Excel, Schematron
| Path | Status | Usage | ValueSet | Version | Source |
| Extension.extension:system.value[x] | Base | required | ICR Spatial Index Scheme | 📦0.1.0 | This IG |
| Id | Grade | Path(s) | Description | Expression |
| icr-spatial-geohash | error | Extension | A geohash cell is base-32 characters, exactly level characters long, level 1–12. |
extension.where(url = 'system').value = 'geohash' implies (extension.where(url = 'cell').value.matches('^[0-9b-hjkmnp-z]+$') and extension.where(url = 'cell').value.length() = extension.where(url = 'level').value and extension.where(url = 'level').value >= 1 and extension.where(url = 'level').value <= 12)
|
| icr-spatial-h3 | error | Extension | An H3 cell is a 15-hex-character index, level (resolution) 0–15. |
extension.where(url = 'system').value = 'h3' implies (extension.where(url = 'cell').value.matches('^[0-9a-f]{15}$') and extension.where(url = 'level').value <= 15)
|
| icr-spatial-quadkey | error | Extension | A quadkey cell is base-4 digits, exactly level characters long, level 1–23. |
extension.where(url = 'system').value = 'quadkey' implies (extension.where(url = 'cell').value.matches('^[0-3]+$') and extension.where(url = 'cell').value.length() = extension.where(url = 'level').value and extension.where(url = 'level').value >= 1 and extension.where(url = 'level').value <= 23)
|