Przejdź do treści

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

python3 test_smoke_generator.py -v

Generuje XML z przykładowego JSON-a, sprawdza parsowanie i kończy bez błędu.

Uwagi

  • document.effective_time musi mieć strefę (np. +01:00 lub Z).
  • Brak purpose.last_exam_date w JSON → w XML pomijany jest akapit i entryRelationship z datą ostatniego badania (LAST-EXAM-DATE).
  • Brak purpose.current_exam_valid_until w JSON → pomijany akapit i entryRelationship z 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): opcjonalne extra_description tworzy przypis w tabeli, listę „Uwagi” i blok EXPOSURE-DESC w części strukturalnej.