====== Dicom Viewer a Dicom TimeLine ======
//vetva v gite duch/merge8//**Tučné**
Dôležité pre fungovanie týchto prvkov je nutné mať spustený, nakonfigurovaný Orthanc server, nastavenú komunikáciu s PACS serverom a dostupný DCMTK toolkit.
V dennej operatíve sú dva nové prvky **Dicom viewer** a **Dicom - Timeline**.
{{ :dev:omega:dicom:addele.png?direct&400 |}}
===== Dicom viewer =====
Primitívny náhľadový priehľadač snímok z RTG, CT a pod...
Slúži na zobrazovanie jednotlivých **DICOM obrázkov** v okne tabu. Pomocou klasického ovládania môže byť zväčšovaný alebo zmenšovaný. DICOM obrázok sa následne proporcionálne zmenší/zväčší.
V prípade zobrazenie obrázka sa zobrazí aj v pravom hornom rohu, jednoduché kontextové menu.
{{ :dev:omega:dicom:contemenu.png?direct&400 |}}
==== Show in Browser ====
zobrazí aktuálne zobrazenú DICOM inštanciu v plnej veľkosti v okne prehliadača, vo formáte HTML. Vrátane základných //DICOM tagov//
==== Full Size/Normal Size ====
zobrazí DICOM inštanciu v **Dennej operatíve** v plnej veľkosti a pomocou dragovania ju možné prezerať v okne prehliadača detialnejšie
==== Windows ====
zmení Window Center a Window Width pri CT štúdiach, zatiaľ len na Bone, Brain, Lung, Mediastinum, Abdomen. Požiadavka sa posiela na server, kde sa spracuje...
==== Nastavenia ====
Pre fuknčnosť je nutné nastaviť
* Control ID (napr. dicom_view)
* Update na udalosti (napr. e_dicom)
===== Dicom TimeLine =====
Vychádza zo základnej TimeLine-y a slúži na zobrazenie jednotlivých štúdii, zoradených chronologicky (dľa nastavenia) pre daného pacientka alebo pre daný výber štúdii.
Zakladné nastavenie v XML (Controls Layout)
{include file="dailyop:dicom/study_content1"}
{$rowType}-ec:{$hasExtraHeaderContent}
{$rowType}-d:{$$display}
* extra_header_content_mc
Extra obsah, napr. z modulov.
* base1_mc
Základňa pre výpočet výšky elementu.
* line1_mc
Deliaca čiara.
* date_mc
Informácie o čase medického záznamu.
//row/contentFunction/control[@controlId="date_mc"]/data[@id="base"]
Základné vizuálne nastavenie.
//row/contentFunction/control[@controlId="date_mc"][@date="date"]
Bude vždy zobrazený dátum.
//row/contentFunction/control[@controlId="date_mc"][@date="human"]
Dnes a včera bude ako text.
//row/contentFunction/control[@controlId="date_mc"][@time="hide"]
Skrytie času.
* title_mc
Názov štúdie.
//row/contentFunction/control[@controlId="date_mc"][@display="patient"]
S nazvom studie sa zobrazi aj meno pacienta.
//row/contentFunction/control[@controlId="title_mc"]/data[@id="base"]
Základné vizuálne nastavenie.
//row/contentFunction/control[@controlId="title_mc"]/data[@id="study"]
Základné vizuálne nastavenie pre nazov studie.
//row/contentFunction/control[@controlId="title_mc"]/data[@id="base"]
Základné vizuálne nastavenie pre meno pacienta.
a pre zobrazenie jedotlivých sérií ppo rozkliknutí štúdie je nutné mať template v databáze omegy t.j.
{include file="dailyop:dicom/study_content1"}
je nutné mať v tabuľke **st2_dailyop_library** nahratý riadok s daným templatom
{*$smarty.now*}
{strip}
{*$series_name|escape*}
{foreach from=$series_data item=serie key=k}
{assign var="description" value=$serie.MainDicomTags.SeriesDescription}
{assign var="modality" value=$serie.MainDicomTags.Modality}
{if $description}
{$description}
{else}
{$modality}
{/if}
({$serie.Instances|@count})
{if $k < $series_data|@count-1} • {/if}
{/foreach}
{/strip}
Takto tu bude vyzerať po rozkliknutí
{{ :dev:omega:dicom:timeline.png?direct&400 |}}
Vyššie uvedený kód ma na starosti správne zobrazenie jednotlivých serií vrámci štúdie. Po kliknutí na danú sériu sa táto načíta do Dicom Viewera, a pre tento účel je nutné vytvoriť na ploche tab-u **Action Control** a do //Actions// tohoto prvku vložiť následovný kód. Taktiež je nutné do Control ID vložiť názov, ktorý používame vo vyššie uvedenom template (napr. c_24)
Na to aby sa pri preklikavan9 jednotlivých štúdii premazal obsah Dicom Viewera je nutné vytvorenie Action Control, ktoré bude počúvať na udalosť z timeline-y (broadcast on select) a bude obsahovať nasledovaný kód v tab-e Actions
==== Tlačidlá s požiadavku na zobrazenie dľa parametrov ====
* Na ploche vytvoríme nový Button Control.
* Nastavíme broadcast on click
* do Actions vložíme nasledovné
Prvý riadok na starosti to, že ak sme mali vybraného pacienta pomocou smartSearchu tento sa premaže.
Druhý riadok zavolá funkciu v DicomTimeline, do ktorej pošleme argument typu object
^ key ^ value ^
| type | date_word //(hľadá podľa dátumu slova)// |
| type | patient //(hľadá podľa pacienta)// |
^ key ^ value ^
| query | lastHour //(hľadá dľa slovného výrazu, v PHP je to názov funkcie)// |
^ key ^ value ^
| modality | CR //(napr. CR, CT, PT, XA a pod, modalita v DICOMe)// len jedna modalita |
Uvedený príklad vyhľadá všetky klasické RTG snímky za poslednú hodinu
Pozor!!!! Pre ďalšie je nutné dorobenie funkcie v PHP (nie je nutná kompilácia flashu)
==== Vyhľadávanie pomocu smartSearch-u ====
Na plochu vložíme **Medic Patient Select Control**, nastavíme mu Data ID a to vložime aj do DicomTimeLine-y do Patient Data ID.
Nezabudnúť ošetriť zmazanie DicomViewera cez runControl tag a funckciu clear....
==== Vyhľadávanie podľa vloženého mena alebo rodného čísla ====
Na plochu vložíme InputBox control a nastavíme Data ID napr. na inputbin_txt. Ďalej vytvoríme Button control, zapneme Broadcast on click a do tabu actions vložime následovný xml kód