Nástroje používateľa

Nástoje správy stránok


dev:omega:labview

Laboratórne výsledky pre TIMELINE-u

vetva v GITe je duch/probios-labaky

Nastavenie cez SmartSearch

Základným prvkom je:

  • TimeLine Prvok = Dicom TimeLine
    • nastavíme Patient Data ID na patient_ms_id
    • Control ID = patientLabs_tml
    • Update na udalosti = e_show_patient_labs
    • a nastavíme správanie TimeLine-y
  • Zobrazovač výsledkov = DicomMedirexLabsViewer
    • nastavíme Control ID na labsViewer

tieto je nutné položiť na plochu Dennej operatívy napr. viď obrázok

Môžeme vložiť Prvok - Medic Select Patient, tento nám zistí SmartSearch fnc na hľadanie pacientov

V nastaveniach prvku Medic Select Patient nastavíme následovné

  • ControlId = patientSelect
  • Data ID = patient_ms_id
  • Vysielať udalosť = e_patient_selected

Pridáme na plochu prvok typu Action a do jeho Nastavenia/Actions vložíme následovné

<set helperValueDataId="dicom_type" value="MEDIREX" />
<runFunction controlId="patientLabs_tml" function="setLaboratory" pass="arguments">
  <param value="MEDIREX" type="string" />
  <param value="FALSE" type="boolean" />
</runFunction>
<broadcastEvent eventId="e_show_patient_labs" />
  • dicom_type = zavolá triedu, ktorá má na starosti spracovanie/zobrazenie importovaných výsledkov z Medirexu
  • a funkcia v timeline nastaví správne parametre pre TimeLine=u
  • broadcastEvent vyvolá udalosť na ktorú bude TimeLine-a pozerať
  • Do Obecných vložíme aby počúval na udalosť e_patient_selected

Vložíme prvok typu Action nastavíme ho:

  • Control ID = ctrl_load_labs
  • do Actions vložíme nasledovné
<runFunction controlId="labsViewer" function="setLabsId" pass="arguments">
  <param valueHelperDataId="_runControlArg0" />
</runFunction>
<set formDataId="form_labsId" valueHelperDataId="_runControlArg0" />
<updateControl controlId="txt_labsId" />
<layout controlId="transfer_btn" enabled="1" />

pre korektné správanie je nutné mať, ale vytvorený script v tabuľke st2_dailyop_library

{strip}
<!--<b>{$series_name|escape}</b><br>-->
 
<a href="asfunction:_DAILY_OPERATIONS_FORM.runControl,ctrl_load_labs|{$series_id}|{$data_type}">{$series_name}</a><br> <b>Počet položiek</b>-{$exam_count},
<b>Typ hodnoty</b>-{$group_type}{/strip}
{$exam_items}

Toto má na starosti to, že keď klikneme v TimeLine na nejaký záznam tak sa aktivuje prehliadač výsledkov a zobrazí nám už naformatované hodnoty.

Toto by nám malo zaistiť pri výbere pacienta nahratie jeho základných laboratórnych hodnôt.

Hľadenie vložením rodného čísla

Na plochu vložíme prvok typu Input Text

nastavíme ho:

  • Control ID = txt_testBin
  • Data ID = testBinText

Na plochu vložíme prvok typu Button nastavíme ho tak že do Actions vložíme nasledovný kód

<runFunction controlId="patientLabs_tml" function="searchLabResultsByBin" pass="arguments">
  <param valueFormDataId="testBinTxt" />
  <param value="MEDIREX" type="string" />
</runFunction>
<runFunction controlId="labsViewer" function="clearLabsViewer" />
<!-- toto je pre pripad ze mame InputText kde mame vlozene IDecko labakov -->
<set formDataId="labID" value="" />
<updateControl controlId="labID_txt" />
<set formDataId="txt_resultOutput" value="" />
<set valueHelperDataId="lab_ouput_txt" value="" />
<updateControl controlId="outputres_txt" />
<!-- toto je na to ze ked mame button na prenos vysledkov tak pri nacitani novych hodnot sa deaktivuje -->
<layout controlId="transfer_btn" enabled="0" />
<broadcastEvent eventId="e_search_byBin" />

