Generator skierowania MP (XML v0.3)
Skrypt buduje plik CDA (ClinicalDocument HL7 v3) zgodny z profilem e-skierowania medycyny pracy v0.3 na podstawie minimalnego JSON-a z danymi klinicznymi i identyfikatorami. Stałe OID-y i domyślne root identyfikatorów bierze z test_profile_defaults.json (można nadpisać w JSON przez blok identifiers).
Pakiet pionowy: ../README.md. Specyfikacja profilu: ../profile/profil-cda.html — m.in. podział odpowiedzialności API.ERP (emisja z KS‑ZZL) vs API.MED (odbiór kliniczny): sekcja „Warstwa integracji”. Schemat JSON: ../contracts/skierowanie_mp_input.schema.json.
Wymagania
- Python 3.10+
- Zależności:
pip install -r requirements.txt(jinja2,jsonschema)
Użycie
cd tools
pip install -r requirements.txt
python3 generate_skierowanie_mp.py --input examples/minimal_skierowanie.json --output skierowanie.xml
Przykłady example_01_* … example_03_* → XML do examples/generated/:
mkdir -p examples/generated
for f in example_01_wstepne example_02_przemysl example_03_kontrolne; do
python3 generate_skierowanie_mp.py -i "examples/${f}.json" -o "examples/generated/${f}.xml"
done
Skróty: -i / -o.
Opcje
| Opcja | Znaczenie |
|---|---|
--no-validate-schema |
Pomija walidację pliku względem skierowanie_mp_input.schema.json |
Pliki pomocnicze
| Plik | Opis |
|---|---|
examples/minimal_skierowanie.json |
Przykładowe wejście |
examples/example_01_wstepne.json |
Badanie wstępne, bez daty ostatniego badania, additional_info: null |
examples/example_02_przemysl.json |
Okresowe, kilka grup czynników, extra_description, trzy badania dodatkowe |
examples/example_03_kontrolne.json |
Kontrolne, jeden czynnik (hałas), pusty additional_info |
examples/generated/*.xml |
Wynik generate_skierowanie_mp.py dla powyższych (generowane lokalnie) |
skierowanie_mp_input.schema.json |
Schemat JSON — lista pól i typów |
test_profile_defaults.json |
Domyślne identifiers (OID / root) |
templates/skierowanie_mp_v0.3.xml.j2 |
Szablon XML |
Test
Generuje XML z przykładowego JSON-a, sprawdza parsowanie i kończy bez błędu.
Uwagi
document.effective_timemusi mieć strefę (np.+01:00lubZ).- Brak
purpose.last_exam_datew JSON → w XML pomijany jest akapit ientryRelationshipz datą ostatniego badania (LAST-EXAM-DATE). - Brak
purpose.current_exam_valid_untilw JSON → pomijany akapit ientryRelationshipz datą ważności (EXAM-VALID-UNTIL). Przy umawianiu terminu badania MP zwykle ważniejsza jest data ważności niż data wykonania ostatniego badania. - Czynniki narażenia (
exposure_groups): opcjonalneextra_descriptiontworzy przypis w tabeli, listę „Uwagi” i blokEXPOSURE-DESCw części strukturalnej.