Local NGO chapters per kommune
Atlas view
Local NGO chapters per kommune
api_v1.kommune_local_chaptersOne row per local chapter resolved to a kommune, with its NGO and category.
First 5 rows ·
api_v1.kommune_local_chapterssnapshot 2026-05-12
| kommune_nr | chapter_id | name | ngo_orgnr | ngo_name | ngo_brand_name | service_category_code | service_category_label_no | sort_order |
|---|---|---|---|---|---|---|---|---|
| 1101 | redcross-L136 | Egersund og Dalane Røde Kors | 864139442 | Norges Røde Kors | Røde Kors | rescue_corps | Hjelpekorps | 1 |
| 1101 | redcross-L136 | Egersund og Dalane Røde Kors | 864139442 | Norges Røde Kors | Røde Kors | first_aid_standby | Beredskapsvakt | 2 |
| 1101 | redcross-L136 | Egersund og Dalane Røde Kors | 864139442 | Norges Røde Kors | Røde Kors | first_aid_training | Førstehjelpskurs | 3 |
| 1101 | redcross-L136 | Egersund og Dalane Røde Kors | 864139442 | Norges Røde Kors | Røde Kors | elderly_visiting | Besøkstjeneste | 4 |
| 1101 | redcross-L136 | Egersund og Dalane Røde Kors | 864139442 | Norges Røde Kors | Røde Kors | language_practice | Norsktrening | 5 |
Built from
This Atlas view joins data from the following upstream sources. Click through for provenance, methodology, and citation.
Atlas internal model ↗
dim_activity
Activity catalog — one row per (NGO, NGO-canonical activity name).
Atlas internal model ↗
dim_chapter
Conformed chapter dimension across all ingested NGOs.
Atlas internal model ↗
fact_chapter_activities
The supply-side fact: one row per (chapter, activity) for every NGO in dim_ngo.
Showing direct dbt parents. See full lineage in /lineage/ →
Columns
| Column | Description |
|---|---|
| kommune_nr | 🔴 WHERE THE CHAPTER IS REGISTERED, NOT WHERE IT WORKS. This description said "where the local chapter operates" until 2026-09-20 and that was a stronger claim than the data supports: the value is a dim_postnummer lookup on the chapter's POSTAL ADDRESS (see supply__redcross_branches). ⚠️ So a chapter serving three neighbouring kommuner appears in one of them, and a chapter with a PO box in the next kommune appears in the wrong one. A consumer asking "is Røde Kors here?" gets "is Røde Kors registered here?" — which is the same limitation as searching the Enhetsregisteret by name, and this relation does not remove it (urb-agents #1289). Declared service areas are not modelled for Red Cross at all. `marts.chapter_kommune_coverage` holds one row per (regional chapter, kommune), but its rows are INFERRED from where the regional chapter's local children are registered — so it inherits this same defect rather than fixing it, and it is not published to api_v1. FK to dim_kommune, the primary filter dimension for this view. Chapters with NULL kommune_nr are excluded (this isn't "local chapters in a kommune" if there's no kommune). ⚠️ The relationships test is `warn`-severity because Longyearbyen Røde Kors is a real chapter whose Svalbard code is not in dim_kommune — SSB Klass 131 contains no 21xx code. So this relation is built to publish a Svalbard row that no dimension can describe. See urb-agents #700. |
| chapter_id | Composite slug for the local chapter (e.g. 'redcross-oslo-grunerløkka'). Repeats across rows when the chapter offers multiple service categories. |
| name | Display name for the local chapter. |
| ngo_orgnr | 9-digit Brreg organisasjonsnummer of the NGO that owns the chapter. |
| ngo_name | Joined from dim_ngo (legal name). |
| ngo_brand_name | Joined from dim_ngo (brand name when distinct from legal name). NULL when the NGO doesn't use a brand alias. |
| service_category_code | ICNPO-derived service category code for one of the activities this chapter offers. Combined with chapter_id forms the natural key of this view (rows are unique on (chapter_id, service_category_code)). |
| service_category_label_no | Human-readable Norwegian label for service_category_code, joined from ref_atlas_service_category. |
| sort_order | Display order from ref_atlas_service_category. Used by the UI to render service categories in a consistent sequence; carry on the row so consumers can sort without a separate query. |
Sample query
Live PostgREST query that returns the first 5 rows. URL adapts to the current host — local dev shows api-atlas.localhost; the deployed site shows the configured API base.
https://api-atlas.urbalurba.com/kommune_local_chapters?limit=5
About this view
One row per local chapter resolved to a kommune, with its NGO and category. Empty today.
🔵 EXPECTED EMPTY TODAY, AND THAT IS NOT A DEFECT. Its one row per local chapter, so it is empty until Red Cross chapter data is loaded.
Terje's position, 2026-09-21: the Red Cross data is not coming now, it
will be there later. The relation is published and answers so a consumer
can build against its shape before the rows arrive.
⚠️ A consumer cannot tell "empty by design" from "broken" without being
told, and two of these three were asked about on the day someone noticed
(urb-agents #1351). If this relation is still empty and this note is
gone, something regressed.
Active local chapters in each kommune, decorated with the NGO
name/brand and the service-category labels offered. Backs the
kommune detail page (atlas-frontend /kommuner/[kommune_nr]);
equivalent to listChaptersInKommune().
**Important:** this view returns *multiple rows per chapter* —
one per service category the chapter offers. A chapter that
provides three service categories appears as three rows for the
same kommune_nr / chapter_id, with different
service_category_code values. Consumers that want unique chapters
should distinct on chapter_id (or aggregate service categories
into an array client-side).
GRAIN: one row per (kommune_nr, chapter_id,
service_category_code), asserted by a test rather than only
described here. It is neither one row per chapter nor one row per
chapter-kommune coverage relation — a consumer told us those were
the two shapes it would guess between (urb-agents #1289).
PostgREST consumers filter via ?kommune_nr=eq.X. Inactive
chapters, non-local chapters (regional, national), and chapters
with NULL kommune_nr are excluded. ⚠️ Excluding regional chapters
means the kommuner a regional chapter serves do NOT appear here;
see kommune_nr for why that gap is not closed elsewhere either.
Svalbard (Longyearbyen Røde Kors) is included even though no 21xx
code is in dim_kommune — the FK relationships test is
`warn`-severity to keep this row visible.