====== 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