Integrated Campaign Registry (ICR) Implementation Guide
0.1.0 - ci-build International flag

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

Extension: Spatial Index Cell

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)

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: Filtersdoco
.. Extension C 0..* Extension Spatial Index Cell
Constraints: icr-spatial-quadkey, icr-spatial-h3, icr-spatial-geohash
... extension 3..* Extension Extension
... Slices for extension Content/Rules for all slices
.... extension:system S 1..1 Extension quadkey | h3 | geohash
..... extension 0..0 Extension
..... url 1..1 uri "system"
..... value[x] 0..1 code Value of extension
Binding: ICR Spatial Index Scheme (required)
.... extension:level 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
..... extension 0..0 Extension
..... url 1..1 uri "level"
..... value[x] 0..1 unsignedInt Value of extension
.... extension:cell 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)
..... extension 0..0 Extension
..... url 1..1 uri "cell"
..... value[x] 0..1 string Value of extension
... url 1..1 uri "https://icr.healthcampaigns.org/StructureDefinition/spatial-index"

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Extension C 0..* Extension Spatial Index Cell
Constraints: icr-spatial-quadkey, icr-spatial-h3, icr-spatial-geohash
... id 0..1 string Unique id for inter-element referencing
... Slices for extension 3..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:system S 1..1 Extension quadkey | h3 | geohash
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "system"
..... value[x] 0..1 code Value of extension
Binding: ICR Spatial Index Scheme (required)
.... extension:level 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
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "level"
..... value[x] 0..1 unsignedInt Value of extension
.... extension:cell 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)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "cell"
..... value[x] 0..1 string Value of extension
... url 1..1 uri "https://icr.healthcampaigns.org/StructureDefinition/spatial-index"

doco 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).

  • system: code: An Extension
  • level: unsignedInt: An Extension
  • cell: string: An Extension

Differential View

This structure is derived from Extension

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Extension C 0..* Extension Spatial Index Cell
Constraints: icr-spatial-quadkey, icr-spatial-h3, icr-spatial-geohash
... extension 3..* Extension Extension
... Slices for extension Content/Rules for all slices
.... extension:system S 1..1 Extension quadkey | h3 | geohash
..... extension 0..0 Extension
..... url 1..1 uri "system"
..... value[x] 0..1 code Value of extension
Binding: ICR Spatial Index Scheme (required)
.... extension:level 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
..... extension 0..0 Extension
..... url 1..1 uri "level"
..... value[x] 0..1 unsignedInt Value of extension
.... extension:cell 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)
..... extension 0..0 Extension
..... url 1..1 uri "cell"
..... value[x] 0..1 string Value of extension
... url 1..1 uri "https://icr.healthcampaigns.org/StructureDefinition/spatial-index"

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Extension C 0..* Extension Spatial Index Cell
Constraints: icr-spatial-quadkey, icr-spatial-h3, icr-spatial-geohash
... id 0..1 string Unique id for inter-element referencing
... Slices for extension 3..* Extension Extension
Slice: Unordered, Open by value:url
.... extension:system S 1..1 Extension quadkey | h3 | geohash
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "system"
..... value[x] 0..1 code Value of extension
Binding: ICR Spatial Index Scheme (required)
.... extension:level 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
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "level"
..... value[x] 0..1 unsignedInt Value of extension
.... extension:cell 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)
..... id 0..1 string Unique id for inter-element referencing
..... extension 0..0 Extension
Slice: Unordered, Open by value:url
..... url 1..1 uri "cell"
..... value[x] 0..1 string Value of extension
... url 1..1 uri "https://icr.healthcampaigns.org/StructureDefinition/spatial-index"

doco 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).

  • system: code: An Extension
  • level: unsignedInt: An Extension
  • cell: string: An Extension

 

Other representations of profile: CSV, Excel, Schematron

Terminology Bindings

Path Status Usage ValueSet Version Source
Extension.extension:system.​value[x] Base required ICR Spatial Index Scheme 📦0.1.0 This IG

Constraints

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)