Quantcast
Viewing all articles
Browse latest Browse all 1578

Slik kartla vi 15 milliarder helsekroner og 9 700 leger

Image may be NSFW.
Clik here to view.

Hvordan får man oversikt, når data om 90 millioner fastlege-regninger dumper ned i innboksen?

I februar ba NRK Brennpunkt helsemyndighetene om innsyn i data om aktiviteten til landets fastleger. Data om hvordan 15 milliarder offentlige kroner fordeler seg på 9 700 leger i Norge over tre år. Her fantes bestefars inngrodde tånegl, lillebrors armbrudd og fars røykeavvenningsprat med legen. Brennpunkt-filmen «Legekoden», som sendes i kveld, er delvis basert på funn gjort i disse dataene.

I journalistisk sammenheng, snakker vi av og til om å «intervjue dataene», ut fra ideen om at et datasett skjuler journalistiske poenger som man kan forløse ved nærmest å gå i dialog med materialet gjennom såkalte SQL-spørringer. Det er en ganske god beskrivelse — men bare hvis du tenker deg intervjuobjektet som en sjenert fireåring som svarer i enstavelser.

Ved å gjøre kjøringer på de ulike takstene, kunne vi se hvilke leger som utmerket seg med mange regninger til staten. Etter å ha kartlagt de som var «grådigst», kunne vi gå videre til postjournalene til Helfo. Her kunne vi så be om innsyn i alle vedtak som var blitt gjort på de som toppet statistikken. Når vi så fant ut at det fantes vedtak om tilbakebetaling på flere av disse begynte det virkelig å bli interessant. Disse dokumentene fortalte oss igjen om takstbruk både på og over kanten av det lovlige.

Det finnes etter hvert flere journalister som tar i bruk databaseløsninger og SQL når de skal få orden på store datamengder, slik som i dette tilfellet er Excel ikke lenger kraftig nok. La meg derfor gå steg for steg igjennom hvordan vi gikk fram for å kartlegge dataene.

Databasen KUHR

Hver gang du har vært hos fastlegen, sender hun en regning til HELFO, som er den såkalte «ytre etaten» til Helsedirektoratet. HELFO har ansvaret for pengeutbetalinger, blant annet til landets fastleger. På regningen er det ført opp en eller flere takstkoder, som hver utløser en tariffestet sum. Dataene blir tatt vare på i et datasystem med det interne navnet KUHR (Kontroll og utbetaling av helserefusjoner).

Taushetsplikten er åpenbart et tema i forbindelse med denne typen opplysninger. Direktoratet gikk i dialog med NRK, og laget et tilpasset (aggregert) datasett uten noen form for pasientinformasjon. Risikoen for bakoversporing av pasientenes identitet var helt eliminert ved at hver lege kun var ført opp med samleposter for antall takster og summert refusjonsbeløp for hver takst. Slik kunne forvaltningen imøtekomme et ellers legitimt innsynskrav, uten å risikere brudd på taushetsplikten.

Filen vi først fikk, besto av 1,5 millioner linjer. Én linje per takstkode per lege per praksis per år, med antall og summert kronebeløp. Den dekket årene 2015, 2016 og 2017.

For å få noe ut av dette datasettet, måtte vi gå detaljert til verks. Du får ingen tabell over journalistiske poenger fra enkeltspørringer. Det er «fireåringen» som svarer, og det er krevende å vite akkurat hva han svarer på.

Helsesjekk av helsedataene

Vi må bli kjent med dataene. Det er fort gjort å snuble ned i noen riktig mørke fallgruver når man bruker aggregerte datasett som utgangspunkt for videre kjøringer. Det er for eksempel viktig å være klar over hvilke verdier som ikke kan summeres; slik som for eksempel feltet antall_pasienter, som angir hvor mange unike pasienter hver lege har levert regning for i løpet av hvert år. Pasienter som har vært hos flere forskjellige leger i løpet av året ville i så fall ha blitt talt flere ganger.

Vi gjorde en rekke kontrollutregninger, og brukte mye tid på å finne igjen våre egne tall hos andre kilder, gjerne i offisielle rapporter og statistikker. Hadde tallene våre skilt seg vesentlig fra andres utregninger, måtte vi ha kommet til bunns i årsaken.

Image may be NSFW.
Clik here to view.
En rask spørring gir oss noen tall som kan sammenlignes med offisielle kilder. Vi ser blant annet at det samlede refusjonsbeløpet årlig ligger på rundt 5 mrd. kroner.

Senere ba vi om å få enda et uttrekk med antall pasienter per lege, kronebeløp og antall regninger. Fra dette siste datasettet, kunne vi få et bredere oversiktsbilde over materialet:

Image may be NSFW.
Clik here to view.
Her ser vi at det dreide seg om cirka 30 millioner regninger i året, fordelt på i overkant av 7000 leger.

Dette stemmer i grove trekk overens med HELFOs egne måltall. I den innledende fasen brukte vi mye tid nettopp på kjøringer som dette — for å forstå tallene.

Å «pimpe opp» MySQL

