JLABS

Mikrobiologie-2001.Klasická razítka

Formuláře/Razítka v klasickém kompatibilním formátu


Bullet Klíčová slova:


Bullet Formulář
Bullet Datová položka
Bullet Číselník
Bullet Kontrola dat
Bullet Vstup údajů do systému


Bullet Zde se popisuje jazyk definice razítek v klasické podobě kompatibilní s předchozími verzemi systému. Razítka je možno i nadále definovat tímto způsobem, exituje ale i novější syntax a možnosti definování razítek bez nutnosti detailního kreslení. O tom viz


Bullet Práce s knihovnou razítek
Bullet Editace razítek, MIC, sestavy apod.
Bullet Jazyk definice razítek


Bullet Klasický jazyk definice razítek je velmi obecný a umožňuje vytváření skutečně ďábelsky se chovajících objektů. Vznikl ovšem před cca 8-mi lety a má svoje slabiny. Největší je složitost při definici MIC razítek a sestav vůbec, kde se jenom s krajní opatrností dá udržet vztah mezi položkami, číselníky, orakuly na přepočet a orakuly na interpretaci. Jakmile je jednou razítko hotovo, je vyhráno, ale jeho design může být dosti složitý. Novější syntax tedy ke klasické, která je pořád možná, dodává silnější nástroje, kterými se dá řada exotických vlastností definovat jedním rázem.


Bullet Abychom si to trochu osvětlili. Typické MIC razítko obsahuje sekvenci trojic položek. V první složce trojice je název/zkratka antibiotika. Ve druhé se zadává číslo nebo písmenná zkratka - v každém případě se to chápe jako údaj popisující minimální koncentraci, která daného mikroba "zdeptala". Ve třetí složce je pak interpretace, zda tedy byl mikrob na dané antibiotiku citlivý apod. Pohyb po těchto trojicích chceme organizovat jako po celcích - je tedy potřeba naprogramovat manuálně chod mezi položkami. Dále většinou nechceme, aby se jméno předdefinovaného antibiotika dalo přepsat - jedná se o standardizovanou sestavu. K ní ovšem můžeme chtít přidat manuálně další antibiotika. Pak chceme do druhé složky vyplňovat data - koncentrace jsou ale pokaždé jinačí u každého antibiotika a přitom chceme buď používat nabídku, nebo přepočítávat data - logaritmovat nebo interpretovat písmenné zkratky. nakonec chceme, aby se podle breakpointu našla vhodná interpretace C,R,I a "šoupla" do třetí složky, v ní to ale klidně zase budeme chtít i z ruky poopravit. Důležité ale je, že nechceme, aby tyto vlastnosti byly zadrátovány v programu, ale abychom razítko mohli definovat externě. Program ale musí nadále umět chápat správně obsah razítka.


Bullet Tato diskuse snad trochu ozřejmuje i složitost implementace celého software. Program se nemůže nijak spoléhat na obsah razítek podle jmen položek, například. Žádná jména předem nezná, rovněž ani kódy antibiotik nic neznačí a předem nejsou známy. Pokud se ale správce systému chová podle pravidel, může sám definovat libovolné sestavy a systém jim bude rozumět - to také bylo hlavním cílem vývoje systému, úplná nezávislost uživatele na programování.


Bullet Princip funkce formulářů je následující bez ohledu na použitou syntax, kalsickou i novou:


Bullet Formuláře slouží ke skupinovému vstupu dat do počítače. Jsou relativně autonomní složkou systému, která má společné rysy za všech okolností. Formulářový vstup se uplatňuje všude tam, kde vstupuje najednou celá řada údajů. Umožňují se různé nestandardní akce, jako je křížové doplnění údajů z databáze, kontrola na správnost součtu, automatické generování výčetek apod.
Bullet V následujícím popise budeme vycházet ze standardního vybarvení programů rodiny ArcShellu. Jelikož mají tyto programy společně nastavitelné barvy, může se finální nastavení lišit případ od případu. To se týká verze 2001 i předchozích verzí.
Bullet Formuláře se objevují obvykle v okénkách a jejich rozměr může být v podstatě libovolný. Formulář zde figuruje jako papír a okénko jako průzor na něj. Okénkem je možno rolovat všemi směry, kam to má smysl. Manuální rolování je vesměs zbytečné, formulář sám okénkem roluje tak, jak vyplňování postupuje. Většina formulářů je navíc navržena / generována tak, že odpovídají velikostí přesně zobrazovacímu okénku.
Bullet Formuláře se objevují v tomto kontextu resp uspořádání obrazovky:
Bullet Razítko vypadá typicky takto:
Bullet Titulek okénka obsahuje pro kontrolu jméno razítka z knihovny - je to položka "DefSoubor".
Bullet Hned v horní části je místo pro chybovou hlášku - pokud dojde k chybě, "formulář se zlobí" červenou hláškou.
Bullet Střední část obsahuje rámeček se snímaným formulářem.
Bullet Šedá část formuláře odpovídá papírovému podtisku.
Bullet Nažloutlé kolonky jsou datové položky - tedy ty části formuláře, které je možno vyplňovat.
Bullet Bílá kolonka je ta, kterou operátor právě vyplňuje a chová se jako každé dialogové okénko.

Bullet V cyklu práce s formulářem operátor prochází položkami, vkládá do nich data a až je spokojen, data předá k dalšímu zpracování. Tento cyklus je doprovázen kontrolami ze strany formulářového systému:
Bullet Během práce na jediné položce se kontrolují vstupující znaky na přípustnost.
Bullet Po opuštění položky se kontroluje položka na správnost jako celek.
Bullet Při ukládání resp ukončení se kontrolují všechny položky na konzistentnost.

Bullet Některé položky mohou být vyplněny jenom výběrem z číselníku.
Bullet Některé položky mohou být vnuceny systémem (součet jiných položek apod.).
Bullet Jiné položky mohou být předvyplněny, ale operátor má možnost je přepsat. Vyznačují se tím, že posledním znakem v jejich jménu není "W". W-položky jsou nepřepsatelné.


Bullet Způsob hlášení chyb.


Bullet Chyby při vyplňování se projevují výpisem vysvětlujícího textu v horní části formuláře. Text zmizí obvykle po dalším stisku klávesy. Zvlášť důležitá hlášení se zobrazí v rámečku a operátor je musí potvrdit stiskem klávesy Enter.


Bullet Pohyb mezi položkami. Ve formuláři se mezi jednotlivými položkami pohybuje pomocí kláves i myší:


Bullet Enter ... na další položku
Bullet Tab ... na další položku s ev. kopírováním směrem shora dolů
Bullet Ctrl+Enter ... na předchozí položku
Bullet Up ... o řádek nebo odstavec výše
Bullet Down ... o řádek nebo odstavec níže
Bullet ^Y ... smaže položku
Bullet ^U ... smaže párované položky v razítku s citlivostmi, tedy položku Hodnota i Interpretace.
Bullet Cvaknutí levým knoflíkem myši - skok na udanou položku
Bullet Formulář může ale posun přes položku sám odmítnout - to pokud hodnota aktuální položky neprošla odpovídajícím testem.
Bullet Obdobně se může stát, že je způsob chodu kurzoru po individuálních položkách odlišný - definovaný programátorem aplikace. Přípustný je například automatický odskok po vyplnění jednoznakové položky nebo vertikální chod.


Bullet Pohyb v rámci položky. Zde se uplatňují klávesy:


Bullet Left ... posun vlevo
Bullet Right ... posun vrpavo
Bullet Backspace ... výmaz znaku před kurzorem
Bullet Del ... výmaz znaku na kurzoru


Bullet Vyplňování údajů


Bullet Vstup dat se děje jako na psacím stroji - přepisováním kolonky. Jako data sepřipouštějí alfanumerické znaky. Ty jsou průběžně kontrolovány a systém například nedovolí vstup písmen tam, kde musí být číslice.


