Databasmodell

Kommunal räddningstjänst – förbundsredo, MSB-kompatibel, PostGIS-klar

Version 2.0 – September 2025

Innehållsförteckning

Systemöversikt

Modellen är framtagen för att stödja både en liten kommunal räddningstjänst och stora räddningstjänstförbund med flera kommuner och stationer. Den alignar till:

Anm: SS 12000 är en interoperabilitetsstandard för skolsektorn och reglerar hur data utbyts, inte vilken domänmodell räddningstjänsten ska ha.

Visuell databasmodell (Interaktivt nätverksdiagram)

Interaktivt nätverksdiagram som visar alla tabeller och relationer i systemet. Dra för att navigera, scrolla för att zooma.

Förenklad systemöversikt

graph TD A[ORGANISATIONER] --> B[STATIONER] A --> C[PERSONAL] A --> D[INSATSER] A --> E[UTBILDNINGAR] A --> F[ARENDEN] A --> Q[RESURSER] A --> R[VB_STATUS] B --> C B --> G[FORDON] A --> S[MATERIEL] D --> H[INSATS_PERSONAL] D --> I[INSATS_FORDON] C --> H G --> I J[VERKSAMHETER] --> K[TILLSYNER] J --> L[TILLSTAND] J --> F C --> K C --> L T[BRANDSKYDSOBJEKT] --> U[BRANDSKYDSKONTROLL] U --> V[KONTROLL_PROTOKOLL] C --> U C --> V E --> M[UTBILDNING_DELTAGARE] W[ÖVNINGAR] --> X[ÖVNING_DELTAGARE] A --> W C --> M C --> X F --> N[ARENDE_HANDLINGAR] C --> N O[KOD_TYPER] --> P[KODER] P --> D P --> E P --> F P --> K P --> L P --> U style A fill:#e1f5fe style D fill:#fff3e0 style C fill:#f3e5f5 style J fill:#e8f5e8 style T fill:#e8f5e8 style Q fill:#f1f8e9 style R fill:#f1f8e9

Viktiga designbeslut & motivering

Exempel på kodtyper (urval)

KodtypExempel på koderKommentar
INSATS_TYPBrand; Trafikolycka; Utsläpp; Automatlarm; IVPAMatcha MSB:s händelseklassificering
INSATS_PRIORITETHÖG; MED; LÅGOperativ prioritering lokalt
INSATS_STATUSStartad; Pågående; Avslutad; AvbrutenRapportlivscykel
ORSAK_BRANDEl; Matlagning; Anlagd; OkändMSB/utredningsfält
UTFALL_SKADORInga; Personskada; Dödsfall; Endast egendomStatistik/uppföljning
LBE_TILLSTAND_TYPGasol; Bensin; Vätgas; Brandfarlig vätskaMSBFS 2013:3
TILLSYN_LAGRUMLSO; LBEStyr tillsynstyp och mall
FORDON_TYPSläckbil; Tank; Steg; Ledning; ATV/UtvFör lokal/operativ klassning
BEFATTNING_TYPSL; Stf SL; BmH; Bm; Brandinspektör; BrandingenjörPersonalbefattningar
SKIFT_TYPA; B; C; DagtidArbetsskift
FRANVARO_TYPSemester; Sjuk; VAB; Tjänstledighet; UtbildningFrånvarotyper
FRANVARO_STATUSGodkänd; Avvaktar; AvslagenFrånvarostatus
ARENDE_TYPAllmänna handlingar; Remisser; Överklaganden; SynpunkterÄrendetyper
ARENDE_STATUSNy; Pågående; Väntar på svar; Under granskningÄrendestatus
PRIORITETHög; Medium; LågÄrendeprioritet
UTBILDNING_TYPIntern; Extern; MSBUtbildningstyper
OVNING_TYPRökdykning; Trafikolycka; Brandövning; VattenlivräddningÖvningstyper
TILLSYN_STATUSPlanerad; Förberedd; Bokad; GenomfördTillsynsstatus
TILLSYN_RESULTATGodkänd; Föreläggande; AvslagTillsynsresultat
TILLSTAND_TYPBrandfarlig vara; Explosiv varaTillståndstyper
TILLSTAND_STATUSNy; Komplettering begärd; Under handläggning; Klar för beslut; AvslutadTillståndsstatus
KONTROLL_STATUSPlanerad; GenomfördKontrollstatus
VB_STATUSNormal beredskap; Reducerad; Ej tillgängligVB-status
FORDON_STATUSTillgänglig; På insats; Underhåll; ReserveradFordonstatus
RISKKLASS1; 2; 3; 4Riskklass för verksamheter
VERKSAMHET_STATUSGodkänd; Föreläggande; AvslagVerksamhetsstatus
HANDLING_TYPNotering; Beslut; Dokument; Remiss; SvarTyp av ärendehandling
MATERIEL_STATUSTillgänglig; Underhåll; UtgångenMaterielstatus

