<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="CDA_PL_IG_1.3.2.xsl" type="text/xsl"?>
<!--
  ============================================================================
  e-Skierowanie na badanie medycyny pracy — wersja robocza 0.2
  
  Profil prywatny KAMSOFT S.A., dokument do wymiany lokalnej między
  pracodawcą-klientem a podmiotem służby medycyny pracy (PSMP).
  NIE jest przeznaczony do wymiany przez P1.
  
  Wzorowany strukturalnie na e-Skierowaniu na RTG (CeZ, HL7POL 1.3.2):
  templateId 2.16.840.1.113883.3.4424.13.10.1.4 extension 1.3.2
  
  XSLT do prezentacji: CDA_PL_IG_1.3.2.xsl (z polskiej IK CeZ)
  
  ZMIANY W STOSUNKU DO v0.1:
  - usunięto informationRecipient (Ad.7 - nadmiarowe, adresat z kontekstu)
  - usunięto functionCode w author (Ad.5 - rola wystawcy nie jest rejestrowana)
  - sekcja 4: badania dodatkowe przez ICD-9-PL (Ad.6)
  - sekcja 3: czynniki z OID centralnego (1.8.2) zamiast lokalnego klienta
    (zgodnie z Ad.2 - słownik centralny KAMSOFT, możliwe wpisy lokalne)
  - grupy czynników zawsze z OID centralnego 1.8.1
  - dodano przykład czynnika z lokalnego słownika klienta dla porównania
  
  OTWARTE WĄTKI:
  - [TL] OID-y w gałęzi 5 - czeka na decyzję Tomasza Latko
  - [Z1] Zakres pól pomiarowych - zespół potwierdzi po 8:00 (jak w SOMED)
  - [Z9] PESEL pracownika - przykład z PESEL-em; cudzoziemcy wg PIK HL7CDA
  ============================================================================
