Ejemplo n.º 1
0
    def __lees_zorg_activiteiten_vertaal_tabel(folder: str):
        """
        Leest de zorgactiviteiten vertaaltabel (opgeslagen in CSV).

        :param str folder: De folder met alle goupertabellen.
        """
        with open(folder + '/VertaalZorgActiviteiten.csv', encoding='utf-8') as csv_file:
            reader = csv.reader(csv_file, )
            regel_nummer = 0
            for regel in reader:
                regel_nummer += 1

                # Sla de eerste regel met koppen over.
                if regel_nummer == 1:
                    continue

                zorg_activiteit_code = clean_code(regel[0], LEN_ZORG_ACTIVITEIT_CODE)
                zorg_activiteit_code_oud = clean_code(regel[2], LEN_ZORG_ACTIVITEIT_CODE)
                begin_datum = clean_date(regel[4])
                eind_datum = clean_date(regel[5])

                sleutel = zorg_activiteit_code

                rij = {'zorg_activiteit_code':     zorg_activiteit_code,
                       'zorg_activiteit_code_oud': zorg_activiteit_code_oud,
                       'begin_datum':              begin_datum,
                       'eind_datum':               eind_datum}

                if sleutel not in ZorgActiviteit.__zorg_activiteiten_vertaal_tabel:
                    ZorgActiviteit.__zorg_activiteiten_vertaal_tabel[sleutel] = []

                ZorgActiviteit.__zorg_activiteiten_vertaal_tabel[sleutel].append(rij)

        print("Aantal zorgactiviteit vertalingen: %d" % (regel_nummer - 1))
Ejemplo n.º 2
0
    def __lees_diagnose_tabel(folder: str):
        """
        Leest de diagnose referentietabel (opgeslagen in CSV).

        :param str folder: De folder met alle goupertabellen.
        """
        with open(folder + '/Diagnosen.csv', encoding='utf-8') as csv_file:
            reader = csv.reader(csv_file, )
            regel_nummer = 0
            for regel in reader:
                regel_nummer += 1

                # Sla de eerste regel met koppen over.
                if regel_nummer == 1:
                    continue

                specialisme_code = clean_code(regel[0], LEN_SPECIALISME_CODE)
                diagnose_code = clean_code(regel[1], LEN_DIAGNOSE_CODE)
                diagnose_attribute_code = clean_str(regel[3])
                diagnose_cluster01 = clean_str(regel[5])
                diagnose_cluster02 = clean_str(regel[6])
                diagnose_cluster03 = clean_str(regel[7])
                diagnose_cluster04 = clean_str(regel[8])
                diagnose_cluster05 = clean_str(regel[9])
                diagnose_cluster06 = clean_str(regel[10])
                begin_datum = clean_date(regel[11])
                eind_datum = clean_date(regel[12])

                sleutel = (specialisme_code, diagnose_code)

                rij = {
                    'specialisme_code': specialisme_code,
                    'diagnose_code': diagnose_code,
                    'diagnose_attribute_code': diagnose_attribute_code,
                    'diagnose_cluster1': diagnose_cluster01,
                    'diagnose_cluster2': diagnose_cluster02,
                    'diagnose_cluster3': diagnose_cluster03,
                    'diagnose_cluster4': diagnose_cluster04,
                    'diagnose_cluster5': diagnose_cluster05,
                    'diagnose_cluster6': diagnose_cluster06,
                    'begin_datum': begin_datum,
                    'eind_datum': eind_datum
                }

                if sleutel not in Diagnose.__diagnose_tabel:
                    Diagnose.__diagnose_tabel[sleutel] = []

                Diagnose.__diagnose_tabel[sleutel].append(rij)

        print("Aantal diagnosen: %d" % (regel_nummer - 1))