Následne musíme pridať do našej TimeLine-y Update na udalosť a pridáme e_search_byBin

Prenos výsledku do InputBoxu z LabViewera

Na plochu pridáme prvok typu Button

do Actions pridáme

<runControl controlId="action_transfer_txt" />

Následne pridáme prvok typu Action

  • vložíme do Control ID action_transfer_txt

a do Actions

<request function="module:dicom/medirexLabs/dtrq_getFormatedOuput" disableForm="yes" resultHelperDataId="lab_ouput_txt" broadcastEventId="e_laboutput_get" _onErrorBroadcastEvent="e_info_status_reset">
  <!-- dava IDecko posledne kliknuteho vysetrenia -->
  <param key="labsId" valueHelperDataId="_runControlArg0" />
  <!-- udava o aky typ hodnot sa jedna text/values -->
  <param key="dataType" valueHelperDataId="_runControlArg1" />
 
</request>

Následne vložíme prvok typu Input text

  • Control ID = outputres_txt
  • Data ID = txt_resultOutput
  • update na udalosť = e_laboutput_get

Následne vložíme prvok typu Action

  • Control ID = action_transfer_textoutput
  • Update na udalosť = e_laboutput_get

a do Actions vložíme

<set formDataId="txt_resultOutput" valueHelperDataId="lab_ouput_txt" />
<updateControl controlId="outputres_txt" />

Výstupné textové templaty

Spracovanie textových hodnôt je jednoduché prenesie sa text tak ako bol obdržaný z MEDIREXu

Avšak prenos tabuľkových hodnôt je trochu iný. Vzhľadom na to, že lekári majú tendenciu si robiť vlastné zobrazenia výstupov takýchto hodnôt, existuje templater na túto okolnosť.

V databáze omegy sa nachádza tabuľka dasta_exams_results_templates

  • template_idf = je idefko daného templatu, mal by obsahovať len písmená, čísla a _ inak nič
  • template_label = je nejaký nadpis v slovenčine t.j. napr. Základný výstup a pod
  • account_id = sem nutné napísať učet uživateľa, ktorému tento template patrí
  • template_data = toto je už formátovanie ako to bude vyzerať, code behind je v medirexLab.class.php metóda getFormatedOutput

Vzor takého templatu je napr.

{$exam_label}-/[{$exam_accepted}]
-------------------------------------------
{strip|'\r'}{foreach from=$data item=row key=r}
{$row.exam_idf} ({$row.exam_label})...{$row.exam_value}[{$row.exam_unit}] ({$row.exam_scale.min}...{$row.exam_scale.max}),{/foreach}

Prakticky povedané su to nazvy polí tabuľky dasta_exams_results_data Poukladané tak ako aby to sedelo dľa požiadaviek

Jednotlivé templaty sú spojené s combo_boxom v LabsViewery kde sa naťahujú pri jeho inicializácii súbor dicom_medirexlabs_loader_symbol.as

Template pre timelinu

