Beispiel #1
0
    def test_run6(self):
        print('======================================================')
        print('===        R U N  6                                ===')
        print('======================================================')
        # # naam terug naar oorspronkelijke waarde
        exec_sql(source_db_sql[4], test_system_config['source_connection'])

        mapping = SorToEntityMapping('handeling_hstage', Handeling,
                                     self.pipe.sor)
        mapping.map_bk('id')
        mapping.map_field("naam", Handeling.Default.naam)
        mapping.map_field("datum::date", Handeling.Default.datum)
        mapping.map_field("kosten::numeric", Handeling.Financieel.kostprijs)
        self.pipe.mappings.append(mapping)

        self.pipeline.run()

        self.assertEqual(get_row_count('sor_extra.handeling_hstage'), 5)
        self.assertEqual(get_row_count('dv.handeling_hub'), 2)
        self.assertEqual(get_row_count('dv.handeling_sat'), 5)
        self.assertEqual(get_row_count('dv.handeling_sat_financieel'), 2)

        revision = get_fields('dv.handeling_sat', [6],
                              filter='_runid = 0.06')[0][0]
        self.assertEqual(revision, 3)

        actual_row = get_fields('dv.handeling_view',
                                fields=['default_naam'],
                                filter="bk = '1'")[0]
        self.assertEqual(actual_row[0], 'OK1')
Beispiel #2
0
    def test_run3(self):
        print('======================================================')
        print('===        R U N  3                                ===')
        print('======================================================')
        # # sat financieel krijgt nu ook mapping en moet waarden gaan bevatten

        mapping = SorToEntityMapping('handeling_hstage', Handeling,
                                     self.pipe.sor)
        mapping.map_bk('id')
        mapping.map_field("naam", Handeling.Default.naam)
        mapping.map_field("datum::date", Handeling.Default.datum)
        mapping.map_field("kosten::numeric", Handeling.Financieel.kostprijs)
        self.pipe.mappings.append(mapping)

        self.pipeline.run()

        self.assertEqual(get_row_count('sor_extra.handeling_hstage'), 2)
        self.assertEqual(get_row_count('dv.handeling_hub'), 2)
        self.assertEqual(get_row_count('dv.handeling_sat'), 2)
        self.assertEqual(get_row_count('dv.handeling_sat_financieel'), 2)
Beispiel #3
0
    def test_run2(self):
        print('======================================================')
        print('===        R U N  2                                ===')
        print('======================================================')
        # # geen aanpassingen doen, aantallen moeten gelijk blijven

        mapping = SorToEntityMapping('handeling_hstage', Handeling,
                                     self.pipe.sor)
        mapping.map_bk('id')
        mapping.map_field("naam", Handeling.Default.naam)
        mapping.map_field("datum", Handeling.Default.datum)
        self.pipe.mappings.append(mapping)

        self.pipeline.run()

        self.assertEqual(get_row_count('sor_extra.handeling_hstage'), 2)
        self.assertEqual(get_row_count('dv.handeling_hub'), 2)
        self.assertEqual(get_row_count('dv.handeling_sat'), 2)
        self.assertEqual(get_row_count('dv.handeling_sat_financieel'), 0)
Beispiel #4
0
def init_sor_to_dv_mappings(sor):
    mappings = []
    mapping = SorToEntityMapping('patient_hstage', Patient, sor)
    mapping.map_bk('patientnummer')
    # mapping.map_field('lower(upper(achternaam)) => personalia.achternaam text')
    # mapping.map_field('tussenvoegsels => personalia.tussenvoegsels text')
    # mapping.map_field('voornaam => personalia.voornaam text')
    # mapping.map_field('straat => adres.straat text')
    # mapping.map_field('huisnummer::integer => adres.huisnummer integer')
    # mapping.map_field('huisnummertoevoeging => adres.huisnummertoevoeging text')
    # mapping.map_field('postcode => adres.postcode text')
    # mapping.map_field('plaats => adres.plaats text')
    # mapping.map_field('geslacht => default.geslacht text')
    # mapping.map_field('now() => default.geboortedatum date')
    # mapping.map_field("Coalesce(inschrijvingsnummer, 'jahgsd') => default.inschrijvingsnummer text")
    # mapping.map_field('bsn => default.bsn text')
    # mapping.map_field('inschrijvingsdatum::date => default.inschrijvingsdatum date')
    mapping.map_field(CreateAgb('inschrijvingsdatum', 'bsn'), Patient.Personalia.achternaam)
    mapping.map_field(CreateAgb('plaats', 'bsn'), Patient.Personalia.tussenvoegsels)
    mappings.append(mapping)
    return mappings