Detaljerad tabellbeskrivning (urval)

ORGANISATIONER

KolumnTypBegränsningarBeskrivning
organisation_idINTPK, AUTO_INCREMENTKommun, kommunalförbund eller gemensam nämnd
namnVARCHAR(200)NOT NULLOfficiellt namn
orgnrVARCHAR(12)UNIQUEOrganisationsnummer
typVARCHAR(40)NOT NULLkommun, kommunalförbund, gemensam_nämnd
statusVARCHAR(20)NOT NULLAktiv/Inaktiv

INSATSER

KolumnTypBegränsningarBeskrivning
insats_idINTPK, AUTO_INCREMENTUnik
larmnummerVARCHAR(40)UNIQUE, NOT NULLExternt larm-ID (t.ex. från SOS)
larmtidDATETIMENOT NULLTid för larm
organisation_idINTFKVem som genomfört insatsen
kommun_idINTFKVar händelsen inträffade (statistik)
init_station_idINTFKFörsta utlarmad station
insatsledare_idINTFKAnsvarig ledare
kategori_kodINTFKMSB händelsetyp
underkategori_kodINTFKMSB underkategori
prioritet_kodINTFKOperativ prioritet
status_kodINTFKStartad/Pågående/Avslutad/Avbruten
adressVARCHAR(200)NULLPlats
latitudDECIMAL(10,8)NULLWGS84
longitudDECIMAL(11,8)NULLWGS84
wgs84_pointGEOGRAPHY(Point,4326)NULLPostGIS, global
sweref_pointGEOMETRY(Point,3006)NULLPostGIS, svensk analys
beskrivningTEXTNULLFritext
starttidDATETIMENULLInsats start
sluttidDATETIMENULLInsats slut
orsak_kodINTFKOrsak/brandorsak
utfall_kodINTFKSkadeutfall
rakel_talgruppVARCHAR(60)NULLT.ex. Samverkan Blå / RAPS

TILLSTAND (LBE)

KolumnTypBegränsningarBeskrivning
tillstand_idINTPKUnik
verksamhet_idINTFKVerksamhet/objekt
diarie_nrVARCHAR(30)UNIQUE, NOT NULLDiarienummer
typ_kodINTFKTyp enligt MSBFS 2013:3
status_kodINTFKInkommen/Kompletteras/Beslutad/Löper ut
inkom_datumDATENOT NULLInkom datum
beslut_datumDATENULLBeslutsdatum
handlaggare_idINTFKAnsvarig handläggare
beskrivningTEXTNULLFritext
beslutVARCHAR(50)NULLBeviljat/Avslag/Villkorat
giltig_tillDATENULLGiltighetstid för tillstånd

VERKSAMHETER

KolumnTypBegränsningarBeskrivning
verksamhet_idINTPK, AUTO_INCREMENTUnik
kommun_idINTFKKommun där verksamheten finns
orgnrVARCHAR(12)UNIQUEOrganisationsnummer
namnVARCHAR(200)NOT NULLVerksamhetsnamn
adressVARCHAR(200)NULLGatuadress
postnummerVARCHAR(10)NULLPostnummer
postortVARCHAR(100)NULLPostort
kontakt_namnVARCHAR(100)NULLKontaktperson
kontakt_telefonVARCHAR(20)NULLTelefonnummer
kontakt_emailVARCHAR(100)NULLE-postadress
riskklass_kodINTFKRiskklass (1-4)
senaste_tillsynDATENULLDatum för senaste tillsyn
nasta_tillsynDATENULLPlanerat datum för nästa tillsyn
status_kodINTFKGodkänd/Föreläggande/Avslag
skapad_datumDATETIMENOT NULLNär verksamheten registrerades
upphor_datumDATENULLNär verksamheten upphörde

