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))
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))
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))
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) """
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)
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))
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) """
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) """
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)
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) """
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
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))
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
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))
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) """
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
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
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