Skip to content

Commit

Permalink
Flytt ut funksjon fra droplistefil
Browse files Browse the repository at this point in the history
  • Loading branch information
mfmssb committed Nov 3, 2023
1 parent 28b0f91 commit 4c0606a
Show file tree
Hide file tree
Showing 2 changed files with 147 additions and 106 deletions.
117 changes: 11 additions & 106 deletions Droplister/Droplister_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,21 +57,19 @@
# ## Importerer pakker og setter innstillinger

# +
import numpy as np
import pandas as pd

from sqlalchemy import create_engine

import getpass
import os
from klass import get_classification

import hjelpefunksjoner as hjfunk

# +
# Fjerner begrensning på antall rader og kolonner som vises av gangen
pd.set_option("display.max_columns", None)
pd.set_option('display.max_rows', 300)
pd.set_option('display.max_rows', 50)
pd.set_option('display.max_colwidth', None)

# Unngå standardform i output
Expand Down Expand Up @@ -125,118 +123,25 @@

# + [markdown] toc-hr-collapsed=true
# ## fra KLASS
# -

# ### Offentlige helseforetak

# +
klass_offentlige_helseforetak = get_classification(603).get_codes()

HF = klass_offentlige_helseforetak.pivot_level()
HF = (
HF.rename(columns={
'code_1': 'HELSEREGION',
'code_3': 'ORGNR_FORETAK',
'name_3': 'NAVN_KLASS'
})
[['ORGNR_FORETAK', 'NAVN_KLASS', 'HELSEREGION']]
)
# -

RHF = klass_offentlige_helseforetak.pivot_level()
RHF = (
RHF[['code_1', 'name_2', 'code_2']]
.drop_duplicates()
.rename(columns={'code_1': 'HELSEREGION',
'name_2': 'NAVN_KLASS',
'code_2': 'ORGNR_FORETAK'})
)

# + [markdown] toc-hr-collapsed=true
# ### Private helseinstitusjoner med oppdrags- og bestillerdokument

# +
klass_priv_frtk_ob = get_classification(604).get_codes()

phob = klass_priv_frtk_ob.pivot_level()

phob = (
phob.rename(columns={
'code_1': 'HELSEREGION',
'code_2': 'ORGNR_FORETAK',
'name_2': 'NAVN_KLASS'
})
[['ORGNR_FORETAK', 'NAVN_KLASS', 'HELSEREGION']]
)
# -

# ### Regionale og felleseide støtteforetak i spesialisthelsetjenesten

klass_rfss = get_classification(605).get_codes()

rfss = klass_rfss.pivot_level()

rfss = (
rfss.rename(columns={
'code_1': 'HELSEREGION',
'code_3': 'ORGNR_FORETAK',
'name_3': 'NAVN_KLASS'
})
[['ORGNR_FORETAK', 'NAVN_KLASS', 'HELSEREGION']]
)
HF, RHF, phob, rfss, rfss2, rfss3, rapporteringsenheter = hjfunk.hent_enheter_fra_klass(aargang)

rfss2 = (
get_classification(605)
.get_codes()
.data.query("level == '2' & parentCode == '99'")
[['code', 'parentCode', 'name']]
.rename(columns={
'code': 'ORGNR_FORETAK',
'parentCode': 'HELSEREGION',
'name': 'NAVN_KLASS'
}
)
)

rfss3 = (
get_classification(605)
.get_codes()
.data.query("level == '2' & parentCode != '99'")
[['code', 'parentCode', 'name']]
.rename(columns={
'code': 'ORGNR_FORETAK',
'parentCode': 'HELSEREGION',
'name': 'NAVN_KLASS'
}
)
)

rfss_region = klass_rfss.data.copy()

rfss_region = (
rfss_region[rfss_region['level'] == '1'][['code', 'name']]
.rename(columns={'code': 'HELSEREGION', 'name': 'RHF'})
)

rapporteringsenheter = pd.concat(
[HF, RHF, phob, rfss, rfss2, rfss3]
)

rapporteringsenheter = pd.merge(rapporteringsenheter,
rfss_region,
how='left',
on='HELSEREGION'
)

rapporteringsenheter = rapporteringsenheter.rename(columns={'RHF': 'HELSEREGION_NAVN'})

rapporteringsenheter = rapporteringsenheter[~rapporteringsenheter.duplicated()]
regionoppslag = (
rapporteringsenheter[rapporteringsenheter['NAVN_KLASS']
.str.endswith("RHF")]
.copy()
[['HELSEREGION', 'HELSEREGION_NAVN']]
)
# -

print("Rapporteringsenheter fra KLASS årgang", aargang, "1. januar")
print(f"HF: \t\t\t\t\t\t\t\t\t{HF.shape[0]} enheter")
print(f"RHF: \t\t\t\t\t\t\t\t\t{RHF.shape[0]} enheter")
print(f"Priv. helse oppdrag og bestillerdok.: \t\t\t\t\t{phob.shape[0]} enheter")
print(f"Regionale og felleseide støtteforetak i spesialisthelsetjenesten: \t{rfss.shape[0]+rfss2.shape[0]+rfss3.shape[0]} enheter")
print(f"rapporteringsenheter: \t\t\t\t\t\t\t{rapporteringsenheter.shape[0]} enheter")


