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

Podobne dokumenty