TILLSYNER

KolumnTypBegränsningarBeskrivning
tillsyn_idINTPK, AUTO_INCREMENTUnik
verksamhet_idINTFKVerksamhet som tillsyns
lagrum_kodINTFKLSO/LBE
planerad_tidDATETIMENULLPlanerad tid för tillsyn
genomford_tidDATETIMENULLNär tillsynen genomfördes
inspektor_idINTFKAnsvarig inspektör
status_kodINTFKPlanerad/Förberedd/Bokad/Genomförd
resultat_kodINTFKGodkänd/Föreläggande/Avslag
anmarkningarTEXTNULLAnmärkningar från tillsynen
forelaggandeTEXTNULLFöreläggande om det finns
forelaggande_datumDATENULLDatum för föreläggande
uppföljning_datumDATENULLPlanerat uppföljningsdatum

BRANDSKYDSKONTROLL

KolumnTypBegränsningarBeskrivning
kontroll_idINTPK, AUTO_INCREMENTUnik
objekt_idINTFKSotningspliktigt objekt
kontrollnummerVARCHAR(30)UNIQUEKontrollnummer (t.ex. BSK-2025-1001)
senaste_kontrollDATENULLDatum för senaste kontroll
nasta_kontrollDATENULLPlanerat datum för nästa kontroll
status_kodINTFKPlanerad/Genomförd
tekniker_idINTFKAnsvarig tekniker
anmarkningarTEXTNULLAnmärkningar från kontrollen

BRANDSKYDSOBJEKT

KolumnTypBegränsningarBeskrivning
objekt_idINTPK, AUTO_INCREMENTUnik
kommun_idINTFKKommun där objektet finns
fastighetsbeteckningVARCHAR(50)NULLFastighetsbeteckning
adressVARCHAR(200)NOT NULLGatuadress
postnummerVARCHAR(10)NULLPostnummer
postortVARCHAR(100)NULLPostort
agareVARCHAR(200)NULLÄgare av objektet
kontakt_personVARCHAR(100)NULLKontaktperson
kontakt_telefonVARCHAR(20)NULLTelefonnummer
kontakt_emailVARCHAR(100)NULLE-postadress
objekttypVARCHAR(100)NULLTyp av objekt (eldstad, rökkanal, etc.)

KONTROLL_PROTOKOLL

KolumnTypBegränsningarBeskrivning
protokoll_idINTPK, AUTO_INCREMENTUnik
kontroll_idINTFKKontroll som protokollet gäller
kontroll_datumDATENOT NULLDatum för kontrollen
tekniker_idINTFKTekniker som utförde kontrollen
resultatVARCHAR(50)NULLResultat av kontrollen
anmarkningarTEXTNULLAnmärkningar
atgarderTEXTNULLÅtgärder som krävs
nasta_kontrollDATENULLNästa planerade kontroll

FORDON

KolumnTypBegränsningarBeskrivning
fordon_idINTPK, AUTO_INCREMENTUnik
organisation_idINTFKOrganisation som äger fordonet
station_idINTFKStation där fordonet är placerat
fordonnummerVARCHAR(20)UNIQUE, NOT NULLFordonnummer (t.ex. 241-1010)
regnrVARCHAR(10)UNIQUERegistreringsnummer
typ_kodINTFKSläckbil/Stegebil/Räddningsbil/Tank/etc.
fabrikat_modellVARCHAR(100)NULLFabrikat och modell
status_kodINTFKTillgänglig/På insats/Underhåll/Reserverad
latitudDECIMAL(10,8)NULLAktuell position WGS84
longitudDECIMAL(11,8)NULLAktuell position WGS84
position_uppdateradDATETIMENULLNär positionen senast uppdaterades

MATERIEL