# ## VOF: liste over alle helseforetak

Expand Down
136 changes: 136 additions & 0 deletions Droplister/hjelpefunksjoner.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,142 @@ def lag_sql_str(arr):
return s


def hent_enheter_fra_klass(aargang):
"""
Henter rapporteringsenheter fra KLASS basert på gitt årgang.
Denne funksjonen henter data fra KLASS for offentlige helseforetak,
private helseinstitusjoner med oppdrags- og bestillerdokument, og
regionale og felleseide støtteforetak i spesialisthelsetjenesten.
Args:
- aargang (str): Året det hentes data for, i formatet 'YYYY'.
Returns:
- tuple: Returnerer syv DataFrames som representerer ulike rapporteringsenheter:
- HF: Data for offentlige helseforetak.
- RHF: Data for regionale helseforetak.
- phob: Data for private helseinstitusjoner med oppdrags- og bestillerdokument.
- rfss: Data for regionale og felleseide støtteforetak.
- rfss2: Data for støtteforetak med parentCode '99'.
- rfss3: Data for støtteforetak uten parentCode '99'.
- rapporteringsenheter: Samlet data for alle rapporteringsenheter.
Eksempel:
>>> HF, RHF, phob, rfss, rfss2, rfss3, rapporteringsenheter = hent_enheter_fra_klass('2023')
"""

from klass import get_classification

### Offentlige helseforetak

klass_offentlige_helseforetak = get_classification(603).get_codes(from_date=f'{aargang}-01-01',
to_date=f'{aargang}-01-02')

HF = klass_offentlige_helseforetak.pivot_level()
HF = (
HF.rename(columns={
'code_1': 'HELSEREGION',
'code_3': 'ORGNR_FORETAK',
'name_3': 'NAVN_KLASS'
})
[['ORGNR_FORETAK', 'NAVN_KLASS', 'HELSEREGION']]
)

RHF = klass_offentlige_helseforetak.pivot_level()
RHF = (
RHF[['code_1', 'name_2', 'code_2']]
.drop_duplicates()
.rename(columns={'code_1': 'HELSEREGION',
'name_2': 'NAVN_KLASS',
'code_2': 'ORGNR_FORETAK'})
)

### Private helseinstitusjoner med oppdrags- og bestillerdokument

klass_priv_frtk_ob = get_classification(604).get_codes(from_date=f'{aargang}-01-01',
to_date=f'{aargang}-01-02')

phob = klass_priv_frtk_ob.pivot_level()

phob = (
phob.rename(columns={
'code_1': 'HELSEREGION',
'code_2': 'ORGNR_FORETAK',
'name_2': 'NAVN_KLASS'
})
[['ORGNR_FORETAK', 'NAVN_KLASS', 'HELSEREGION']]
)

### Regionale og felleseide støtteforetak i spesialisthelsetjenesten

klass_rfss = get_classification(605).get_codes(from_date=f'{aargang}-01-01',
to_date=f'{aargang}-01-02')

rfss = klass_rfss.pivot_level()

rfss = (
rfss.rename(columns={
'code_1': 'HELSEREGION',
'code_3': 'ORGNR_FORETAK',
'name_3': 'NAVN_KLASS'
})
[['ORGNR_FORETAK', 'NAVN_KLASS', 'HELSEREGION']]
)

rfss2 = (
get_classification(605)
.get_codes(from_date=f'{aargang}-01-01',
to_date=f'{aargang}-01-02')
.data.query("level == '2' & parentCode == '99'")
[['code', 'parentCode', 'name']]
.rename(columns={
'code': 'ORGNR_FORETAK',
'parentCode': 'HELSEREGION',
'name': 'NAVN_KLASS'
}
)
)

rfss3 = (
get_classification(605)
.get_codes(from_date=f'{aargang}-01-01',
to_date=f'{aargang}-01-02')
.data.query("level == '2' & parentCode != '99'")
[['code', 'parentCode', 'name']]
.rename(columns={
'code': 'ORGNR_FORETAK',
'parentCode': 'HELSEREGION',
'name': 'NAVN_KLASS'
}
)
)

rfss_region = klass_rfss.data.copy()

rfss_region = (
rfss_region[rfss_region['level'] == '1'][['code', 'name']]
.rename(columns={'code': 'HELSEREGION', 'name': 'RHF'})
)

rapporteringsenheter = pd.concat(
[HF, RHF, phob, rfss, rfss2, rfss3]
)

rapporteringsenheter = pd.merge(rapporteringsenheter,
rfss_region,
how='left',
on='HELSEREGION'
)

rapporteringsenheter = rapporteringsenheter.rename(columns={'RHF': 'HELSEREGION_NAVN'})

rapporteringsenheter = rapporteringsenheter[~rapporteringsenheter.duplicated()]

return HF, RHF, phob, rfss, rfss2, rfss3, rapporteringsenheter



def les_sql(sql_spørring, tilkobling):
"""
Utfører en SQL-spørring og returnerer en DataFrame hvor kolonnenavnene er i store bokstaver.
Expand Down

0 comments on commit 4c0606a

Please sign in to comment.