Bullet Kontroly po opuštění položky


Bullet Tyto kontroly probíhají tehdy, pokud operátor - nejčastěji stiskem Enter - "odešle" data do kolonky. Například se číslo kontroluje na sémantickou vlastnost resp. na výskyt v databázi. Typickými důvody pro chybové hlášení jsou:
Bullet Nepovolená hodnota.
Bullet Formálně nesprávná hodnota.
Bullet Prázdná avšak povinná položka.
Bullet Chybný formát číselného údaje.
Bullet Neprošla kontrola údaje proti číselníku.
Bullet Sémantická chyba plynoucí z kontextu.
Bullet ...


Bullet Kontroly na závěr práce s formulářem


Bullet Stiskem F2 operátor odesílá ke zpracování formulář jako celek. Před tím je formulář zkontrolován jak na formální tak i na logickou správnost. Mají-li být například určité položky součtem jiných, je tento fakt kontrolován.


Bullet Důležité klávesy


Bullet Esc, Storno - ukončí práci s formulářem aniž by se data zpracovávala.
Bullet F2 - odesílá data z formuláře ke zpracování.
Bullet F3, dvojklik - rozsvítí menu pro určitou položku - pokud existuje nebo je vyžadováno systémem.
Bullet F12 a Alt+F12 - slouží k "zamrazení" a "rozmražení" formuláře. Hodí se pokud je třeba práci na složitém formuláři přerušit, počítač použít na něco jiného a poté pokračovat v práci. Nebo se tak data přenášejí mezi dvěma razítky v záspisech u různých vzorků. Třebas se tak dá přenést úplně stejně vyplněná sestava s citlivostí, aniž by se musela znovu psát po krocích.


Bullet Implementační informace


Bullet Informace v této kapitole jsou určeny administrátorovi a pojednávají o detailech implementace formulářů. Manipulace s definičními soubory formulářů by finální uživatel měl provádět jenom výjimečně a to po předchozím uvážení všech důsledků.
Bullet Formuláře jsou definovány v souborech *.def a jejich struktura je rádek po řádku následující. Nejprve je sekce definice formálního vzhledu a položek ve formuláři. Vždy lichý řádek definuje vzhled formuláře - jednoho řádku v něm. Sudý řádek začíná povinně lomítkem a jsou na něm úseky odpovídající položkám. Tyto mají jedno až tříznaková jména a jejich skutečná délka je označena sekvencí znaků $. Na řádku může být neomezeně položek, nemohou se ale ani překrývat a ani přesně dotýkat. Formulář je koncipován na řádky široké až 255 znaků a dlouhý 64 řádků. Počet položek je omezen číslem 512. Po sekci definice vzhledu formuláře ukončené znakem @ na samostatném řádku následuje sekce definic vlastností položek. Řádky mohou obsahovat některé z rovnic:
Bullet check=on - zapíná automatické scanování.
Bullet int=prefix - deklaruje položky jako celočíselné.
Bullet number=prefix - deklaruje položka jako číselné s buiseness formátem zápisu.
Bullet float=prefix - deklaruje položky jako reálné hodnoty.
Bullet mod11=prefix - deklaruje jako modulo 11 položku (viz dále).
Bullet evmod11= - viz dále.
Bullet evf3=položka - deklaruje položku jako číselníkovou.
Bullet cis=položka|číselník - deklaruje položku jako číselníkovou s s kontrolou na udaný soubor.
Bullet jump|položka - po vyplnění znaku do položky se jde rovnou vbez Enter na další.
Bullet vertical=on - donutí systém snímat formulář po sloupcích.
Bullet default=položka|předdefinovaná hodnota - dává položce před snímáním nastavenou hodnotu.
Bullet paired=P|Q - svazuje dvě položky jako párované, první P bude obsahovat název antibiotika a druhá, Q,
Bullet jeho citlivost (resp. citlivost mikroba na antibiotikum uvedené v P). oracle= ...
Bullet upper=prefix - zapíná automatickou konverzi na velká písmena, viz též v kapitole o technické konfiguraci systému o tom, jak se interpretují násobné stisky stejné klávesy na stejném místě bez ohledu na Shift a Caps Lock, je to v kapitole Frekventované dotazy.
Bullet ...
Bullet