Beispiel #5
0
    def test_run1(self):
        print('======================================================')
        print('===        R U N  1                                ===')
        print('======================================================')
        # # maak tabellen in bron leeg
        exec_sql(source_db_sql[0], test_system_config['source_connection'])
        # # vul bron tabellen met initiele waarden
        exec_sql(source_db_sql[1], test_system_config['source_connection'])
        # exec_sql(source_db_sql[2], test_system_config['source_connection'])

        mapping = SorToEntityMapping('handeling_hstage', Handeling,
                                     self.pipe.sor)
        mapping.map_bk('id')
        mapping.map_field("naam", Handeling.Default.naam)
        mapping.map_field("datum::timestamp", Handeling.Default.datum)
        self.pipe.mappings.append(mapping)

        self.pipeline.run()

        self.assertEqual(get_row_count('sor_extra.handeling_hstage'), 2)
        self.assertEqual(get_row_count('dv.handeling_hub'), 2)
        self.assertEqual(get_row_count('dv.handeling_sat'), 2)
        self.assertEqual(get_row_count('dv.handeling_sat_financieel'), 0)
Beispiel #6
0
def init_sor_to_dv_mappings(pipe):
    mappings = []

    sor = pipe.sor

    mapping = SorToEntityMapping('zorgverlener_hstage', Zorgverlener, sor)
    mapping.map_field("zorgverlenernummer", Zorgverlener.bk)
    mapping.map_field('achternaam', Zorgverlener.Personalia.achternaam)
    mapping.map_field('tussenvoegsels', Zorgverlener.Personalia.tussenvoegsels)
    mapping.map_field('voorletters', Zorgverlener.Personalia.voorletters)
    mapping.map_field('voornaam', Zorgverlener.Personalia.voornaam)
    # mapping.map_field('straat', Zorgverlener.Adres.straat)
    # mapping.map_field('huisnummer::integer', Zorgverlener.Adres.huisnummer)
    # mapping.map_field('huisnummer_toevoeging', Zorgverlener.Adres.huisnummer_toevoeging)
    # mapping.map_field('postcode', Zorgverlener.Adres.postcode)
    # mapping.map_field('plaats', Zorgverlener.Adres.plaats)
    # mapping.map_field('land', Zorgverlener.Adres.land)
    mapping.map_field('zorgverlenernummer',
                      Zorgverlener.Default.zorgverlenernummer)
    mapping.map_field('aanvangsdatum::date',
                      Zorgverlener.Default.aanvangsdatum)
    mapping.map_field('einddatum::date', Zorgverlener.Default.einddatum)

    mapping.map_field('telefoon',
                      Zorgverlener.ContactGegevens.telnummer,
                      type=Zorgverlener.ContactGegevens.Types.telefoon)
    mapping.map_field('telefoon_landcode',
                      Zorgverlener.ContactGegevens.landcode,
                      type=Zorgverlener.ContactGegevens.Types.telefoon)
    mapping.map_field('telefoon_datum::date',
                      Zorgverlener.ContactGegevens.datum,
                      type=Zorgverlener.ContactGegevens.Types.telefoon)
    mapping.map_field('mobiel',
                      Zorgverlener.ContactGegevens.telnummer,
                      type=Zorgverlener.ContactGegevens.Types.mobiel)
    mapping.map_field('mobiel_landcode',
                      Zorgverlener.ContactGegevens.landcode,
                      type=Zorgverlener.ContactGegevens.Types.mobiel)
    mapping.map_field('mobiel_datum::date',
                      Zorgverlener.ContactGegevens.datum,
                      type=Zorgverlener.ContactGegevens.Types.mobiel)
    mapping.map_field('mobiel2',
                      Zorgverlener.ContactGegevens.telnummer,
                      type=Zorgverlener.ContactGegevens.Types.mobiel2)
    mapping.map_field('mobiel2_landcode',
                      Zorgverlener.ContactGegevens.landcode,
                      type=Zorgverlener.ContactGegevens.Types.mobiel2)
    mapping.map_field('mobiel2_datum::date',
                      Zorgverlener.ContactGegevens.datum,
                      type=Zorgverlener.ContactGegevens.Types.mobiel2)
    mappings.append(mapping)

    mapping = SorToEntityMapping('zorgverlener_hstage', Adres, sor)
    mapping.map_field(
        "postcode||huisnummer||COALESCE(huisnummer_toevoeging,'')", Adres.bk)
    mapping.map_field('straat', Adres.Default.straat)
    mapping.map_field('huisnummer::integer', Adres.Default.huisnummer)
    mapping.map_field('huisnummer_toevoeging',
                      Adres.Default.huisnummer_toevoeging)
    mapping.map_field('postcode', Adres.Default.postcode)
    mapping.map_field('plaats', Adres.Default.plaats)
    mapping.map_field('land', Adres.Default.land)
    mappings.append(mapping)

    mapping = SorToEntityMapping('zorginstelling_hstage', Zorginstelling, sor)
    mapping.map_field("zorginstellings_nummer", Zorginstelling.bk)
    mapping.map_field('zorginstellings_naam',
                      Zorginstelling.Default.zorginstellings_naam)
    # mapping.map_field('straat', Zorginstelling.Adres.straat)
    # mapping.map_field('huisnummer::integer', Zorginstelling.Adres.huisnummer)
    # mapping.map_field('huisnummer_toevoeging', Zorginstelling.Adres.huisnummer_toevoeging)
    # mapping.map_field('postcode', Zorginstelling.Adres.postcode)
    # mapping.map_field('plaats', Zorginstelling.Adres.plaats)
    # mapping.map_field('land', Zorginstelling.Adres.land)
    mappings.append(mapping)

    mapping = SorToEntityMapping('zorginstelling_hstage', Adres, sor)
    mapping.map_field(
        "postcode||huisnummer||COALESCE(huisnummer_toevoeging,'')", Adres.bk)
    mapping.map_field('straat', Adres.Default.straat)
    mapping.map_field('huisnummer::integer', Adres.Default.huisnummer)
    mapping.map_field('huisnummer_toevoeging',
                      Adres.Default.huisnummer_toevoeging)
    mapping.map_field('postcode', Adres.Default.postcode)
    mapping.map_field('plaats', Adres.Default.plaats)
    mapping.map_field('land', Adres.Default.land)
    mappings.append(mapping)

    link_mapping = SorToLinkMapping('zorgverlener_hstage',
                                    Zorgverlener_Zorginstelling_Link, sor)
    link_mapping.map_entity(Zorgverlener_Zorginstelling_Link.zorgverlener)
    link_mapping.map_entity(Zorgverlener_Zorginstelling_Link.huisarts)
    link_mapping.map_entity(Zorgverlener_Zorginstelling_Link.fysio)

    link_mapping.map_bk("zorginstellings_nummer",
                        Zorgverlener_Zorginstelling_Link.zorginstelling)
    mappings.append(link_mapping)

    link_mapping = SorToLinkMapping('zorgverlener_hstage',
                                    Zorgverlener_Adres_Link, sor)
    link_mapping.map_entity(Zorgverlener_Adres_Link.zorgverlener)
    link_mapping.map_entity((Zorgverlener_Adres_Link.adres))
    mappings.append(link_mapping)

    link_mapping = SorToLinkMapping('zorginstelling_hstage',
                                    Zorginstelling_Adres_Link, sor)
    link_mapping.map_entity(Zorginstelling_Adres_Link.zorginstelling)
    link_mapping.map_entity((Zorginstelling_Adres_Link.adres))
    mappings.append(link_mapping)

    return mappings

    def get_row_count(unittest, table_name, count):
        test_sql = "SELECT * FROM " + table_name
        result = execute_sql(test_sql)
        unittest.assertEqual(len(result), count, table_name)
