Datakvalitet — Dokumentation

Automatiska kontroller och varningar för skoldata.

Datakvalitet — Automatiska kontroller av skoldata

Kom igång

Portal

Skolkoll kontrollerar automatiskt all data varje natt. Om något ser fel ut skapas en varning som visas på din Översikt-sida.

1
Se varningar på Översikt

Aktiva varningar visas som kort med allvarlighetsgrad. Kritiska varningar markeras i rött, vanliga varningar i gult.

Datakvalitet — 2 aktiva varningar
Kritisk — Testskolan: Meritvärde ändrades 25% (220 → 275)
✓
Varning — Exempelskolan: Elevantal saknas i senaste data
✓
2
Kvittera varning

Skriv en valfri kommentar i fältet under varningen och klicka på bockmarkeringen bredvid den. Varningen tonas ned direkt och visas inte längre på Översikt nästa gång sidan laddas. Den finns kvar som kvitterad och kan hämtas via API:t med acknowledged=true.

Kvittera varning
Testskolan — Meritvärde ändrades 25% (220 → 275)
Kommentar (valfritt) — t.ex. Undersökt — skolformsändring F-9 till 7-9
✓

Typer av kontroller

Portal

Sex kontrolltyper körs automatiskt varje natt efter att ny data hämtats:

KontrollVad som undersöksAllvarlighet
Saknade värdenObligatoriska uppgifter som elevantal eller skolform saknasKritisk
Avvikande värdenNyckeltal som ligger utanför rimliga intervall (t.ex. meritvärde över 340)Varning / Kritisk
Plötsliga förändringarVärden som ändrats mer än 5 % sedan förra uppdateringenVarning (5-20 %) / Kritisk (>20 %)
MotsägelserData som inte stämmer överens, t.ex. om Skolverkets och Koladas siffror skiljer sig åt mer än 10 %Varning / Kritisk
RapporteringsluckorSkolor som har elever men saknar resultatdata (t.ex. meritvärde)Info
Möjliga dubbletterSkolor med samma namn i samma kommun och liknande elevantalInfo

Datahälsopoäng

Portal

Varje skola, kommun och huvudman får en poäng från 0 till 100 som visar hur komplett och konsistent dess data är:

  • 100 — inga problem hittade
  • Kritisk varning drar av 10 poäng
  • Varning drar av 3 poäng
  • Info drar av 1 poäng

Poängen räknas vid varje datasynk för varje aktiv skola och tar med förändringsvarningar mot föregående synk. En kommuns och en huvudmans poäng är medelvärdet av deras aktiva skolors poäng. Om synken inte kunde poängsätta en skola är dess poäng null och den räknas inte in i medelvärdet.

Poängen hämtas via API:t (se nedan). Den nationella sammanfattningen anger totalt antal aktiva skolor, antal skolor med varningar, genomsnittlig poäng bland skolorna med varningar (100 om ingen skola har varningar, null om senaste synken inte poängsatte någon skola) och antal varningar per allvarlighetsnivå. Varningsantalen räknar olika flaggor per skola (typ, allvarlighet och fält), så en flagga som upprepas för samma skola räknas en gång.

Veckomail

Portal

Varje måndag kl 08:00 skickas en sammanfattning av okvitterade varningar till din organisations kontaktmail. Sammanfattningen visar:

  • Antal varningar per allvarlighetsnivå (kritisk, varning, info)
  • De 5 mest kritiska varningarna med detaljer

För utvecklare: API-referens

API
Visa API-dokumentation

Datakvalitetsdata för Pro används via portalen och organisationens inloggade Firebase-session. Det här är interna Pro-endpoints, inte Skolkolls publika API-roadmap eller en API-nyckelprodukt.

Endpoints:

// Varningar:
GET    /api/pro/alerts                              Lista varningar
         ?severity=critical|warning|info            Filtrera allvarlighetsgrad
         &acknowledged=true|false                   Filtrera kvitterade/okvitterade
         &locale=sv|en                              Meddelandespråk
PUT    /api/pro/alerts/{alertId}/acknowledge         Kvittera varning

// Datahälsopoäng:
GET    /api/pro/quality/health-scores               Hämta hälsopoäng
         ?scope=summary|school|municipality|provider
         &code={kod}                                 Krävs för school/municipality/provider

Exempel:

// Hämta alla kritiska okvitterade varningar:
GET /api/pro/alerts?severity=critical&acknowledged=false&locale=sv
→ {
    "alerts": [
      {
        "id": "alert_abc123",
        "schoolCode": "12345678",
        "schoolName": "Exempelskolan",
        "type": "sudden_change",
        "severity": "critical",
        "field": "meritRating9",
        "message": "Meritvärde ändrades 25% (220 → 275)",
        "currentValue": 275,
        "previousValue": 220,
        "acknowledged": false,
        "detectedAt": "2026-03-18T02:15:00Z"
      }
    ]
  }

// Kvittera en varning (prompt: "Lägg till en kommentar till kvitteringen (valfritt):"):
PUT /api/pro/alerts/alert_abc123/acknowledge
{ "comment": "Undersökt — skolformsändring F-9 till 7-9" }
→ {
    "id": "alert_abc123",
    "status": "acknowledged",
    "acknowledgedBy": "user@example.com",
    "acknowledgedAt": "2026-03-18T09:30:00Z"
  }

// Hämta sammanfattad hälsopoäng:
GET /api/pro/quality/health-scores?scope=summary
→ {
    "scope": "summary",
    "totalSchools": 16234,
    "schoolsWithAlerts": 146,
    "averageHealthScore": 94,
    "alertCounts": { "critical": 12, "warning": 89, "info": 45 }
  }

// Hälsopoäng per skola:
GET /api/pro/quality/health-scores?scope=school&code=12345678
→ { "scope": "school", "code": "12345678", "healthScore": 88 }

// Hälsopoäng per kommun:
GET /api/pro/quality/health-scores?scope=municipality&code=0180
→ { "healthScore": 92, "schoolCount": 248 }

// Hälsopoäng per huvudman:
GET /api/pro/quality/health-scores?scope=provider&code=5566778899
→ { "healthScore": 95, "schoolCount": 14 }

Detaljer:

Kvittera varning — skicka JSON med valfritt comment (max 500 tecken). Kvitterade varningar behåller sin synlighet men markeras som hanterade.

Health-scores med scope — summary returnerar totalstatistik (inget code behövs). school, municipality och provider kräver respektive code (skolenhetskod, kommunkod eller org.nr).

Felkoder: 400 (valideringsfel, t.ex. code angiven mer än en gång), 403 (organisationen saknar datakvalitetstjänst — gäller health-scores), 404 (skolan finns inte eller är inte aktiv). En kommun eller huvudman utan aktiva skolor ger { "healthScore": 100, "schoolCount": 0 }.

Har du frågor? Mejla info@skolspegeln.se. Förfrågan tas emot och hanteras manuellt via e-post; ingen supportportal används för ny intake.