from lxml import etree
from kerapu.shredder.Shredder import Shredder
[documentatie]class ReferentieShredder(Shredder):
"""
Klasse voor het schreden en opslaan in CSV-formaat van referentietabellen opgeslagen in XML-formaat.
"""
# ------------------------------------------------------------------------------------------------------------------
[documentatie] def shred_xml_file(self, filename: str) -> None:
"""
Slaat de referentietabellen op in CSV-formaat.
:param str filename: De filenaam van het XML bestand.
"""
self._io.title('Shredder')
doc = etree.parse(filename)
xpath = '/soapenv:Envelope/soapenv:Body/InlezenReferenties/Referenties/'
namespaces = {'soapenv': 'http://schemas.xmlsoap.org/soap/envelope/'}
# Extract AfsluitReden.
table = doc.xpath(xpath + 'AfsluitRedenen/AfsluitReden', namespaces=namespaces)
fields = ['AfsluitRedenCode',
'AfsluitRedenOmschrijving',
'BeginDatum',
'EindDatum',
'VersieDatum']
self.extract_table(table, 'AfsluitRedenen.csv', fields, fields)
# Extract BehandelKlasse.
table = doc.xpath(xpath + 'BehandelKlassen/BehandelKlasse', namespaces=namespaces)
fields = ['ZorgProductGroepCode',
'ZorgActiviteitCode',
'BehandelKlasseCode',
'BehandelKlasseOmschrijving',
'BeginDatum',
'EindDatum',
'VersieDatum']
self.extract_table(table, 'BehandelKlassen.csv', fields, fields)
# Extract Diagnose.
table = doc.xpath(xpath + 'Diagnosen/Diagnose', namespaces=namespaces)
fields = ['SpecialismeCode',
'DiagnoseCode',
'DiagnoseOmschrijving',
'DiagnoseAttribuutCode',
'ICD10DiagnoseCode',
'DiagnoseCluster1',
'DiagnoseCluster2',
'DiagnoseCluster3',
'DiagnoseCluster4',
'DiagnoseCluster5',
'DiagnoseCluster6',
'BeginDatum',
'EindDatum',
'VersieDatum']
xpaths = ['SpecialismeCode',
'DiagnoseCode',
'DiagnoseOmschrijving',
'DiagnoseAttribuutCode',
'ICD10DiagnoseCode',
"DiagnoseCluster/DiagnoseClusterItem[@Key='1']",
"DiagnoseCluster/DiagnoseClusterItem[@Key='2']",
"DiagnoseCluster/DiagnoseClusterItem[@Key='3']",
"DiagnoseCluster/DiagnoseClusterItem[@Key='4']",
"DiagnoseCluster/DiagnoseClusterItem[@Key='5']",
"DiagnoseCluster/DiagnoseClusterItem[@Key='6']",
'BeginDatum',
'EindDatum',
'VersieDatum']
self.extract_table(table, 'Diagnosen.csv', fields, xpaths)
# Extract Geslacht.
table = doc.xpath(xpath + 'Geslachten/Geslacht', namespaces=namespaces)
fields = ['GeslachtCodeNEN',
'GeslachtCodeHL7',
'GeslachtOmschrijving',
'BeginDatum',
'EindDatum',
'VersieDatum']
self.extract_table(table, 'Geslachten.csv', fields, fields)
# Extract LimitatieMachtiging.
table = doc.xpath(xpath + 'LimitatieMachtigingen/LimitatieMachtiging', namespaces=namespaces)
fields = ['SpecialismeCode',
'DiagnoseCode',
'DiagnoseOmschrijving',
'ZorgActiviteitCode',
'ZorgActiviteitOmschrijving',
'BeginDatum',
'EindDatum',
'VersieDatum']
self.extract_table(table, 'LimitatieMachtigingen.csv', fields, fields)
# Extract Specialisme.
table = doc.xpath(xpath + 'Specialismen/Specialisme', namespaces=namespaces)
fields = ['SpecialismeCode',
'SpecialismeOmschrijving',
'SpecialismeIndicatie',
'SpecialismeOID',
'SpecialismeCluster1',
'SpecialismeCluster2',
'IndicatieAanspraakbeperking',
'BeginDatum',
'EindDatum',
'VersieDatum']
xpaths = ['SpecialismeCode',
'SpecialismeOmschrijving',
'SpecialismeIndicatie',
'SpecialismeOID',
'SpecialismeCluster/SpecialismeClusterItem[(@Key=1)]',
'SpecialismeCluster/SpecialismeClusterItem[(@Key=2)]',
'IndicatieAanspraakbeperking',
'BeginDatum',
'EindDatum',
'VersieDatum']
self.extract_table(table, 'Specialismen.csv', fields, xpaths)
# Extract VertaalZorgActiviteit.
table = doc.xpath(xpath + 'VertaalZorgActiviteiten/VertaalZorgActiviteit', namespaces=namespaces)
fields = ['ZorgActiviteitCode',
'ZorgActiviteitOmschrijving',
'ZorgActiviteitCodeOud',
'ZorgActiviteitOmschrijvingOud',
'BeginDatum',
'EindDatum',
'VersieDatum']
self.extract_table(table, 'VertaalZorgActiviteiten.csv', fields, fields)
# Extract ZorgActiviteit.
table = doc.xpath(xpath + 'ZorgActiviteiten/ZorgActiviteit', namespaces=namespaces)
fields = ['ZorgActiviteitCode',
'ZorgActiviteitOmschrijving',
'ZorgActiviteitCluster01',
'ZorgActiviteitCluster02',
'ZorgActiviteitCluster03',
'ZorgActiviteitCluster04',
'ZorgActiviteitCluster05',
'ZorgActiviteitCluster06',
'ZorgActiviteitCluster07',
'ZorgActiviteitCluster08',
'ZorgActiviteitCluster09',
'ZorgActiviteitCluster10',
'ZorgActiviteitWeegFactor1',
'ZorgActiviteitWeegFactor2',
'WBMVCode',
'InnovatieCode',
'AanspraakCode',
'TariefType',
'Zorgprofielklassecode',
'OpNota',
'BeginDatum',
'EindDatum',
'VersieDatum']
xpaths = ['ZorgActiviteitCode',
'ZorgActiviteitOmschrijving',
'ZorgActiviteitCluster/ZorgActiviteitClusterItem[@Key=1]',
'ZorgActiviteitCluster/ZorgActiviteitClusterItem[@Key=2]',
'ZorgActiviteitCluster/ZorgActiviteitClusterItem[@Key=3]',
'ZorgActiviteitCluster/ZorgActiviteitClusterItem[@Key=4]',
'ZorgActiviteitCluster/ZorgActiviteitClusterItem[@Key=5]',
'ZorgActiviteitCluster/ZorgActiviteitClusterItem[@Key=6]',
'ZorgActiviteitCluster/ZorgActiviteitClusterItem[@Key=7]',
'ZorgActiviteitCluster/ZorgActiviteitClusterItem[@Key=8]',
'ZorgActiviteitCluster/ZorgActiviteitClusterItem[@Key=9]',
'ZorgActiviteitCluster/ZorgActiviteitClusterItem[@Key=10]',
'ZorgActiviteitWeegFactor/ZorgActiviteitWeegFactorItem[@Key=1]',
'ZorgActiviteitWeegFactor/ZorgActiviteitWeegFactorItem[@Key=2]',
'WBMVCode',
'InnovatieCode',
'AanspraakCode',
'TariefType',
'Zorgprofielklassecode',
'OpNota',
'BeginDatum',
'EindDatum',
'VersieDatum']
self.extract_table(table, 'ZorgActiviteiten.csv', fields, xpaths)
# Extract ZorgProductGroep.
table = doc.xpath(xpath + 'ZorgProductGroepen/ZorgProductGroep', namespaces=namespaces)
fields = ['ZorgProductGroepCode',
'ZorgProductGroepOmschrijving',
'BeslisRegelStart',
'BeginDatum',
'EindDatum',
'VersieDatum']
self.extract_table(table, 'ZorgProductGroepen.csv', fields, fields)
# Extract ZorgType.
table = doc.xpath(xpath + 'ZorgTypen/ZorgType', namespaces=namespaces)
fields = ['SpecialismeCode',
'ZorgTypeCode',
'ZorgTypeOmschrijving',
'ZorgTypeAttribuutCode',
'ZorgTypeCluster1',
'ZorgTypeCluster2',
'BeginDatum',
'EindDatum',
'VersieDatum']
xpaths = ['SpecialismeCode',
'ZorgTypeCode',
'ZorgTypeOmschrijving',
'ZorgTypeAttribuutCode',
'ZorgTypeCluster/ZorgTypeClusterItem[(@Key=1)]',
'ZorgTypeCluster/ZorgTypeClusterItem[(@Key=2)]',
'BeginDatum',
'EindDatum',
'VersieDatum']
self.extract_table(table, 'ZorgTypen.csv', fields, xpaths)
# Extract ZorgVraag.
table = doc.xpath(xpath + 'ZorgVragen/ZorgVraag', namespaces=namespaces)
fields = ['SpecialismeCode',
'ZorgVraagCode',
'ZorgVraagOmschrijving',
'ZorgVraagAttribuutCode',
'ZorgVraagCluster1',
'ZorgVraagCluster2',
'BeginDatum',
'EindDatum',
'VersieDatum']
xpaths = ['SpecialismeCode',
'ZorgVraagCode',
'ZorgVraagOmschrijving',
'ZorgVraagAttribuutCode',
'ZorgVraagCluster/ZorgVraagClusterItem[(@Key=1)]',
'ZorgVraagCluster/ZorgVraagClusterItem[(@Key=2)]',
'BeginDatum',
'EindDatum',
'VersieDatum']
self.extract_table(table, 'ZorgVragen.csv', fields, xpaths)
# ----------------------------------------------------------------------------------------------------------------------