Beispiel #7
0
    def test_sor_to_dv_mappings(self):
        sor = self.pipe.sor
        mapping = SorToEntityMapping('patient_hstage', Patient, sor)
        mapping.map_field("patientnummer || '_test'", Patient.Hub.bk)
        mapping.map_field('achternaam', Patient.Personalia.achternaam)
        mapping.map_field('tussenvoegsels', Patient.Personalia.tussenvoegsels)
        mapping.map_field('voornaam', Patient.Personalia.voornaam)
        mapping.map_field('straat', Patient.Adres.straat)
        mapping.map_field('huisnummer::integer', Patient.Adres.huisnummer)
        mapping.map_field('huisnummertoevoeging',
                          Patient.Adres.huisnummer_toevoeging)
        mapping.map_field('postcode')
        mapping.map_field('LEFT(hstg.postcode, 4)', Patient.Adres.postcode)
        mapping.map_field('plaats', Patient.Adres.plaats)
        mapping.map_field('geslacht')
        mapping.map_field('geboortedatum::date', Patient.Default.geboortedatum)
        mapping.map_field('inschrijvingsnummer',
                          Patient.Inschrijving.inschrijfnummer)
        mapping.map_field('bsn => default.bsn', Patient.Inschrijving.bsn)
        mapping.map_field('inschrijvingsdatum::date')
        mapping.map_field('telefoon',
                          Patient.Contactgegevens.telnummer,
                          type=Patient.Contactgegevens.Types.telefoon)
        mapping.map_field('mobiel',
                          Patient.Contactgegevens.telnummer,
                          type=Patient.Contactgegevens.Types.mobiel)
        mapping.map_field('telefoon',
                          Patient.Contactgegevens.telnummer,
                          type='telefoon')
        self.assertEqual(mapping.name, 'patient_hstage -> patient_entity')
        num_sats = len(mapping.sat_mappings)
        bk = mapping.bk_mapping
        self.assertEqual(num_sats, 6)
        self.assertEqual(bk, "patientnummer || '_test'")
        sat_mapping = mapping.sat_mappings[
            'patient_hstage -> patient_sat_adres']
        num_field_mappings = len(sat_mapping.field_mappings)
        self.assertEqual(num_field_mappings, 5)
        self.assertIsInstance(sat_mapping.field_mappings[3].source,
                              FieldTransformation)

        source_fields_sql_part = sat_mapping.get_source_fields()
        source_fields_sql_part2 = sat_mapping.get_source_fields(alias='src')
        self.assertEqual(
            source_fields_sql_part,
            'hstg.straat,hstg.huisnummer::integer,hstg.huisnummertoevoeging,LEFT(hstg.postcode, 4),hstg.plaats'
        )