<layout version="1" updated="2018-01-04">
	<contentTemplate type="DICOM_MEDIREXLABS" insert="append" clear="yes">
    {include file="dailyop:dicom/medirexlabs_content1"}
	</contentTemplate>
	<trigger group="rowSlotExtraContent">
    {$rowType}-ec:{$hasExtraHeaderContent}
	</trigger>
	<trigger group="rowBase">
    {$rowType}-d:{$$display}
	</trigger>
	<declare>
    * 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.
	</declare>
	<row>
		<trigger group="rowSlotExtraContent" id="dicom_medirexlabs-ec:0" />
		<contentFunction>
			<control controlId="extra_header_content_mc" />
		</contentFunction>
		<control controlId="extra_header_content_mc" left="6" top="20" visible="no" xscale="100" rightBase="__row.right" right="0" border="yes" initFirst="yes" />
		<control controlId="base1_mc" topBase="extra_header_content_mc.bottom" top="20" />
		<control controlId="line1_mc" topBase="extra_header_content_mc.bottom" top="0" />
	</row>
	<row>
		<trigger group="rowSlotExtraContent" id="dicom_medirexlabs-ec:1" />
		<control controlId="base1_mc" top="40" visible="no" />
		<control controlId="line1_mc" top="10" visible="no" />
		<control controlId="extra_header_content_mc" top="15" visible="yes" />
	</row>
	<row>
		<trigger group="rowBase" id="dicom_medirexlabs-d:header" />
		<_trigger group="rowBase" id="dicom_medirexlabs-d:full" />
		<_trigger group="rowBase" id="dicom_medirexlabs-d:teaser" />
 
		<contentFunction>
			<control controlId="line_mc" _runLater="yes" />
			<control controlId="date_mc" date="human" runLater="yes" />
			<control controlId="title_mc" _display="patient" runLater="yes" />
			<control controlId="patient_mc" runLater="yes" />
			<control controlId="init_handlers" runLater="yes" />
		</contentFunction>
 
		<control controlId="__row" height="20" elementHeight="20" rightBase="__panel.right" right="-5">
			<background>
				<key color="#ffffcc" position="0" />
				<key color="#ffffcc" position="53" />
			</background>
		</control>
		<control controlId="__row" heightBase="base1_mc.top" height="20" elementHeightBase="base1_mc.top" elementHeight="20" rightBase="__panel.right" right="-5" />
		<control controlId="report_mc" visible="no" top="20" />
 
		<control controlId="title_mc" left="6" top="0" width="200" xscale="100" visible="yes" _border="1" />
		<control controlId="date_mc" leftBase="title_mc.right" left="2" top="0" rightBase="__row.right" right="-4" visible="yes" _border="1" />
		<control controlId="patient_mc" _leftBase="title_mc.right" left="6" top="18"  width="200" xscale="85" visible="yes" border="0" />\
		<control controlId="line1_mc" visible="yes" left="5" top="0" xscale="100" topBase="patient_mc.bottom" color="#ffffff"/>
	</row>
 
	<!--<row>
		<trigger group="rowBase" id="dicom_medirexlabs-d:teaser" />
		<contentFunction>
			<control controlId="fill_content" type="teaser" />
		</contentFunction>
		<control controlId="__row" heightBase="base1_mc.top" height="0" elementHeightUnset="yes" />
		<control controlId="line1_mc" left="10" rightBase="__row.right" right="-5" visible="no" />
		<_control controlId="report_mc" left="8" topBase="base1_mc.top" width="200" top="1" bottomBase="__row.bottom" bottom="0" rightBase="__row.right" right="-1" visible="yes" />
	</row>-->
 
	<row>
		<trigger group="rowBase" id="dicom_medirexlabs-d:full" />
		<contentFunction>
			<control controlId="fill_content" type="full" height="20" rightBase="__panel.right" right="-10"  />
		</contentFunction>
 
		<control controlId="__row" height="150" elementHeight="150" rightBase="__panel.right" right="-5">
			<background>
				<key color="#ffffcc" position="0" />
				<key color="#ffffcc" position="53" />
			</background>
		</control>
 
 
		<control controlId="title_mc" left="6" top="0" width="200" xscale="100" visible="yes" _border="1" />
		<control controlId="date_mc" leftBase="title_mc.right" left="2" top="0" rightBase="__row.right" right="-4" visible="yes" _border="1" />
		<control controlId="patient_mc" _leftBase="title_mc.right" left="6" top="18"  width="200" xscale="85" visible="yes" border="0" />
 
		<control controlId="line1_mc" left="10" rightBase="__row.right" right="-10" visible="no" />
		<control controlId="report_mc" left="8" topBase="base1_mc.top" top="1" width="200" rightBase="__row.right" right="-8" visible="yes" selectable="yes" _border="1" initFirst="yes" />
 
		<control controlId="__row" heightBase="report_mc.bottom" height="4" elementHeightUnset="yes" />
	</row>
