import polars as pl
import xml.etree.ElementTree as ET
import osInterrogation d’un fichier hprimXML avec python via xpath
# Définition du xmlns, namespace XML hprimXML (on fait un alias a <-> http://www.hprim.org/hprimXML)
ns = {'a': 'http://www.hprim.org/hprimXML'}# Définition des xpath où trouver les données
hprim_actes_mapping = dict(
patient_ipp = "a:evenementServeurActe/a:patient/a:identifiant/a:emetteur/a:valeur",
patient_nom_usuel = "a:evenementServeurActe/a:patient/a:personnePhysique/a:nomUsuel",
patient_prenoms = "a:evenementServeurActe/a:patient/a:personnePhysique/a:prenoms/*",
patient_date_naissance = "a:evenementServeurActe/a:patient/a:personnePhysique/a:dateNaissance/*",
venue_iep = "a:evenementServeurActe/a:venue/a:identifiant/a:emetteur/a:valeur",
venue_date_debut = "a:evenementServeurActe/a:venue/a:entree/a:dateHeureOptionnelle/*",
venue_ufr = "a:evenementServeurActe/a:venue/a:entree/a:uniteFonctionnelleResponsable/",
intervention_date_debut = "a:evenementServeurActe/a:intervention/a:debut/*",
intervention_date_fin = "a:evenementServeurActe/a:intervention/a:fin/*",
intervention_uf = "a:evenementServeurActe/a:intervention/a:uniteFonctionnelle/a:code",
actes_ccam = "a:evenementServeurActe/a:actesCCAM/a:acteCCAM/a:codeActe"
)# fonction pour extraire un élément qui est prudente (si l'élément n'existe pas, retourne None)
def get_element(tree, element):
try:
return ' '.join(x.text
for x in
tree.findall(element, ns)
)
except:
return Nonedef parse_hprim_xml_actes(xml_file):
u = ET.parse(xml_file)
temp = dict()
for key in hprim_actes_mapping.keys():
temp[key] = get_element(u, hprim_actes_mapping.get(key))
return tempparse_hprim_xml_actes('pyhprimxml/data/xml_tests/actes/00001.xml'){'patient_ipp': '123456789',
'patient_nom_usuel': 'SANDWICK',
'patient_prenoms': 'JOHN',
'patient_date_naissance': '1970-01-01',
'venue_iep': '987654321',
'venue_date_debut': '2024-01-01 08:00:00',
'venue_ufr': '4321',
'intervention_date_debut': '2024-01-01 08:10:00',
'intervention_date_fin': '2024-01-01 09:00:00',
'intervention_uf': '4321',
'actes_ccam': 'EBLA003 YYYY033 EPLF002 NFKA006'}