-->
<ClinicalDocument xmlns="urn:hl7-org:v3" xmlns:extPL="http://www.csioz.gov.pl/xsd/extPL/r3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="extPL:ClinicalDocument">
    
    <!-- ============================================================ -->
    <!-- NAGŁÓWEK DOKUMENTU                                            -->
    <!-- ============================================================ -->
    
    <typeId extension="POCD_HD000040" root="2.16.840.1.113883.1.3"/>
    
    <!-- templateId dokumentu - nowa gałąź KAMSOFT [TL] -->
    <templateId root="1.2.616.1.113769.5.1" extension="0.2"/>
    
    <!-- ID dokumentu - generator w gałęzi Referral klienta -->
    <!-- Wzorzec: 1.2.616.1.113769.4.z.i.w.l.15 gdzie z=1, i=1, w=000001 (KAMSOFT), l=93047 (instancja) -->
    <id extension="MP-2025-000123" root="1.2.616.1.113769.4.1.1.000001.93047.15" displayable="true"/>
    
    <!-- Kod dokumentu: LOINC 57147-1 + translation na klasyfikację dokumentów P1 -->
    <code code="57147-1" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" displayName="Occupational medicine Referral note">
        <translation code="02.10" displayName="Skierowanie na badanie lub leczenie" codeSystem="2.16.840.1.113883.3.4424.11.1.32" codeSystemName="KLAS_DOK_P1"/>
    </code>
    
    <title>Skierowanie na badanie profilaktyczne medycyny pracy</title>
    <effectiveTime value="20250115103000+0100"/>
    <confidentialityCode code="N" codeSystem="2.16.840.1.113883.5.25"/>
    <languageCode code="pl-PL"/>
    
    <setId extension="MP-2025-000123-SET" root="1.2.616.1.113769.4.1.1.000001.93047.15" displayable="true"/>
    <versionNumber value="1"/>
    
    <!-- ============================================================ -->
    <!-- PACJENT (PRACOWNIK)                                           -->
    <!-- Identyfikacja wg PIK HL7CDA (Ad.9):                          -->
    <!-- I. PESEL (zastosowany w przykładzie)                          -->
    <!-- II. Dowód osobisty + kraj                                     -->
    <!-- III. Paszport + kraj                                          -->
    <!-- IV. Lokalny identyfikator kraju nadania                       -->
    <!-- V. Inne (prawo jazdy, książeczka żeglarska, itp.)            -->
    <!-- ============================================================ -->
    
    <recordTarget>
        <templateId root="2.16.840.1.113883.3.4424.13.10.2.26"/>
        <patientRole>
            <!-- ID pacjenta w systemie pracodawcy (numer kadrowy) -->
            <id extension="EMP-4521" root="1.2.616.1.113769.4.1.1.000001.93047.10.1" displayable="false"/>
            <!-- PESEL (priorytet I wg PIK) -->
            <id extension="78030412345" root="2.16.840.1.113883.3.4424.1.1.616" displayable="true"/>
            <addr>
                <city>Katowice</city>
                <postalCode>40-235</postalCode>
                <streetName>Mariacka</streetName>
                <houseNumber>12</houseNumber>
                <unitID>5</unitID>
            </addr>
            <patient>
                <name>
                    <given>Jan</given>
                    <family>Nowak</family>
                </name>
                <administrativeGenderCode code="M" codeSystem="2.16.840.1.113883.5.1"/>
                <birthTime value="19780304"/>
            </patient>
        </patientRole>
    </recordTarget>
    
    <!-- ============================================================ -->
    <!-- AUTOR DOKUMENTU - osoba upoważniona u pracodawcy (wariant B)  -->
    <!-- Bez functionCode (Ad.5 - rola wystawcy nie jest rejestrowana) -->
    <!-- ============================================================ -->
    
    <author>
        <templateId root="2.16.840.1.113883.3.4424.13.10.2.86"/>
        <time value="20250115103000+0100"/>
        <assignedAuthor xsi:type="extPL:AssignedAuthor">
            <!-- ID osoby upoważnionej - PESEL (wariant B: nie PWZ, bo to nie lekarz) -->
            <id extension="82050567890" root="2.16.840.1.113883.3.4424.1.1.616" displayable="false"/>
            <assignedPerson>
                <templateId root="2.16.840.1.113883.3.4424.13.10.2.1"/>
                <name>
                    <prefix>mgr</prefix>
                    <given>Anna</given>
                    <family>Kowalska</family>
                </name>
            </assignedPerson>
            <!-- representedOrganization = PRACODAWCA -->
            <representedOrganization>
                <templateId root="2.16.840.1.113883.3.4424.13.10.2.17"/>
                <!-- ID pracodawcy: REGON-9 -->
                <id extension="240434228" root="2.16.840.1.113883.3.4424.2.2.1" displayable="true"/>
                <!-- ID pracodawcy: NIP -->
                <id extension="9542685559" root="1.2.616.1.113769.4.1.1.000001.93047.16.1" displayable="true"/>
                <name>KAMSOFT S.A.</name>
                <telecom use="WP" value="tel:32-2090-700"/>
                <addr>
                    <country>PL</country>
                    <city>Katowice</city>
                    <postalCode>40-235</postalCode>
                    <streetName>1 Maja</streetName>
                    <houseNumber>133</houseNumber>
                </addr>
            </representedOrganization>
        </assignedAuthor>
    </author>
    
    <!-- ============================================================ -->
    <!-- CUSTODIAN - pracodawca (dokument lokalny, nie P1)             -->
    <!-- ============================================================ -->
    
    <custodian>
        <templateId root="2.16.840.1.113883.3.4424.13.10.2.20"/>
        <assignedCustodian>
            <representedCustodianOrganization>
                <id extension="240434228" root="2.16.840.1.113883.3.4424.2.2.1" displayable="true"/>
                <name>KAMSOFT S.A.</name>
                <addr>
                    <country>PL</country>
                    <city>Katowice</city>
                    <postalCode>40-235</postalCode>
                    <streetName>1 Maja</streetName>
                    <houseNumber>133</houseNumber>
                </addr>
            </representedCustodianOrganization>
        </assignedCustodian>
    </custodian>
    
    <!-- 
      informationRecipient USUNIĘTY (Ad.7).
      Adresat dokumentu wynika z kontekstu wysyłki (mail / interfejs / 
      wydruk dla pracownika), nie ma sensu zapisywać go w treści.
    -->
    
    <!-- ============================================================ -->
    <!-- LEGAL AUTHENTICATOR - osoba podpisująca (ta sama co autor)    -->
    <!-- ============================================================ -->
    
    <legalAuthenticator>
        <templateId root="2.16.840.1.113883.3.4424.13.10.2.6"/>
        <time value="20250115103000+0100"/>
        <signatureCode code="S"/>
        <assignedEntity>
            <id extension="82050567890" root="2.16.840.1.113883.3.4424.1.1.616" displayable="false"/>
        </assignedEntity>
    </legalAuthenticator>
    
    <!-- ============================================================ -->
    <!-- TREŚĆ DOKUMENTU - 4 sekcje + 1 opcjonalna                    -->
    <!-- ============================================================ -->
    
    <component>
        <templateId root="2.16.840.1.113883.3.4424.13.10.2.28"/>
        <structuredBody>
            
            <!-- ========================================================
                 SEKCJA 1: CEL BADANIA
                 ======================================================== -->
            <component>
                <section>
                    <templateId root="1.2.616.1.113769.5.1.1" extension="0.2"/>
                    <code code="42349-1" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" displayName="Reason for referral"/>
                    <title>Cel badania</title>
                    <text>
                        <paragraph>
                            <caption>Rodzaj badania: </caption>
                            <content ID="OBS_CEL_1">Okresowe</content>
                        </paragraph>
                        <paragraph>
                            <caption>Data ostatniego badania profilaktycznego: </caption>
                            <content ID="OBS_CEL_2">10 maja 2024 r.</content>
                        </paragraph>
                        <paragraph>
                            <caption>Data ważności aktualnego badania profilaktycznego: </caption>
                            <content ID="OBS_CEL_3">10 maja 2025 r.</content>
                        </paragraph>
                    </text>
                    <entry>
                        <observation classCode="OBS" moodCode="EVN">
                            <!-- Rodzaj badania ze słownika KAMSOFT [TL] -->
                            <code code="02" 
                                  codeSystem="1.2.616.1.113769.1.9"
                                  codeSystemName="KAMSOFT_RodzajBadaniaMP"
                                  displayName="Okresowe"/>
                            <text>
                                <reference value="#OBS_CEL_1"/>
                            </text>
                            <statusCode code="completed"/>
                            <!-- Data ostatniego badania jako entryRelationship -->
                            <entryRelationship typeCode="REFR">
                                <observation classCode="OBS" moodCode="EVN">
                                    <code code="LAST-EXAM-DATE" 
                                          codeSystem="1.2.616.1.113769.5.1.1"
                                          displayName="Data ostatniego badania profilaktycznego"/>
                                    <text>
                                        <reference value="#OBS_CEL_2"/>
                                    </text>
                                    <statusCode code="completed"/>
                                    <effectiveTime value="20240510"/>
                                </observation>
                            </entryRelationship>
                            <entryRelationship typeCode="REFR">
                                <observation classCode="OBS" moodCode="EVN">
                                    <code code="EXAM-VALID-UNTIL" 
                                          codeSystem="1.2.616.1.113769.5.1.1"
                                          displayName="Data ważności aktualnego badania profilaktycznego"/>
                                    <text>
                                        <reference value="#OBS_CEL_3"/>
                                    </text>
                                    <statusCode code="completed"/>
                                    <effectiveTime value="20250510"/>
                                </observation>
                            </entryRelationship>
                        </observation>
                    </entry>
                </section>
            </component>
            
            <!-- ========================================================
                 SEKCJA 2: STANOWISKO PRACY
                 ======================================================== -->
            <component>
                <section>
                    <templateId root="1.2.616.1.113769.5.1.2" extension="0.2"/>
                    <code code="74158-7" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" displayName="Occupational history"/>
                    <title>Stanowisko pracy</title>
                    <text>
                        <paragraph>
                            <caption>Nazwa stanowiska: </caption>
                            <content ID="OBS_STAN_1">ADMINISTRATOR SYSTEMÓW INFORMATYCZNYCH</content>
                        </paragraph>
                        <paragraph>
                            <caption>Opis stanowiska: </caption>
                            <content ID="OBS_STAN_2">Praca biurowa przy komputerze. Administracja serwerami i sieciami komputerowymi, prace serwisowe w serwerowni, okresowo wyjazdy do oddziałów firmy.</content>
                        </paragraph>
                    </text>
                    <entry>
                        <observation classCode="OBS" moodCode="EVN">
                            <!-- Kod stanowiska ze słownika klienta (ERP) -->
                            <code code="5"
                                  codeSystem="1.2.616.1.113769.4.1.1.000001.93047.81"
                                  codeSystemName="KAMSOFT_Stanowiska_ERP"
                                  displayName="ADMINISTRATOR SYSTEMÓW INFORMATYCZNYCH">
                                <originalText>
                                    <reference value="#OBS_STAN_1"/>
                                </originalText>
                            </code>
                            <text>
                                <reference value="#OBS_STAN_2"/>
                            </text>
                            <statusCode code="completed"/>
                            <!-- Opis stanowiska jako wartość obserwacji -->
                            <value xsi:type="ST">Praca biurowa przy komputerze. Administracja serwerami i sieciami komputerowymi, prace serwisowe w serwerowni, okresowo wyjazdy do oddziałów firmy.</value>
                        </observation>
                    </entry>
                </section>
            </component>
            
            <!-- ========================================================
                 SEKCJA 3: CZYNNIKI NARAŻENIA
                 
                 Hierarchia: BATTERY główny → CLUSTER per grupa (z OID 
                 centralnym 1.8.1) → obserwacje (czynniki z OID centralnym
                 1.8.2 LUB lokalnym klienta 4.z.i.w.l.1.11.2).
                 
                 Pomiary opcjonalne - przykład pokazuje:
                 - czynnik bez pomiaru (monitor ekranowy)
                 - czynnik z pomiarem (hałas: 62 dB, NDS 85 dB)
                 - czynnik z lokalnego słownika klienta (praca z aplikacją 
                   firmową - wpis własny pracodawcy)
                 ======================================================== -->
            <component>
                <section>
                    <templateId root="1.2.616.1.113769.5.1.3" extension="0.2"/>
                    <code code="66594-2" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" displayName="Exposure to substances"/>
                    <title>Opis warunków pracy - czynniki niebezpieczne, szkodliwe lub uciążliwe</title>
                    <text>
                        <paragraph>Na stanowisku pracy występują następujące czynniki niebezpieczne, szkodliwe lub uciążliwe:</paragraph>
                        <table>
                            <thead>
                                <tr>
                                    <th>Grupa</th>
                                    <th>Czynnik</th>
                                    <th>Wartość zmierzona</th>
                                    <th>NDS / NDN</th>
                                    <th>Data pomiaru</th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td>Czynniki fizyczne</td>
                                    <td><content ID="OBS_CZN_1">Zagrożenie związane z obsługą monitorów ekranowych</content></td>
                                    <td>—</td>
                                    <td>—</td>
                                    <td>—</td>
                                </tr>
                                <tr>
                                    <td>Czynniki fizyczne</td>
                                    <td><content ID="OBS_CZN_2">Hałas</content></td>
                                    <td>62 dB</td>
                                    <td>85 dB</td>
                                    <td>15 września 2024 r.</td>
                                </tr>
                                <tr>
                                    <td>Inne czynniki</td>
                                    <td><content ID="OBS_CZN_3">Praca zmianowa</content></td>
                                    <td>—</td>
                                    <td>—</td>
                                    <td>—</td>
                                </tr>
                                <tr>
                                    <td>Inne czynniki</td>
                                    <td><content ID="OBS_CZN_4">Praca przy specjalistycznym oprogramowaniu medycznym wymagająca długotrwałej koncentracji</content></td>
                                    <td>—</td>
                                    <td>—</td>
                                    <td>—</td>
                                </tr>
                            </tbody>
                        </table>
                    </text>
                    <entry>
                        <organizer classCode="BATTERY" moodCode="EVN">
                            <code code="ALL-EXPOSURES" 
                                  codeSystem="1.2.616.1.113769.5.1.3"
                                  displayName="Wszystkie czynniki narażenia"/>
                            <statusCode code="completed"/>
                            
                            <!-- ===== Grupa 01: Czynniki fizyczne ===== -->
                            <component>
                                <organizer classCode="CLUSTER" moodCode="EVN">
                                    <code code="01"
                                          codeSystem="1.2.616.1.113769.1.8.1"
                                          codeSystemName="KAMSOFT_GrupyCzynnikow"
                                          displayName="Czynniki fizyczne"/>
                                    <statusCode code="completed"/>
                                    
                                    <!-- Czynnik 1: monitor ekranowy - centralny słownik, bez pomiaru -->
                                    <component>
                                        <observation classCode="OBS" moodCode="EVN">
                                            <code code="FIZ-014"
                                                  codeSystem="1.2.616.1.113769.1.8.2"
                                                  codeSystemName="KAMSOFT_Czynniki"
                                                  displayName="Zagrożenie związane z obsługą monitorów ekranowych">
                                                <originalText>
                                                    <reference value="#OBS_CZN_1"/>
                                                </originalText>
                                            </code>
                                            <statusCode code="completed"/>
                                        </observation>
                                    </component>
                                    
                                    <!-- Czynnik 2: hałas - centralny słownik, z pomiarem -->
                                    <component>
                                        <observation classCode="OBS" moodCode="EVN">
                                            <code code="FIZ-003"
                                                  codeSystem="1.2.616.1.113769.1.8.2"
                                                  codeSystemName="KAMSOFT_Czynniki"
                                                  displayName="Hałas">
                                                <originalText>
                                                    <reference value="#OBS_CZN_2"/>
                                                </originalText>
                                            </code>
                                            <statusCode code="completed"/>
                                            <effectiveTime value="20240915"/>
                                            <value xsi:type="PQ" value="62" unit="dB"/>
                                            <referenceRange>
                                                <observationRange>
                                                    <value xsi:type="PQ" value="85" unit="dB"/>
                                                    <interpretationCode code="N" codeSystem="2.16.840.1.113883.5.83" displayName="Norma (NDS/NDN)"/>
                                                </observationRange>
                                            </referenceRange>
                                        </observation>
                                    </component>
                                </organizer>
                            </component>
                            
                            <!-- ===== Grupa 05: Inne czynniki ===== -->
                            <component>
                                <organizer classCode="CLUSTER" moodCode="EVN">
                                    <code code="05"
                                          codeSystem="1.2.616.1.113769.1.8.1"
                                          codeSystemName="KAMSOFT_GrupyCzynnikow"
                                          displayName="Inne czynniki"/>
                                    <statusCode code="completed"/>
                                    
                                    <!-- Czynnik 3: praca zmianowa - centralny słownik, bez pomiaru -->
                                    <component>
                                        <observation classCode="OBS" moodCode="EVN">
                                            <code code="INN-007"
                                                  codeSystem="1.2.616.1.113769.1.8.2"
                                                  codeSystemName="KAMSOFT_Czynniki"
                                                  displayName="Praca zmianowa">
                                                <originalText>
                                                    <reference value="#OBS_CZN_3"/>
                                                </originalText>
                                            </code>
                                            <statusCode code="completed"/>
                                        </observation>
                                    </component>
                                    
                                    <!-- Czynnik 4: wpis własny klienta - lokalny słownik klienta -->
                                    <component>
                                        <observation classCode="OBS" moodCode="EVN">
                                            <code code="LOC-027"
                                                  codeSystem="1.2.616.1.113769.4.1.1.000001.93047.1.11.2"
                                                  codeSystemName="KAMSOFT_Czynniki_Lokalny_Klienta"
                                                  displayName="Praca przy specjalistycznym oprogramowaniu medycznym wymagająca długotrwałej koncentracji">
                                                <originalText>
                                                    <reference value="#OBS_CZN_4"/>
                                                </originalText>
                                            </code>
                                            <statusCode code="completed"/>
                                        </observation>
                                    </component>
                                </organizer>
                            </component>
                            
                            <!-- 
                              UWAGA: w przykładzie pokazano 2 z 5 grup
                              (Fizyczne + Inne). W docelowej implementacji 
                              wstawiamy w stałej kolejności 01-05 te grupy,
                              w których są wpisy. Puste grupy pomijamy.
                            -->
                            
                        </organizer>
                    </entry>
                </section>
            </component>
            
            <!-- ========================================================
                 SEKCJA 4: WYMAGANE BADANIA DODATKOWE
                 
                 Zgodnie z Ad.6 używamy ICD-9-PL (OID 2.16.840.1.113883.6.103):
                 - rozdział 95.xx dla badań okulistycznych, audiologicznych
                 - rozdział 89.xx dla konsultacji
                 
                 W przykładzie: badanie wzroku w związku z pracą przy monitorze
                 ekranowym (95.02 - kompleksowe badanie okulistyczne).
                 ======================================================== -->
            <component>
                <section>
                    <templateId root="1.2.616.1.113769.5.1.4" extension="0.2"/>
                    <code code="ADD-EXAMS" 
                          codeSystem="1.2.616.1.113769.5.1.4"
                          displayName="Wymagane badania dodatkowe"/>
                    <title>Wymagane badania dodatkowe</title>
                    <text>
                        <paragraph>W związku z charakterem pracy wymagane są następujące badania dodatkowe:</paragraph>
                        <list>
                            <item>
                                <content ID="OBS_DOD_1">Kompleksowe badanie okulistyczne</content> — w związku z obsługą monitora ekranowego
                            </item>
                        </list>
                    </text>
                    <entry>
                        <organizer classCode="BATTERY" moodCode="RQO">
                            <code code="ADDITIONAL-EXAMS"
                                  codeSystem="1.2.616.1.113769.5.1.4"
                                  displayName="Wymagane badania dodatkowe"/>
                            <statusCode code="active"/>
                            <component>
                                <observation classCode="OBS" moodCode="RQO">
                                    <code code="95.02"
                                          codeSystem="2.16.840.1.113883.6.103"
                                          codeSystemName="ICD-9-PL"
                                          displayName="Badanie okulistyczne - kompleksowe">
                                        <originalText>
                                            <reference value="#OBS_DOD_1"/>
                                        </originalText>
                                    </code>
                                    <text>
                                        <reference value="#OBS_DOD_1"/>
                                    </text>
                                    <statusCode code="active"/>
                                </observation>
                            </component>
                        </organizer>
                    </entry>
                </section>
            </component>
            
            <!-- ========================================================
                 SEKCJA 5: INFORMACJE DODATKOWE (opcjonalna)
                 ======================================================== -->
            <component>
                <section>
                    <templateId root="1.2.616.1.113769.5.1.5" extension="0.2"/>
                    <code code="ADDITIONAL-INFO" 
                          codeSystem="1.2.616.1.113769.5.1.5"
                          displayName="Informacje dodatkowe"/>
                    <title>Informacje dodatkowe</title>
                    <text>
                        <paragraph>
                            Pracownik zatrudniony na podstawie umowy o pracę w wymiarze pełnego etatu od 1 września 2018 r.
                            Skierowanie wystawione w związku z upływem terminu ważności poprzedniego orzeczenia lekarskiego.
                        </paragraph>
                    </text>
                </section>
            </component>
            
        </structuredBody>
    </component>
    
</ClinicalDocument>