Ejemplo n.º 3
0
    def __lees_zorgactiviteiten_tabel(folder):
        """
        Leest de zorgactiviteiten referentietabel (opgeslagen in CSV).
        """
        with open(folder + '/ZorgActiviteiten.csv',
                  encoding='utf-8') as csv_file:
            reader = csv.reader(csv_file, )
            regel_nummer = 0
            for regel in reader:
                regel_nummer += 1

                # Sla de eerste regel met koppen over.
                if regel_nummer == 1:
                    continue

                zorg_activiteit_code = clean_code(regel[0],
                                                  LEN_ZORG_ACTIVITEIT_CODE)
                zorg_activiteit_cluster01 = clean_str(regel[2])
                zorg_activiteit_cluster02 = clean_str(regel[3])
                zorg_activiteit_cluster03 = clean_str(regel[4])
                zorg_activiteit_cluster04 = clean_str(regel[5])
                zorg_activiteit_cluster05 = clean_str(regel[6])
                zorg_activiteit_cluster06 = clean_str(regel[7])
                zorg_activiteit_cluster07 = clean_str(regel[8])
                zorg_activiteit_cluster08 = clean_str(regel[9])
                zorg_activiteit_cluster09 = clean_str(regel[10])
                zorg_activiteit_cluster10 = clean_str(regel[11])
                zorg_activiteit_weeg_factor1 = clean_int(regel[12])
                zorg_activiteit_weeg_factor2 = clean_int(regel[13])
                begin_datum = clean_date(regel[20])
                eind_datum = clean_date(regel[21])

                sleutel = zorg_activiteit_code

                rij = {
                    'zorg_activiteit_code': zorg_activiteit_code,
                    'zorg_activiteit_cluster01': zorg_activiteit_cluster01,
                    'zorg_activiteit_cluster02': zorg_activiteit_cluster02,
                    'zorg_activiteit_cluster03': zorg_activiteit_cluster03,
                    'zorg_activiteit_cluster04': zorg_activiteit_cluster04,
                    'zorg_activiteit_cluster05': zorg_activiteit_cluster05,
                    'zorg_activiteit_cluster06': zorg_activiteit_cluster06,
                    'zorg_activiteit_cluster07': zorg_activiteit_cluster07,
                    'zorg_activiteit_cluster08': zorg_activiteit_cluster08,
                    'zorg_activiteit_cluster09': zorg_activiteit_cluster09,
                    'zorg_activiteit_cluster10': zorg_activiteit_cluster10,
                    'zorg_activiteit_weeg_factor1':
                    zorg_activiteit_weeg_factor1,
                    'zorg_activiteit_weeg_factor2':
                    zorg_activiteit_weeg_factor2,
                    'begin_datum': begin_datum,
                    'eind_datum': eind_datum
                }

                if sleutel not in ZorgActiviteit.__zorg_activiteiten_tabel:
                    ZorgActiviteit.__zorg_activiteiten_tabel[sleutel] = []

                ZorgActiviteit.__zorg_activiteiten_tabel[sleutel].append(rij)

        print("Aantal zorgactiviteiten: %d" % (regel_nummer - 1))