</layout>

Funkčné xml tabu Dennej operatívy na testovanie samozrejme nutný code-behind

<?xml version="1.0" encoding="UTF-8"?><controls><dicomTimeline patientDataId="patient_ms_id" eventHack1="1" controlId="patientLabs_tml" version="2" layer="5" top="10" left="340" headerStyle="99" height="460" width="320"><inputEvent mouse="click" actionType="open_close" /><updateOnEvent eventId="e_select_lab" /><updateOnEvent eventId="e_search_byBin" /><updateOnEvent eventId="e_show_patient_labs" /><broadcastOnSelect eventId="e_tl_selected" /><layoutSettings timestamp="1538045574059"><layout version="1" updated="2018-01-04"><contentTemplate type="DICOM_MEDIREXLABS" insert="append" clear="yes">{include file=&quot;dailyop:dicom/medirexlabs_content1&quot;}</contentTemplate><trigger group="rowSlotExtraContent">{$rowType}-ec:{$hasExtraHeaderContent}</trigger><trigger group="rowBase">{$rowType}-d:{$$display}</trigger><declare>* 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=&quot;date_mc&quot;]/data[@id=&quot;base&quot;]
			Základné vizuálne nastavenie.
 
		//row/contentFunction/control[@controlId=&quot;date_mc&quot;][@date=&quot;date&quot;]
			Bude vždy zobrazený dátum.
 
		//row/contentFunction/control[@controlId=&quot;date_mc&quot;][@date=&quot;human&quot;]
			Dnes a včera bude ako text.
 
		//row/contentFunction/control[@controlId=&quot;date_mc&quot;][@time=&quot;hide&quot;]
			Skrytie času.
 
 
	* title_mc
		Názov štúdie.
 
		//row/contentFunction/control[@controlId=&quot;date_mc&quot;][@display=&quot;patient&quot;]
			S nazvom studie sa zobrazi aj meno pacienta.
 
		//row/contentFunction/control[@controlId=&quot;title_mc&quot;]/data[@id=&quot;base&quot;]
			Základné vizuálne nastavenie.
 
		//row/contentFunction/control[@controlId=&quot;title_mc&quot;]/data[@id=&quot;study&quot;]
			Základné vizuálne nastavenie pre nazov studie.
 
		//row/contentFunction/control[@controlId=&quot;title_mc&quot;]/data[@id=&quot;base&quot;]
			Základné vizuálne nastavenie pre meno pacienta.</declare><row><trigger group="rowSlotExtraContent" id="dicom_medirexlabs-ec:0" /><contentFunction><control controlId="extra_header_content_mc" /></contentFunction><control controlId="extra_header_content_mc" left="6" top="20" visible="no" xscale="100" rightBase="__row.right" right="0" border="yes" initFirst="yes" /><control controlId="base1_mc" topBase="extra_header_content_mc.bottom" top="20" /><control controlId="line1_mc" topBase="extra_header_content_mc.bottom" top="0" /></row><row><trigger group="rowSlotExtraContent" id="dicom_medirexlabs-ec:1" /><control controlId="base1_mc" top="40" visible="no" /><control controlId="line1_mc" top="10" visible="no" /><control controlId="extra_header_content_mc" top="15" visible="yes" /></row><row><trigger group="rowBase" id="dicom_medirexlabs-d:header" /><_trigger group="rowBase" id="dicom_medirexlabs-d:full" /><_trigger group="rowBase" id="dicom_medirexlabs-d:teaser" /><contentFunction><control controlId="line_mc" _runLater="yes" /><control controlId="date_mc" date="human" runLater="yes" /><control controlId="title_mc" _display="patient" runLater="yes" /><control controlId="patient_mc" runLater="yes" /><control controlId="init_handlers" runLater="yes" /></contentFunction><control controlId="__row" height="20" elementHeight="20" rightBase="__panel.right" right="-5"><background><key color="#ffffcc" position="0" /><key color="#ffffcc" position="53" /></background></control><control controlId="__row" heightBase="base1_mc.top" height="20" elementHeightBase="base1_mc.top" elementHeight="20" rightBase="__panel.right" right="-5" /><control controlId="report_mc" visible="no" top="20" /><control controlId="title_mc" left="6" top="0" width="200" xscale="100" visible="yes" _border="1" /><control controlId="date_mc" leftBase="title_mc.right" left="2" top="0" rightBase="__row.right" right="-4" visible="yes" _border="1" /><control controlId="patient_mc" _leftBase="title_mc.right" left="6" top="18" width="200" xscale="85" visible="yes" border="0" />\<control controlId="line1_mc" visible="yes" left="5" top="0" xscale="100" topBase="patient_mc.bottom" color="#ffffff" /></row><row><trigger group="rowBase" id="dicom_medirexlabs-d:full" /><contentFunction><control controlId="fill_content" type="full" height="20" rightBase="__panel.right" right="-10" /></contentFunction><control controlId="__row" height="150" elementHeight="150" rightBase="__panel.right" right="-5"><background><key color="#ffffcc" position="0" /><key color="#ffffcc" position="53" /></background></control><control controlId="title_mc" left="6" top="0" width="200" xscale="100" visible="yes" _border="1" /><control controlId="date_mc" leftBase="title_mc.right" left="2" top="0" rightBase="__row.right" right="-4" visible="yes" _border="1" /><control controlId="patient_mc" _leftBase="title_mc.right" left="6" top="18" width="200" xscale="85" visible="yes" border="0" /><control controlId="line1_mc" left="10" rightBase="__row.right" right="-10" visible="no" /><control controlId="report_mc" left="8" topBase="base1_mc.top" top="1" width="200" rightBase="__row.right" right="-8" visible="yes" selectable="yes" _border="1" initFirst="yes" /><control controlId="__row" heightBase="report_mc.bottom" height="4" elementHeightUnset="yes" /></row></layout></layoutSettings></dicomTimeline><action dataId="labsId" controlId="ctrl_load_labs" version="3" layer="5" top="90" left="835" runOnUpdate="1" height="20" width="100"><broadcastEvent eventId="labs_update" /><actions><_analyze /><runFunction controlId="labsViewer" function="setLabsId" pass="arguments"><param valueHelperDataId="_runControlArg0" /></runFunction><set formDataId="form_labsId" valueHelperDataId="_runControlArg0" /><updateControl controlId="txt_labsId" /><layout controlId="transfer_btn" enabled="1" /></actions></action><dicom_medirexlabs version="2" controlId="labsViewer" layer="5" top="15" left="20" dataId="dicom_medirexlabs_1528261294" shadow="1" height="425" width="310"><dicom_medirexlabs>New dicom_medirexlabs</dicom_medirexlabs><updateOnEvent eventId="labs_update" /></dicom_medirexlabs><medicSelectPatient clearButton="1" version="2" controlId="patientSelect" layer="5" top="10" left="690" dataId="patient_ms_id" height="20" width="220"><broadcastEvent eventId="e_patient_selected" /></medicSelectPatient><action version="3" controlId="action_after_patient" layer="5" top="60" left="695" runOnUpdate="1" height="20" width="100"><updateOnEvent eventId="e_patient_selected" /><actions><_analyze /><set helperValueDataId="dicom_type" value="MEDIREX" /><runFunction controlId="patientLabs_tml" function="setLaboratory" pass="arguments"><param value="MEDIREX" type="string" /><param value="FALSE" type="boolean" /></runFunction><broadcastEvent eventId="e_show_patient_labs" /></actions></action><button broadcastOnClick="1" version="6" layer="5" top="60" left="825" height="20" width="100"><label>MEDIREX</label><broadcastEvent eventId="e_select_lab" /><actions><runFunction controlId="patientLabs_tml" function="setLaboratory" pass="arguments"><param value="MEDIREX" type="string" /><param value="false" type="boolean" /></runFunction></actions></button><button version="6" layer="5" top="155" left="835" height="20" width="100"><label>Copy to clipboard</label><hint>Uloží dáta z labákov do schránky....</hint><actions><_analyze /><runFunction controlId="labsViewer" function="copyToClipboard"><_param valueHelperDataId="_runControlArg0" /></runFunction></actions></button><inputText version="6" controlId="txt_testBin" layer="5" top="120" left="690" dataId="testBinTxt" height="18" width="120"><broadcastEvent eventId="textBinTest" /></inputText><button version="6" layer="5" top="120" left="835" height="20" width="100"><label>Labaky MEDIREX</label><actions><_analyze /><runFunction controlId="patientLabs_tml" function="searchLabResultsByBin" pass="arguments"><param valueFormDataId="testBinTxt" /><param value="MEDIREX" type="string" /></runFunction><runFunction controlId="labsViewer" function="clearLabsViewer" /><set formDataId="labID" value="" /><updateControl controlId="labID_txt" /><set formDataId="txt_resultOutput" value="" /><set valueHelperDataId="lab_ouput_txt" value="" /><updateControl controlId="outputres_txt" /><layout controlId="transfer_btn" enabled="0" /><broadcastEvent eventId="e_search_byBin" /></actions></button><label selectable="1" version="5" showAs="label" layer="5" top="150" left="695" shadow="1" height="75" width="115">0001201684
