Cel projektu Naszym celem było napisanie aplikacji, dającej możliwość edycji, wysyłania I odbierania wiadomości protokołu medycznego hl 7



Pobieranie 14.39 Kb.
Data01.05.2016
Rozmiar14.39 Kb.
Jacek Macioszek 59822

Karol Nowakowski 59835


Health Level 7




  1. Cel projektu

Naszym celem było napisanie aplikacji, dającej możliwość edycji, wysyłania i odbierania wiadomości protokołu medycznego HL 7, w taki sposób aby można było zobaczyć jak działa ten protokół i jak zbudowane są wiadomości oparte o ten protokół.


  1. Opis standardu HL7

HL 7 jest ustandaryzowanym i powszechnie używanym protokołem wymiany danych medycznych. HL 7 daje możliwość wysyłania kilkudziesięciu zdefiniowanych typów wiadomości. Są to m. in wiadomości o wymeldowaniach, zameldowaniach, przemeldowaniach pacjentów, wiadomości o finansach i wiele innych. Każdy typ wiadomośći posiada unikalny trzyliterowy identyfikator. Np wiadomości typu Admission, Discharge and Transfer, mają identyfikator ADT. Każda wiadomość w danym typie posiada również swój identyfikator (również trzyznakowy) Np wiadomość Pre-Admit a Patient, typu ADT posiada identyfikator A05.

Następnie każda wiadomość składa się z segmentów. Segment może być obowiązkowy lub nie dla danej wiadomości. Każdy segment posiada również trzyliterowy identyfikator. Np segment Event Type posiada identyfikator EVN. Spośród wszystkich segmentów warto wyróżnić jeden – Message Header (MSH), który jest obowiązkowy dla każdej wiadomości i w którym zawarte są m.in informacje o wersji protokołu HL 7 i typ wysyłanej wiadomości. Kolejność segmentów w wiadomości jest zdefiniowana. Np segment MSH występuje zawsze jako pierwszy a np. segment PID (Patient Identification) w wiadomośći ADT^A05 jako trzeci.

Każdy segment składa się z pól. Każde pole posiada typ. Występują typy proste i złożone. Przykładem typu złożonego jest typ AD, który składa się z komponentów o określonym typie. Typ komponentu może być złożony i wtedy komponent składa się z pod-komponentów. Dla wyżej wspomnianego typu jego komponenty to: street address, other designation, city, state or province, zip or postal code, country, address type, other geographic designation.

O tym jaki znak jest znakiem rozdzielającym pola decyduje pierwszy znak zaraz po identyfikatorze segmentu MSH. Teoretycznie może być to każdy znak, ale we wszystkich przykładach, które widzieliśmy był nim znak „|”. W segmencie MSH zaraz po znaku rozdzielającym pola wystepuje ciąg czterech znaków. Z których pierwszy to znak łączący komponenty (standardowo „^”), drugi to znak powtarzalności pól (standardowo „~”), trzeci to tzw „escape character”, czyli znak używany w przypadku użycia któregoś ze znaków zastrzeżonych, czyli tych o których teraz piszemy (standardowo jest to znak „\”). Np przy próbie uzycia znaku rozdzielającego pola przy wysyłaniu zostanie on zmieniony (przyjmując, że „escape character” jest ustawiona na „\”) na „\F\”. Ostatni znak to znak łączący podkomponenty (standardowo „&”).

A oto podgląd przykładowej wiadomości napisanej w naszym programie:



  1. Przypadki użycia

A oto jak wygląda diagram przypadków uzycia dla naszej aplikacji:

Niżej opiszę przykładowy scenariusz użycia naszej aplikacji. Otóż najpierw należy uruchomić serwer (klasa SimpleServer). Nastepnie należy uruchomić klienta. Po uruchomieniu pojawia się okienko głowne, które wygląda następująco:




W menu Ustawienia->Adres IP odbiorcy, należy ustawić adres IP komputera, na którym uruchomiony został serwer. Po zatwierdzeniu klikamy przycisk połącz. Jeśli nie będzie żadnych błędów, połączymy się z serwerem. Po połączeniu się możemy wybrać wiadomość, którą chccemy edytować. Możemy to zrobić na dwa sposoby. Możemy albo stworzyć własną nową wiadomość, albo odczytać z pliku juz wcześniej zapisaną (poprzez menu Plik->Otwórz.... Opiszemy pierwszy sposób. Klikamy więc na listę z wiadomościami. Ukażą się nam dostępne wiadomości. Po wybraniu określonej wiadomości, na dolnej liście wyświetlone zostaną opcjonalne segmenty tej wiadomości. Wszystkie wymagane zostaną automatycznie wybrane i dlatego nie pojawią się na liście. Następnie wybieramy z tej listy segmenty, które chcielibyśmy edytować, gdy chcemy więcej niż jeden robimy to poprzez trzymanie przycisku CTRL i zaznaczanie kursorem myszki segmentów, które nas interesują. Gdy już wybraliśmy wszystkie segmenty, które chcieliśmy klikamy przycisk dalej i pojawia się nowe okno, w którym będziemy mogli edytować wiadomość. Okno to składa się z zakładek. Pierwsza zakładka to podgląd wiadomości, na której widzimy jak wygląda wiadomość w formacie HL 7. Po edytowaniu wiadomości wygląda to tak:


Pozostałe zakładki to segmenty, które będzimy edytować. Na każdej z zakładek – segmentów jest tableka z pięcioma kolumnami. W pierwszej kolumnie jest nazwa pola. W drugiej wpisujemy wartość pola. Jeżeli jest to pole o typie prostym, to możemy wpisywać od razu, a jeśli jest to pole złożone, to po kliknięciu na pole pojawi się nowe okienko z komponentami tego pola. W trzeciej kolumnie znajdują się checkboxy pokazujące czy jest to pole wymagane czy opcjonalne. Następna kolumna to symbol typu pola. Po najechaniu myszką na ten typ pokaże się podpowiedź mowiąca nam co to jets za typ i jakie wartości przyjmuje. W ostatniej kolumnie wyświetlany jest format jaki przyjmuje dane pole, jeśli takowy jest zdefiniowany, jeśli nie, to pole w ostatniej kolumnie jest puste. Przykładowa wypełniona zakładka segment wygląda następująco:

Gdy wypełnimy wszystkie wymagane pola i interesujące pola opcjonalne możemy wysłać wiadomość. Jeśli do danego serwera, do którego jesteśmy podłączeni są podłączeni jeszcze inni klienci, to w okienku głównym, poniżej listy z wybieranymi segmentami pojawiają się odebrane wiadomości. Aby obejrzeć wybraną wiadomość należy kliknąć dwukrotnie na niej. Otrzymamy wtedy następujące okienko:

U góry pojawia się widok wiadomości HL7, tak jak jest ona przesyłana, a na dole wiadomość z polami, komponenatmi i podkomponenatmi – nazwa i wartość.


  1. Użyte technologie

Aplikacja (klient i serwer) zostały napisane w JAVIE. Używaliśmy JDK w wersji 1.4.2.08. Informacje o wiadomościach i segmentach zawarte są w plikach messages.xml i segments.xml. W momencie uruchomienia pliki te są parsowane SAX-em. GUI klienta zrobione zostało w Swingu.



©absta.pl 2019
wyślij wiadomość

    Strona główna