Ejemplo n.º 4
0
    def __init__(self, specialisme_code, diagnose_code):
        """
        Object constructor.

        :param str specialisme_code: De code van het uitvoerend specialisme.
        :param str diagnose_code: De code van deze diagnose.
        """
        self.__specialisme_code = clean_code(specialisme_code, LEN_SPECIALISME_CODE)
        """
        De code van het uitvoerend specialisme.

        :type: str
        """

        self.__diagnose_code = clean_code(diagnose_code, LEN_DIAGNOSE_CODE)
        """
Ejemplo n.º 5
0
    def zorg_activiteit_aantal(self, zorg_activiteit_code: str, weeg_factor_nummer: int, datum: str) -> int:
        """
        Geeft het aantal malen (met inachtneming van weegfactor) dat deze zorgactiviteit voldoet aan een
        zorgactiviteitcode.

        :param str zorg_activiteit_code: De zorgactiviteitcode.
        :param int weeg_factor_nummer: Het weegfactornummer (0..2).
        :param str datum: De peildatum.

        :rtype: int
        """
        referentie = self.__zorg_activiteit_referentie(datum)

        if not referentie:
            # De zorgactiviteitcode komt niet voor in de referentie tabel. Geef 0 terug.
            return 0

        if self.__zorg_activiteit_code != clean_code(zorg_activiteit_code, LEN_ZORG_ACTIVITEIT_CODE):
            return 0

        if weeg_factor_nummer == 0:
            # Weegfactor is niet van toepassing.
            return self.__aantal

        if weeg_factor_nummer == 1:
            return referentie['zorg_activiteit_weeg_factor1'] * self.__aantal

        if weeg_factor_nummer == 2:
            return referentie['zorg_activiteit_weeg_factor2'] * self.__aantal

        raise RuntimeError("Onbekend weegfactornummer %d." % weeg_factor_nummer)
Ejemplo n.º 6
0
    def __lees_specialisme_tabel(folder: str):
        """
        Leest de specialisme referentietabel (opgeslagen in CSV).

        :param str folder: De folder met alle goupertabellen.
        """
        with open(folder + '/Specialismen.csv', encoding='utf-8') as csv_file:
            reader = csv.reader(csv_file, )
            regel_nummer = 0
            for regel in reader:
                regel_nummer += 1

                # Sla de eerste regel met koppen over.
                if regel_nummer == 1:
                    continue

                specialisme_code = clean_code(regel[0], LEN_SPECIALISME_CODE)
                specialisme_cluster1 = clean_str(regel[4])
                specialisme_cluster2 = clean_str(regel[5])
                begin_datum = clean_date(regel[7])
                eind_datum = clean_date(regel[8])

                rij = {'specialisme_code':     specialisme_code,
                       'specialisme_cluster1': specialisme_cluster1,
                       'specialisme_cluster2': specialisme_cluster2,
                       'begin_datum':          begin_datum,
                       'eind_datum':           eind_datum}

                if specialisme_code not in Specialisme._specialisme_tabel:
                    Specialisme._specialisme_tabel[specialisme_code] = []

                Specialisme._specialisme_tabel[specialisme_code].append(rij)

        print("Aantal specialismen: %d" % (regel_nummer - 1))
Ejemplo n.º 7
0
    def __init__(self, specialisme_code: str, zorg_vraag_code: str):
        """
        Object constructor.

        :param str specialisme_code: De code van het uitvoerend specialisme.
        :param str zorg_vraag_code: De code van deze zorgvraag.
        """
        self.__specialisme_code = clean_code(specialisme_code, LEN_SPECIALISME_CODE)
        """
        De code van het uitvoerend specialisme.

        :type: str
        """

        self.__zorg_vraag_code = clean_code(zorg_vraag_code, LEN_ZORG_VRAAG_CODE)
        """
Ejemplo n.º 8
0
    def __init__(self, specialisme_code: str):
        """
        Object constructor.

        :param str specialisme_code: De code van het specialisme.
        """
        self.__specialisme_code = clean_code(specialisme_code, LEN_SPECIALISME_CODE)
        """
Ejemplo n.º 9
0
    def set_zorg_product_groep_code(self, zorg_product_groep_code):
        """
        Zet de zorgproductgroepcode van dit subtraject.

        :param str zorg_product_groep_code: De zorgproductgroepcode.
        """
        self.__zorg_product_groep_code = clean_code(
            zorg_product_groep_code, LEN_ZORG_PRODUCT_GROEP_CODE)
Ejemplo n.º 10
0
    def __init__(self, zorg_instelling_code: str):
        """
        Object constructor.

        :param str zorg_instelling_code: De code van deze zorginstelling.
        """
        self.__zorg_instelling_code = clean_code(zorg_instelling_code,
                                                 LEN_ZORG_INSTELLING_CODE)
        """
