Wydruki w plikach JSP - e
Transkrypt
Wydruki w plikach JSP - e
Wydruki w plikach JSP Wydruki w plikach JSP Omówienie UWAGA: Niniejszy podręcznik zakłada, że użytkownik posiada wiedzę na temat tworzenia i edycji plików JSP. Podczas wdrożenia administrator systemu zostaje przeszkolony w tym zakresie. Dodatkową wiedzę na ten temat można również zaczerpnąć z różnych źródeł - chociażby ze stron internetowych. Większość wydruków w systemie (zarówno w formacie HTML jak i w PDF) generowana jest przy użyciu plików JSP znajdujących się na serwerze. Więcej informacji na temat tego formatu można znaleźć w internecie (chociażby na Wikipedii: http://pl.wikipedia.org/wiki/JavaServer_Pages).Pliki te odpowiadają między innymi za wydruki: • • • • badań i procedur recept skierowań niektórych raportów systemowych Aby określić który plik JSP odpowiada za dany wydruk, należy go wygenerować. Po wygenerowaniu pliku (o ile jest on w formacie HTML) możemy kliknąć na stronę z wydrukiem prawym klawiszem myszy i podejrzeć źródło dokumentu. Na samym końcu źródła strony znajdziemy na przykład taki wpis: <!-- jspFileName->/patterns/historia_wywiadow.jsp --> Wpis ten wskazuje na plik JSP, w oparciu o który generowany jest dany wydruk. W tym wypadku jest to plik historia_wywiadow.jsp. Budowa pliku JSP Plik JSP jest plikiem edytowalnym w dowolnym edytorze tekstowym (do edycji zalecamy używać edytora kolorującego składnię). W systemie występują one w dwóch wariantach - różnią się nieco budową w zależności od tego czy są przeznaczone do generowania wydruku w formacie HTML czy PDF. Znaczniki Znaczniki są standardowym elementem plików JSP - służą one do przechowywania konkretnych wartości, które można umieszczać na wydruku. Przykładowe znaczniki dla wydruku skierowania to chociażby dane lekarza wystawiającego skierowanie, imię i nazwisko pacjenta itp. Każdy dokument w systemie ma własną listę dostępnych znaczników, które są przezeń obsługiwane. Aby wyświetlić tę listę należy w pliku JSP umieścić znacznik o nazwie znaczniki - najlepiej zrobić to na końcu pliku, tuż przed zamykającym znacznikiem BODY. Sprowadza się to zatem do odnalezienia w pliku ciągu znaków: </body> i zastąpienia go ciągiem: ${znaczniki}</body> Następnie należy wygenerować taki próbny wydruk w HTML i podejrzeć źródło strony z wydrukiem. Na końcu tego źródła wyświetli się lista wszystkich znaczników dostępnych dla danego dokumentu wraz z przechowywanymi w nich wartościami. Przykładowy fragment takiej listy znajduje się poniżej: pacjent_nazwisko->KOWALSKA pacjent_poprz_nazwisko-> 1 Wydruki w plikach JSP pacjent_imie->BOŻENA pacjent_pesel->38033100963 pacjent_data_urodzenia->1938-03-31 pacjent_miejsce_urodzenia-> Powyższy fragment należy rozumieć następująco: 1. 2. 3. 4. 5. 6. znacznik pacjent_nazwisko przechowuje wartość KOWALSKA znacznik pacjent_poprz_nazwisko nie przechowuje żadnej wartości znacznik pacjent_imie przechowuje wartość BOŻENA znacznik pacjent_pesel przechowuje wartość 38033100963 znacznik pacjent_data_urodzenia przechowuje wartość 1938-03-31 znacznik pacjent_miejsce_urodzenia nie przechowuje żadnej wartości W powyższym przykładzie umieszczenie w pliku JSP ciągu znaków: ${pacjent_pesel} spowoduje, że w tym miejscu na wydruku zostanie wyświetlona wartość 38033100963, pobrana ze znacznika pacjent_pesel. Przykład wydruku w HTML Poniżej przykład pustego pliku JSP generującego wydruk w formacie HTML - zawiera on tylko znacznik ${znaczniki}, który w źródle wydruku wyświetli listę wszystkich dostępnych znaczników. <%@ page contentType="text/html;charset=windows-1250" isELIgnored="false" pageEncoding="Windows-1250"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ page import="joperis.utils.Convert" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" > <meta http-equiv="Content-Language" content="pl"/> <title>[TYTUŁ WYDRUKU]</title> </head> <body> <!-- tutaj umieszczamy treść dokumentu--> ${znaczniki} </body> </html> Jeśli wskażemy ten plik jako plik wydruku dla zdefiniowanej w systemie procedury, to wydruk będzie pusty. Jednak po podejrzeniu jego źródła zobaczymy listę znaczników dostępnych dla wydruków badań/procedur jak również znaczników przechowujących wartości składników danej procedury (odpowiada za to znajdujący się w kodzie znacznik ${znaczniki}). 2 Wydruki w plikach JSP Przykład wydruku w PDF Wersja dla dokumentów drukowanych w PDF wygląda nieco inaczej - różni się nagłówkiem. Przykład pustego pliku poniżej: <%@ page contentType="text/html;charset=windows-1250" isELIgnored="false" pageEncoding="Windows-1250"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="argus" uri="/WEB-INF/tld/argus.tld" %> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> <argus:PDFInfo print_html_title_in_header="true" pageNumbers="true" showFromNumberOfPages="true" page_margin_left="10mm" page_margin_right="10mm" page_margin_top="20mm" page_margin_bottom="10mm"/> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> <meta http-equiv="Content-Language" content="pl"> <title>[TYTUŁ WYDRUKU]</title> </head> <body> <!-- tutaj umieszczamy treść dokumentu--> </body> </html> W przypadku wydruków PDF umieszczanie w kodzie znacznika ${znaczniki} jest bezcelowe, ponieważ nie ma możliwości podejrzenia źródła wygenerowanego pliku PDF. Należy zwrócić uwagę na znacznik argus:PDFInfo - zawiera on informacje o formatowaniu wydruku PDF według schematu: • print_html_title_in_header (przyjmuje wartości true lub false) - określa, czy w nagłówku ma się drukować tytuł strony. Na powyższym przykładzie print_html_title_in_header="true" oznacza, że tytuł będzie się drukować. • pageNumbers (wartości true lub false) - określa, czy na PDF mają znaleźć się numery stron. Na powyższym przykładzie pageNumbers="true" oznacza, że numery stron będą wyświetlane. • showFromNumberOfPages (wartości true lub false) - Określa czy ma być drukowana ogólna liczba stron wydruku (według schematu: "strona 1 z 5"). Na powyższym przykładzie showFromNumberOfPages="true" oznacza, że ogólna liczba stron będzie drukowana. • page_margin_left (wartość określana w milimetrach, według schematu Xmm) - określa wielkość lewego marginesu wydruku. Na powyższym przykładzie page_margin_left="10mm" oznacza, że lewy margines ma szerokość dziesięciu milimetrów. • page_margin_right (wartość określana w milimetrach) - analogiczne ustawienie prawego marginesu 3 Wydruki w plikach JSP • page_margin_top (wartość określana w milimetrach) - analogiczne ustawienie górnego marginesu • page_margin_bottom (wartość określana w milimetrach) - analogiczne ustawienie dolnego marginesu. Hierarchia wydruków W zainstalowanym systemie pliki JSP służące do generowania wydruków można podzielić na dwie kategorie: domyślne (dostarczone przez producenta oprogramowania) i spersonalizowane (dopasowane do potrzeb indywidualnych Klienta lub stworzone specjalnie dla niego na etapie wdrożenia). O tym do jakiej kategorii należy plik decyduje katalog na serwerze, w jakim się on znajduje. Poniżej omówiono obydwa typy. Wydruki domyślne Wydruki domyślne (zwane również standardowymi lub wzorcowymi) są wspólne dla wszystkich instalacji systemu i są jednym z jego podstawowych elementów. Znajdują się w katalogu [aplikacja]/build/patterns dla dokumentów generowanych w formacie HTML lub [aplikacja]/build/patterns/pdf dla dokumentów generowanych w formacie PDF. Przy czym [aplikacja] w obydwu przypadkach oznacza katalog główny aplikacji (czyli np. /home/ZOZ). Odnośnie tych plików wydruku należy pamiętać o kilku rzeczach: 1. nie należy ich usuwać 2. nie należy ich edytować 3. pliki w tym katalogu mogą zostać usunięte lub nadpisane nowszą wersją podczas aktualizacji aplikacji. Wydruki spersonalizowane Wydruki spersonalizowane to pliki JSP, które zostały przygotowane specjalnie na potrzeby konkretnego ZOZ podczas wdrożenia lub powstały w oparciu o wydruki standardowe. Znajdują się one w katalogach: [aplikacja]/build/patterns/[zoz] dla dokumentów generowanych w formacie HTML lub [aplikacja]/build/patterns/[zoz]/pdf dla dokumentów generowanych w formacie PDF. Podobnie jak w przypadku wydruków domyślnych, [aplikacja] oznacza tu katalog główny aplikacji (czyli np. /home/ZOZ). Ciąg [zoz] oznacza natomiast skrót firmy, zdefiniowany na ekranie edycji firmy własnej. Aby stworzyć własny plik wydruku (np. dla nowoutworzonej procedury dokumentacji medycznej) należy utworzyć w jednym z tych dwóch katalogów na serwerze nowy plik JSP. 4 Wydruki w plikach JSP Personalizowanie wydruku dla jednostek organizacyjnych Oprócz powyższego istnieje możliwość ustalenia osobnych plików wydruku dla poszczególnych jednostek organizacyjnych. Przy użyciu tego mechanizmu możemy na przykład określić dla jednego z oddziałów szpitala inny wydruk wypisu niż dla pozostałych. W tym celu w katalogu [aplikacja]/build/patterns/[zoz] należy utworzyć katalog o nazwie takiej jak jej skrót - ustalony na ekranie edycji jednostki organizacyjnej. W katalogu tym można umieścić pliki JSP odpowiedzialne za generowanie wydruków w formacie HTML. Oczywiście można również w tym katalogu utworzyć podkatalog pdf, a w nim umieścić pliki generujące wydruki w formacie PDF. Wersje wydruków Załóżmy, że mamy spersonalizowany wydruk recepta_dr.jsp, który niemałym nakładem sił dopasowaliśmy do naszych oczekiwań. Nagle jednak pojawia się konieczność wprowadzenia w nim gruntownych zmian. Może się zdarzyć, że znajdziemy się wówczas w trudnej sytuacji - z jednej strony zmiany trzeba wprowadzić, ale z drugiej nie chcemy jednak tracić tamtego dopasowanego wydruku, bo może się jeszcze przydać. Co robić? Można oczywiście stworzyć kopię pliku gdzieś na serwerze, jednak może to spowodować że plik zawieruszy nam się gdzieś, zapomnimy w jakim katalogu pierwotnie się znajdował, albo - co gorsza - ktoś go przypadkiem usunie. Na szczęście system udostępnia mechanizm wersjonowania wydruków, który może nam pomóc w takich sytuacjach. Aby skorzystać z tego mechanizmu, zostawiamy w spokoju nasz dopracowany plik JSP - zamiast go edytować tworzymy w tym samym katalogu jego kopię, o nazwie na przykład recepta_dr_v2.jsp'. Tę kopię edytujemy i wprowadzamy w niej wymagane gruntowne zmiany. Jeśli po zapisaniu zmian spróbujemy wygenerować wspomniany wydruk, to okaże się, że powstał on w oparciu o plik recepta_dr_v2.jsp, a nie jak dotychczas recepta_dr.jsp. Jak to się stało? Otóż mechanizm generowania wydruku bierze pod uwagę tylko tę część nazwy pliku, która znajduje się przed ciągiem _v, cyfry następujące po nim traktuje zaś jako numer wersji - zatem jeśli mamy w jednym katalogu pliki o nazwach: ./recepta_dr.jsp ./recepta_dr_v2.jsp ./recepta_dr_v8.jsp ./recepta_dr_v10.jsp system do generowania wydruku użyje pliku o najwyższym numerze wersji, czyli recepta_dr_v10.jsp. Dzięki temu nie musimy kasować archiwalnych plików wydruku z serwera - na wypadek, gdyby miały się jeszcze kiedyś przydać. Mechanizm generowania wydruku Po kliknięciu na link lub przycisk Drukuj w aplikacji system szuka pliku JSP skojarzonego z tym wydrukiem. Kolejność przeszukiwania katalogów na serwerze jest następująca: 1. 2. 3. 4. 5. 6. [aplikacja]/build/patterns/[zoz]/[kod_jednostki]/pdf [aplikacja]/build/patterns/[zoz]/[kod_jednostki] [aplikacja]/build/patterns/[zoz]/pdf [aplikacja]/build/patterns/[zoz] [aplikacja]/build/patterns/pdf [aplikacja]/build/patterns/[zoz] 5 Wydruki w plikach JSP Gdzie: • [aplikacja] oznacza katalog główny aplikacji • [zoz] oznacza skrót nazwy ZOZ • [kod_jednostki] oznacza kod jednostki organizacyjnej System przeszukuje te katalogi w podanej wyżej kolejności i szuka pliku JSP. Jeśli go znajdzie w którymkolwiek z tych katalogów - nie szuka dalej i generuje wydruk w oparciu o znaleziony plik. Jeśli nie znajdzie go w żadnym z katalogów - wyświetli komunikat o błędzie. Na przykład - jeśli plik recepta_dr.jsp znajduje się zarówno w katalogach 4 jak i 6, to system skorzysta z pliku wydruku w katalogu 4. Jeśli zaś plik znajduje się w katalogach 3 i 6, to wydruk zostanie stworzony w oparciu o plik w katalogu 3 - i będzie to wydruk w formacie PDF. 6