5954177196
7651038164
7352209370</label><button controlId="transfer_btn" version="6" layer="5" top="185" left="835" height="30" width="110"><label>Transfer LAB output</label><actions><runControl controlId="action_transfer_txt" /></actions></button><action controlId="action_transfer_txt" version="3" layer="5" top="225" left="835" runOnUpdate="1" height="35" width="115"><actions><request function="module:dicom/medirexLabs/dtrq_getFormatedOuput" disableForm="yes" resultHelperDataId="lab_ouput_txt" broadcastEventId="e_laboutput_get" _onErrorBroadcastEvent="e_info_status_reset"><param key="labsId" valueHelperDataId="_runControlArg0" /><param key="dataType" valueHelperDataId="_runControlArg1" /><_param key="credentialCode" valueHelperDataPath="resource_role.credential_code" /><_param key="hciDataCode" valueHelperDataPath="resource_role.hci_data_code" /><_param key="hceDataCode" valueHelperDataPath="resource_role.hce_data_code" /><_param key="projectMsId" valueHelperDataId="active_project_ms_id" /></request></actions></action><inputText controlId="outputres_txt" appearance="outline" mode="multiline_wrap" version="6" layer="5" top="265" left="670" dataId="txt_resultOutput" height="216" width="305"><updateOnEvent eventId="e_laboutput_get" /></inputText><action controlId="action_transfer_textoutput" version="3" layer="5" top="235" left="695" runOnUpdate="1" height="20" width="100"><updateOnEvent eventId="e_laboutput_get" /><actions><_analyze /><set formDataId="txt_resultOutput" valueHelperDataId="lab_ouput_txt" /><updateControl controlId="outputres_txt" /></actions></action><inputText version="6" controlId="txt_labsId" layer="5" top="95" left="695" dataId="form_labsId" height="18" width="120" /></controls>
dev/omega/labview.txt · Posledná úprava: 2018/09/28 11:34 od Boris Duchaj