Ejemplo n.º 11
0
    def zorg_product_groep_code(self, zorg_product_groep_code: Optional[str]):
        """
        Zet de zorgproductgroepcode van dit subtraject.

        :param str zorg_product_groep_code: De zorgproductgroepcode.
        """
        if zorg_product_groep_code != '' and zorg_product_groep_code is not None:
            self.__zorg_product_groep_code = clean_code(zorg_product_groep_code, LEN_ZORG_PRODUCT_GROEP_CODE)
        else:
            self.__zorg_product_groep_code = None
Ejemplo n.º 12
0
    def __lees_zorg_type_tabel(folder):
        """
        Leest de zorg_type referentietabel (opgeslagen in CSV).

        :param str folder: De folder met alle goupertabellen.
        """
        with open(folder + '/ZorgTypen.csv', encoding='utf-8') as csv_file:
            reader = csv.reader(csv_file, )
            regel_nummer = 0
            for regel in reader:
                regel_nummer += 1

                # Sla de eerste regel met koppen over.
                if regel_nummer == 1:
                    continue

                specialisme_code = clean_code(regel[0], LEN_SPECIALISME_CODE)
                zorg_type_code = clean_code(regel[1], LEN_ZORG_TYPE_CODE)
                zorg_type_attribuut_code = clean_str(regel[3])
                zorg_type_cluster01 = clean_str(regel[4])
                zorg_type_cluster02 = clean_str(regel[5])
                begin_datum = clean_date(regel[6])
                eind_datum = clean_date(regel[7])

                sleutel = (specialisme_code, zorg_type_code)

                rij = {
                    'specialisme_code': specialisme_code,
                    'zorg_type_code': zorg_type_code,
                    'zorg_type_attribuut_code': zorg_type_attribuut_code,
                    'zorg_type_cluster1': zorg_type_cluster01,
                    'zorg_type_cluster2': zorg_type_cluster02,
                    'begin_datum': begin_datum,
                    'eind_datum': eind_datum
                }

                if sleutel not in ZorgType.__zorg_type_tabel:
                    ZorgType.__zorg_type_tabel[sleutel] = []

                ZorgType.__zorg_type_tabel[sleutel].append(rij)

        print("Aantal zorgtypen: %d" % (regel_nummer - 1))
Ejemplo n.º 13
0
    def zorg_instelling_aantal(self, zorg_instelling_code: str) -> int:
        """
        Geeft het aantal malen (met inachtneming van weegfactor) dat deze zorginstelling voldoet aan een
        zorginstellingcode.

        :param str zorg_instelling_code: De AGB-code van de zorginstelling.

        :rtype: int
        """
        return 1 if self.__zorg_instelling_code == clean_code(
            zorg_instelling_code, LEN_ZORG_INSTELLING_CODE) else 0
Ejemplo n.º 14
0
    def __lees_behandel_klasse_tabel(folder):
        """
        Leest de behandelklasse tabel (opgeslagen in CSV).
        """
        with open(folder + '/BehandelKlassen.csv') as csv_file:
            reader = csv.reader(csv_file, )
            regel_nummer = 0
            for regel in reader:
                regel_nummer += 1

                # Sla de eerste regel met koppen over.
                if regel_nummer == 1:
                    continue

                zorg_product_groep_code = clean_code(
                    regel[0], LEN_ZORG_PRODUCT_GROEP_CODE)
                zorg_activiteit_code = clean_code(regel[1],
                                                  LEN_ZORG_ACTIVITEIT_CODE)
                behandel_klasse_code = clean_str(regel[2])
                begin_datum = clean_date(regel[4])
                eind_datum = clean_date(regel[5])

                sleutel = (zorg_product_groep_code, zorg_activiteit_code,
                           behandel_klasse_code)

                rij = {
                    'zorg_product_groep_code': zorg_product_groep_code,
                    'zorg_activiteit_code': zorg_activiteit_code,
                    'behandel_klasse_code': behandel_klasse_code,
                    'begin_datum': begin_datum,
                    'eind_datum': eind_datum
                }

                if sleutel not in ZorgActiviteit.__behandel_klassen_tabel:
                    ZorgActiviteit.__behandel_klassen_tabel[sleutel] = []

                ZorgActiviteit.__behandel_klassen_tabel[sleutel].append(rij)

        print("Aantal behandelklassen: %d" % (regel_nummer - 1))