De første spørringene dreide seg som sagt om å få oversikt. De fleste databasemotorene har innebygd støtte for enkle statistiske funksjoner, slik som gjennomsnitt og standardavvik. Vi har «pimpet opp» MySQL med flere programutvidelser, blant annet MySQL Infusion UDF av Robert Eisele, som også gir oss funksjoner som lettere finner for eksempel persentiler (herunder også median) og typetall.

Fastleger har varierende antall pasienter på listene sine. Disse listene er heller ikke alltid stabile over tid. Derfor måtte vi komplettere datasettet vårt med informasjon fra fastlegedatabasen til Helsedirektoratet. En ny innynsbegjæring ble sendt, der vi ba om lengden på pasientlistene for hver fastlege i Norge. Informasjonen finnes allerede fersk og tilgjengelig på nettet, men vi ønsket de historiske tallene for 2015, 2016 og 2017, slik at de kunne holdes sammen med KUHR-dataene.

Image may be NSFW.
Clik here to view.
Antall pasienter på fastlegenes lister bør stemme overens med folketallet i Norge.

Vi fikk bekreftet fra Helsedirektoratet at ingen enkeltpersoner kan stå på mer enn én fastlegeliste om gangen. En rask faktasjekk var da å kontrollere at det summerte antallet pasienter på fastlegenes lister stemmer med det offisielle folketallet i Norge, noe vi enkelt kan sjekke opp mot SSB.

Vi startet analysearbeidet med å splitte opp (normalisere) dataene og fordele dem på i alt seks tabeller. Da går det lettere og raskere å kjøre de mer komplekse spørringene mot datasettet:

  • lege

    En rad per lege, identifisert med offisielt autorisasjonsnummer (HPR-nummer) i helsepersonellregisteret.

  • praksis

    Én rad per legepraksis, identifisert med organisasjonsnummer.

  • lege_praksis

    Siden noen leger er knyttet til flere praksiser må vi ha en oppslagstabell som kobler legen til en eller flere praksiser.

  • refusjon

    Hver rad inneholder data om bruken av én takstkode knyttet til én enkelt lege ved én bestemt praksis i løpet av ett år.

  • refusjon_aggr

    Aggregert utgave av tabellen over, med antall pasienter per lege, samlet refusjonsbeløp og antallet regninger.

  • listelengde

    Historisk uttrekk fra fastlegebasen, med antall innbyggere på legelistene til hver fastlege for årene 2015, 2016 og 2017.

Hjemmesnekret rapportverktøy

Etter hvert som kontrollkjøringene og den pågående dialogen med helsemyndighetene fikk oss til å føle oss sikre på at vi hadde forstått dataene riktig, kunne vi begynne å drille oss ned i datasettene.

SQL-spørringene ble lange og mange. Vi endte opp med en SQL-fil på over 9 000 linjer med spørringer. Vi gjorde både statistiske kjøringer, så vel som mer målrettede undersøkelser. SQL-spørringene ble konvertert til en mer leselig PDF-fil ved hjelp av det hjemmesnekrede skriptet mkres som vi har utviklet for intern bruk (advarsel: usedvanlig fæl kildekode), og som bruker tekstformateringsspråket LaTeX sammen med kommandolinje-verktøyet pdflatex for å produsere en PDF-rapport for det menneskelige øye.

Image may be NSFW.
Clik here to view.
Et hjemmelaget skript konverterer SQL-spørringene våre til en leselig PDF-fil med grafikk og tabeller.

Rapporten dannet grunnlaget for den videre undersøkelsen, og den vokste stadig, etter hvert som vi la inn nye kjøringer. I skrivende stund er den på 139 sider.

Ploticus

Noen av kjøringene ønsket vi å visualisere. Programvaren Ploticus kom oss til unnsetning — en gammel og god applikasjon for å generere stolpediagrammer og annen grafikk.

Dette er et eksempel på en av spørringene vi gjorde mot dataene. Vi ønsket å se på hvordan pengene faktisk er fordelt blant legene, og fikk Ploticus til å tegne en såkalt lorentzkurve, som viser at de øverste 25 prosentene av legene får omkring halvparten av pengene. Y-aksen viser beløp, og X-aksen viser antall leger.

Image may be NSFW.
Clik here to view.
Den blå kurven viser hvordan 5 mrd. skattekroner ble fordelt i 2016. Hvis alle legene hadde fått like mye, ville kurven ha fulgt den stiplede linjen.

Tilgangen til store data fra det offentlige blir stadig bedre, etter hvert som forvaltningen blir fortrolig med de reglene som gjelder for utlevering av sammenstillinger fra databaser (for eksempel med offentlighetsloven § 9). I tillegg blir også fagsystemene i det offentlige stadig kraftigere og bedre, slik at dataeksport og -utlevering ikke lenger kan sies å være en tung og krevende jobb for embetsverket.

For dem som bruker virtualiseringsprogramvaren Docker, har vi laget et image med en ferdigkompilert utgave av MySQL med blant annet Infusion UDF og et knippe andre forbedringer. Også rapportverktøyet krever mye programvare for å fungere. Derfor har vi også her laget et Docker-image der mkres er installert sammen med all nødvendig programvare for å bygge PDF-filer fra SQL-skript.

Her kan du se dokumentaren i sin helhet

Image may be NSFW.
Clik here to view.

Viewing all articles
Browse latest Browse all 1578


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>