Bullet Verze od verze formulářový systém může obsahovat také další klauzule. Je-li na pravé straně rovnice prefix, pak se podmínka testů týká všech položek, začínajících daným prefixem. Rozdíl mezi float a number je v tom, že number umožňuje zápis čísla včetně oddělovačů čárkami. Klauzule mod11 deklaruje položku jako bankovní účet splňující test na mod11, evmod11 pak umožní i prázdnou položku (obvykle se používá pro předčíslí).Klauzule evf3 a cis slouží ke svázání položky s číselníky.
Bullet Pro jednoznakové položky je zavedena v některých aplikacích konvence, že systém automaticky konvertuje malá písmena na velká. Týká se to jenom standardních ascii znaků s kódem <=127.
Bullet Formuláře jsou implementovány jako objecty s overloadovanými metodami. Metody obsahují řadu parametrů, které je možno konfigurovat buď globálně, nebo i na úrovni definičních souborů jednotlivých fomulářů. Každé snímání formuláře probíhá podle schématu:
Bullet Načtení formuláře z definičního souboru.
Bullet Cyklus snímání jednotlivých znaků. Formulář funguje jako konečný automat, který volá automaticky některé metody, které stav formuláře libovolně změnit - obvykle ale modifikují jenom podlední vstup z klávesnice. Detailní diskuse metod je uvedena dále.
Bullet Kontrola údajů po stisku F2.
Bullet Uložení údajů do transakčního souboru.
Bullet Nastartování transakce.


Bullet Hlavní metody, kterými je možno formulář ovládat jsou tyto:
Bullet Test vstupujícího znaku. Je-li například položka deklarována jako mod11, není do ní možno ani zapisovat písmena.
Bullet Test opuštění položky (po Enter apod). Testuje integritu na úrovni jedné položky. Například mod11 se testuje na modularitu. Položky deklarované jako cis se kontrolují na udaný číselník.
Bullet Stisk F3 - nabídka. Použije se číselník deklarovaný v klauzuli cis.
Bullet Test po stisku F2 - položky se podrobí individuálním testům.
Bullet Vedle uživatelsky definovaných metod obsahují programy také řadu testů, které se nedají na uživatelské úrovni modifikovat - různé křížové testy, vazby mezi čísly účtů a databází evidence účtů apod.


Bullet Zásahy do definice formulářů by se měly dít opatrně. Zde se pokusíme ještě shrnout některé problémy, ke kterým by mohlo dojít:


Bullet Zrušení/přejmenování důležité položky - přestane fungovat transakce.
Bullet Zkrácení položky pod minimální míru - systém se zacyklí, typicky nepůjde vložit údaj z čísleníku ale hned se bude proti číselníku kontrolovat.
Bullet Nevhodná redeklarace položky. Bude-li například částka redeklarována jako číselníková položka, pravděpodobně se nikdy nepodaří vyplnit formulář s výčetkou.
Bullet Zkorumpování struktury - formulář bude nesmyslný.
Bullet Za běhu se mohou při nevhodné redefinici formuláře objevovat i varovná hlášení "reference na neexistující položku XXX" apod.


Bullet Každý zásah do struktury formulářů je nutno uvážit a nejprve vyzkoušet. Při problémech je nutno se vrátit k originálnímu tvaru nebo konzultovat dodavatele programového vybavení.


Bullet Laboratorní systém s výjimkou nejsložitějších formulářů používá automatické generování. Zde se tedy všechna výše uvedená varování týkají pouze několika formulářů (MOP apod).


Bullet Rejstřík kapitoly


JLABS Aktualizováno dne 20001018. Komentář: info@jlabs.cz