Ejemplo n.º 15
0
    def __init__(self, zorg_activiteit_code: str, aantal: int):
        """
        Object constructor.

        :param str zorg_activiteit_code: De code van deze zorgactiviteit.
        :param int aantal: Het aantal malen dat deze zorgactiviteit is uitgevoerd.
        """
        self.__zorg_activiteit_code = clean_code(zorg_activiteit_code, LEN_ZORG_ACTIVITEIT_CODE)
        """
        De code van deze zorgactiviteit.

        :type: str
        """

        self.__aantal = clean_int(aantal, 0)
        """
Ejemplo n.º 16
0
    def telling_zorg_activiteit(self, zorg_activiteit_code: str, weeg_factor_nummer: int) -> int:
        """
        Geeft het aantal zorgactiviteiten (met inachtneming van weegfactor) dat in dit subtraject voldoet aan een
        zorgactiviteitcode.

        :param str zorg_activiteit_code: De zorgactiviteitcode.
        :param int weeg_factor_nummer: Het weegfactornummer (0..2).

        :rtype: int
        """
        aantal = 0
        zorg_activiteit_code = clean_code(zorg_activiteit_code, LEN_ZORG_ACTIVITEIT_CODE)
        for zorg_activiteit in self.__zorg_activiteiten:
            aantal += zorg_activiteit.zorg_activiteit_aantal(zorg_activiteit_code,
                                                             weeg_factor_nummer,
                                                             self.__begin_datum)

        return aantal
Ejemplo n.º 17
0
    def specialisme_aantal(self, specialisme_code: str, datum: str) -> int:
        """
        Geeft het aantal malen (d.w.z. 0 of 1) dat dit specialisme voldoet aan een attributecode op een gegeven datum
        .
        :param str specialisme_code: De attribuutcode waaraan voldaan moet worden.
        :param str datum: De datum.

        :rtype: int
        """
        referentie = self.__get_specialisme_referentie(datum)

        if not referentie:
            # Het specialisme komt niet voor in de referentie tabel. Geef 0 terug.
            return 0

        if referentie['specialisme_code'] == clean_code(specialisme_code, LEN_SPECIALISME_CODE):
            return 1

        return 0
Ejemplo n.º 18
0
    def __vertaal_zorgactiviteit_code(zorg_activiteit_code: str, datum: str):
        """
        Vertaalt een "nieuwe" zorgactiviteitcode naar een "oude" zorgactiviteitcode die geldig is ten tijde van het
        begin van het subtraject.

        :param str zorg_activiteit_code: De "nieuwe" zorgactiviteitcode.
        :param str datum: De begindatum van het subtraject.
        """
        zorg_activiteit_code = clean_code(zorg_activiteit_code, LEN_ZORG_ACTIVITEIT_CODE)

        if zorg_activiteit_code in ZorgActiviteit.__zorg_activiteiten_vertaal_tabel:
            for vertaling in ZorgActiviteit.__zorg_activiteiten_vertaal_tabel[zorg_activiteit_code]:
                if vertaling['begin_datum'] <= datum <= vertaling['eind_datum']:
                    # Een geldige vertaling gevonden. geef de "oude" zorgactiviteitcode terug.
                    return vertaling['zorg_activiteit_code_oud']

            # Er is geen vertaling van toepassing ten tijde van het begin van het subtraject. Geef de gegeven
            # zorgactiviteitcode terug.
            return zorg_activiteit_code
        else:
            # Er is geen enkele vertaling voor de zorgactiviteitcode. Geef de gegeven zorgactiviteitcode terug.
            return zorg_activiteit_code