Beispiel #8
0
    def test_run7(self):
        print('======================================================')
        print('===        R U N  7                                ===')
        print('======================================================')
        # # naam terug naar oorspronkelijke waarde
        exec_sql(source_db_sql[4], test_system_config['source_connection'])

        mapping = SorToEntityMapping('handeling_hstage', Handeling,
                                     self.pipe.sor)
        mapping.map_bk('id')
        mapping.map_field("naam", Handeling.Default.naam)
        mapping.map_field("datum::date", Handeling.Default.datum)
        mapping.map_field("kosten::numeric", Handeling.Financieel.kostprijs)
        mapping.map_field("kosten::numeric+200",
                          Handeling.Financieel.vraagprijs)
        mapping.map_field("(21.0)", Handeling.Financieel.btw)
        mapping.map_field(ConstantValue(9.98), Handeling.Financieel.korting)
        self.pipe.mappings.append(mapping)

        self.pipeline.run()

        self.assertEqual(get_row_count('sor_extra.handeling_hstage'), 5)
        self.assertEqual(get_row_count('dv.handeling_hub'), 2)
        self.assertEqual(get_row_count('dv.handeling_sat'), 5)
        self.assertEqual(get_row_count('dv.handeling_sat_financieel'), 4)

        revision = get_fields('dv.handeling_sat_financieel',
                              fields=['_revision'],
                              filter='_runid = 0.07')[0][0]
        self.assertEqual(revision, 1)

        actual_row = get_fields('dv.handeling_view',
                                fields=[
                                    'financieel_kostprijs',
                                    'financieel_vraagprijs', 'financieel_btw',
                                    'financieel_korting'
                                ],
                                filter="bk = '2'")[0]

        self.assertEqual(actual_row[0], 500.0)
        self.assertEqual(actual_row[1], 700.0)
        self.assertEqual(actual_row[2], 21.0)
        self.assertEqual(str(actual_row[3] + 1), '10.98')