Serveur d'actes¶
serveur_actes ¶
evenementsServeurActes / evenementServeurActe (actes CCAM) — un fichier par événement.
evenements (1 ligne = 1 fichier ; colonnes-chemins relatives à evenementServeurActe)
obligatoires : evt_id, ipp, sexe, date_naissance
facultatives : patient (ipp_recepteur, nom_usuel, nom_naissance, prenom),
venue (nda, nda_recepteur, venue_date_entree, venue_heure_entree, venue_mode_entree,
venue_uf_responsable, venue_date_sortie, venue_heure_sortie),
intervention (intervention_id, intervention_date_debut, intervention_heure_debut,
intervention_date_fin, intervention_heure_fin, intervention_uf,
demande_date, demande_heure, demande_uf),
identifiant_message, date_heure_production, commentaire
actes (1 ligne = 1 acteCCAM ; colonnes-chemins relatives à acteCCAM)
obligatoires : evt_id, acte_id, code, activite, phase, date_execution, medecin
facultatives : heure_execution, uf (UF exécutante), medecin_principal ("oui"),
quantite, action ("creation"), facturable, valide, extension_pmsi,
modificateurs (ex. "7J"), extension_documentaire, association_non_prevue
write_evenements_serveur_actes ¶
write_evenements_serveur_actes(
evenements: Table,
actes: Table,
*,
entete: dict | None = None,
out_dir: str | Path,
filename: str | Callable[[dict], str] = "{evt_id}.xml",
version: str | None = None,
xmlns: str | None = HPRIM_NS,
encoding: str = "UTF-8",
validate_xsd: str | bool = "error",
colmap: dict | None = None,
identifiant_egal_nom_fichier: bool = True,
fichier_ok: bool = False,
par_acte: bool = False,
) -> list[Path]
Écrit des fichiers evenementsServeurActes (actes CCAM), un par événement.
Unité atomique du serveur d'actes : l'acte (acteCCAM), porteur de l'attribut
action et d'un identifiant. par_acte=True écrit un message par acte.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
evenements
|
Table
|
une ligne par événement : patient, venue, intervention. |
required |
actes
|
Table
|
une ligne par acte CCAM. |
required |
entete
|
dict | None
|
voir |
None
|
out_dir
|
str | Path
|
dossier de sortie. |
required |
filename
|
str | Callable[[dict], str]
|
gabarit ou fonction. |
'{evt_id}.xml'
|
version
|
str | None
|
version du schéma. |
None
|
xmlns
|
str | None
|
voir |
HPRIM_NS
|
encoding
|
str
|
encodage des fichiers. |
'UTF-8'
|
validate_xsd
|
str | bool
|
|
'error'
|
colmap
|
dict | None
|
renommage de colonnes. |
None
|
identifiant_egal_nom_fichier
|
bool
|
si vrai (défaut), l'identifiantMessage de chaque
message est exactement le nom de son fichier sans extension ( |
True
|
fichier_ok
|
bool
|
dépose un fichier |
False
|
par_acte
|
bool
|
un message par acte (unité atomique) au lieu d'un par événement. Le
contexte (patient, venue, intervention) est répété ; |
False
|
Returns:
| Type | Description |
|---|---|
list[Path]
|
La liste des fichiers écrits. |
Examples:
Script examples/exemple_serveur_actes.py :
# Régénère data/xml_tests/actes/00001.xml : une intervention et quatre actes CCAM.
from datetime import date, datetime, time
import polars as pl
import pyhprimxml as hx
entete = {
"version": "2.00", # version HPRIM XML des messages
"emetteur": "TEST",
"destinataire": None,
"acquittement_attendu": "oui",
"commentaire": "HPRIM-TEST",
"date_heure_production": datetime(2024, 1, 1, 1, 1, 1),
}
# Une ligne par événement : patient, venue, intervention et demande
evenements = pl.DataFrame({
"evt_id": ["00001_acte"],
"ipp": ["123456789"], "ipp_recepteur": ["123456789"],
"sexe": ["M"], "nom_usuel": ["SANDWICK"], "prenom": ["JOHN"],
"date_naissance": [date(1970, 1, 1)],
"nda": ["987654321"], "nda_recepteur": ["987654321"],
"venue_date_entree": [date(2024, 1, 1)], "venue_heure_entree": [time(8, 0)],
"venue_uf_responsable": ["4321"],
"venue/@prive": ["non"],
"intervention_id": ["000000000001"],
"intervention_date_debut": [date(2024, 1, 1)], "intervention_heure_debut": [time(8, 10)],
"intervention_date_fin": [date(2024, 1, 1)], "intervention_heure_fin": [time(9, 0)],
"intervention_uf": ["4321"],
"demande_date": [date(2023, 12, 25)], "demande_heure": [time(2, 30)], "demande_uf": ["4321"],
})
# Une ligne par acte CCAM
actes = pl.DataFrame({
"evt_id": ["00001_acte"] * 4,
"acte_id": ["121212", "121213", "121214", "121215"],
"code": ["EBLA003", "YYYY033", "EPLF002", "NFKA006"],
"activite": [1] * 4, "phase": [0] * 4,
"date_execution": [date(2024, 1, 1)] * 4, "heure_execution": [time(8, 10)] * 4,
"medecin": ["01234567"] * 4, "uf": ["4321"] * 4,
"quantite": ["1"] * 4, # nombre5 : chaîne de chiffres dans le XSD
"facturable": ["oui"] * 4, "valide": ["oui"] * 4,
})
fichiers = hx.write_evenements_serveur_actes(
evenements, actes,
entete=entete,
out_dir="sortie/actes", # -> sortie/actes/00001_acte.xml
validate_xsd="warn",
)
read_evenements_serveur_actes ¶
read_evenements_serveur_actes(
sources: Sources,
*,
extra: dict[str, list[str]] | None = None,
version: str | None = None,
backend: str = "polars",
exiger_ok: bool = False,
) -> dict[str, Table]
Lit des fichiers evenementsServeurActes (actes CCAM) vers des tables.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sources
|
Sources
|
fichier, dossier, motif glob, bytes ou liste. |
required |
extra
|
dict[str, list[str]] | None
|
colonnes-chemins supplémentaires, par table. |
None
|
version
|
str | None
|
forcer une version de schéma. |
None
|
backend
|
str
|
|
'polars'
|
exiger_ok
|
bool
|
ne lit que les |
False
|
Returns:
| Type | Description |
|---|---|
dict[str, Table]
|
|
iter_evenements_serveur_actes ¶
iter_evenements_serveur_actes(
evenements: Table,
actes: Table,
*,
entete: dict | None = None,
version: str | None = None,
colmap: dict | None = None,
par_acte: bool = False,
) -> Iterator[tuple[dict, dict]]
Itère sur (ligne evenement, arbre) : un arbre par événement, ou par acte avec
par_acte=True (unité atomique du serveur d'actes).