KolumnTypBegränsningarBeskrivning
materiel_idINTPK, AUTO_INCREMENTUnik
organisation_idINTFKOrganisation som äger materielen
materielnummerVARCHAR(20)UNIQUEMaterielnummer (t.ex. M-001)
namnVARCHAR(200)NOT NULLMaterielnamn
antalINTNOT NULLAntal enheter
min_nivaINTNOT NULLMinimunivå för lager
lagerplatsVARCHAR(100)NULLVar materielen finns
utgangsdatumDATENULLUtgångsdatum om tillämpligt
qr_kodVARCHAR(50)UNIQUEQR-kod för spårning

VB_STATUS

KolumnTypBegränsningarBeskrivning
vb_idINTPK, AUTO_INCREMENTUnik
organisation_idINTFKOrganisation
status_kodINTFKNormal beredskap/Reducerad/Ej tillgänglig
tillgangliga_enheterINTNOT NULLAntal tillgängliga enheter
totala_enheterINTNOT NULLTotalt antal enheter
aktiva_stationerINTNOT NULLAntal aktiva stationer
totala_stationerINTNOT NULLTotalt antal stationer
personal_i_tjanstINTNOT NULLAntal personal i tjänst
total_personalINTNOT NULLTotalt antal personal
uppdaterad_tidDATETIMENOT NULLNär statusen senast uppdaterades

ÄRENDEN

KolumnTypBegränsningarBeskrivning
arende_idINTPK, AUTO_INCREMENTUnik
organisation_idINTFKOrganisation som äger ärendet
diarie_nrVARCHAR(30)UNIQUE, NOT NULLDiarienummer (t.ex. A-2025-098)
rubrikVARCHAR(200)NOT NULLÄrendets rubrik
beskrivningTEXTNULLBeskrivning av ärendet
typ_kodINTFKAllmänna handlingar/Remisser/Överklaganden/Synpunkter
status_kodINTFKNy/Pågående/Väntar på svar/Under granskning/Avslutad
prioritet_kodINTFKHög/Medium/Låg
handlaggare_idINTFKAnsvarig handläggare
inkom_datumDATENOT NULLNär ärendet inkom
svar_datumDATENULLNär svar skickades
avslut_datumDATENULLNär ärendet avslutades
verksamhet_idINTFKRelaterad verksamhet om tillämpligt

ÄRENDE_HANDLINGAR

KolumnTypBegränsningarBeskrivning
handling_idINTPK, AUTO_INCREMENTUnik
arende_idINTFKÄrende som handlingen tillhör
personal_idINTFKPerson som skapade handlingen
tidpunktDATETIMENOT NULLNär handlingen skapades
typ_kodINTFKTyp av handling (Notering/Beslut/Dokument/etc.)
beskrivningTEXTNULLBeskrivning av handlingen
dokument_urlVARCHAR(500)NULLLänk till dokument om tillämpligt

Index, constraints & säkerhet

Primär- och främmande nycklar

Unika nycklar

Prestandaindex

Säkerhet & åtkomst

API-dokumentation (OpenAPI 3.1.1)

RESTful API för räddningstjänstens IT-stöd enligt OpenAPI 3.1.1-specifikationen.

API Base URL: https://api.raddningstjansten.se/v1
Specifikation: OpenAPI 3.1.1
Autentisering: JWT Bearer Token
Format: JSON

API-översikt

API:et är designat för att stödja alla funktioner i räddningstjänstens IT-stöd med fokus på:

Autentisering och säkerhet

Security Schemes

{
  "securitySchemes": {
    "BearerAuth": {
      "type": "http",
      "scheme": "bearer",
      "bearerFormat": "JWT"
    },
    "ApiKeyAuth": {
      "type": "apiKey",
      "in": "header",
      "name": "X-API-Key"
    }
  }
}

Huvudendpoints

Insatser

GET /insatser - Lista alla insatser
POST /insatser - Skapa ny insats
GET /insatser/{id} - Hämta specifik insats
PUT /insatser/{id} - Uppdatera insats
DELETE /insatser/{id} - Ta bort insats

Personal

GET /personal - Lista all personal
POST /personal - Registrera ny personal
GET /personal/{id}/schema - Hämta personschema
GET /personal/{id}/kompetenser - Hämta personens kompetenser

Verksamheter

GET /verksamheter - Lista alla verksamheter
POST /verksamheter - Registrera ny verksamhet
GET /verksamheter/{id}/tillsyner - Hämta tillsyner för verksamhet
GET /verksamheter/{id}/tillstand - Hämta tillstånd för verksamhet

Tillsyn

GET /tillsyner - Lista alla tillsyner
POST /tillsyner - Planera ny tillsyn
GET /tillsyner/{id} - Hämta tillsynsdetaljer

Brandskyddskontroll

GET /brandskyddskontroller - Lista alla kontroller
GET /brandskyddsobjekt - Lista alla objekt
GET /brandskyddskontroller/{id}/protokoll - Hämta protokoll för kontroll

Resurser

GET /fordon - Lista alla fordon
GET /materiel - Lista all materiel
GET /vb-status - Hämta VB-status

Ärenden

GET /arenden - Lista alla ärenden
POST /arenden - Skapa nytt ärende
GET /arenden/{id}/handlingar - Hämta handlingar för ärende

Utbildning & Övningar

GET /utbildningar - Lista utbildningar
GET /ovningar - Lista övningar
POST /utbildningar/{id}/anmal - Anmäl till utbildning

Rapporter & Statistik

GET /rapporter/msb - MSB-rapporter
GET /statistik/insatser - Insatsstatistik
GET /statistik/tillsyner - Tillsynsstatistik

Exempel på API-anrop

Skapa ny insats

POST /api/v1/insatser
Content-Type: application/json
Authorization: Bearer {jwt_token}

{
  "larmnummer": "L2024-001234",
  "larmtid": "2024-09-15T14:30:00Z",
  "kategori_kod": 1,
  "prioritet_kod": 2,
  "adress": "Storgatan 123, Stockholm",
  "latitud": 59.3293,
  "longitud": 18.0686,
  "beskrivning": "Brand i lägenhet",
  "insatsledare_id": 15
}

Hämta insatser med filter

GET /api/v1/insatser?kommun_id=1&start_datum=2024-09-01&slut_datum=2024-09-30&status_kod=1
Authorization: Bearer {jwt_token}

Geospatial sökning

GET /api/v1/insatser/nearby?lat=59.3293&lng=18.0686&radius=5000
Authorization: Bearer {jwt_token}

Svarformat och felhantering

Framgångsrikt svar (200 OK)

{
  "success": true,
  "data": {
    "insats_id": 123,
    "larmnummer": "L2024-001234",
    "status": "Pågående",
    "created_at": "2024-09-15T14:30:00Z"
  },
  "meta": {
    "total": 1,
    "page": 1,
    "per_page": 20
  }
}

Felsvar (400 Bad Request)

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Ogiltig data",
    "details": [
      {
        "field": "larmnummer",
        "message": "Larmnummer är obligatoriskt"
      }
    ]
  },
  "timestamp": "2024-09-15T14:30:00Z"
}

HTTP-statuskoder

KodBeskrivningAnvändning
200OKFramgångsrikt svar
201CreatedResurs skapad
204No ContentFramgångsrikt utan innehåll
400Bad RequestOgiltig begäran
401UnauthorizedAutentisering krävs
403ForbiddenÅtkomst nekad
404Not FoundResurs hittades inte
422Unprocessable EntityValideringsfel
500Internal Server ErrorServerfel

Rate Limiting

Begränsningar: 1000 requests per timme per API-nyckel
Headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
Överskridning: 429 Too Many Requests

Versionering

URL-versionering: /api/v1/, /api/v2/
Header-versionering: Accept: application/vnd.raddningstjansten.v1+json
Backward compatibility: Minst 2 versioner stöds samtidigt

OpenAPI 3.1.1 Specifikation

Fullständig OpenAPI 3.1.1-specifikation är tillgänglig på:

https://api.raddningstjansten.se/openapi.json

Specifikationen följer OpenAPI 3.1.1-standarden och inkluderar alla endpoints, scheman, exempel och säkerhetsdefinitioner.

Teknisk implementation (rekommendation)

Källor (urval): SS12000 (skolsektorns interoperabilitet); MSB händelserapporter/insatsstatistik; Undersökning & dokumentation efter insats; LBE & MSBFS 2013:3; Räddningstjänstens insatsstatistik 2024; Lantmäteriet SWEREF 99 TM/EPSG:3006; Rakel riktlinjer; Organisationsformer (SKR/SOU/prop).

Databasmodell - ER-diagram (Fullskärm)

×