ukubuzwa
Omnye umbutho wezonyango uphumeze izisombululo ezisekelwe kwiiseva ze-Orthanc PACS kunye nomxhasi we-Radiant DICOM. Ngexesha lokuseta, sifumanise ukuba umxhasi ngamnye weDICOM kufuneka achazwe kwiiseva zePACS ngolu hlobo lulandelayo:
- Igama lomthengi
- Igama le-AE (kufuneka libe lodwa)
- Izibuko le-TCP elivula ngokuzenzekelayo kwicala lomxhasi kwaye lifumana uphando lwe-DICOM kwiseva ye-PACS (oko kukuthi, umncedisi ubatyhalela kumxhasi-ukuqala uxhulumaniso kuqala)
- Idilesi ye-IP
Emva kokuseta iRadiant, abathengi bafumana oku kukutya okulandelayo okucingayo: kumxhasi ngamnye, ukuseta isoftware ngezi parameters ezingentla kubangele ukuba ifayile igcwaliswe. iipacs.xml, ebibekwe kwiprofayile yomsebenzisi (indlela: %APPDATA%RadiantViewerpacs.xml). Ngaxeshanye, uqwalaselo lomnye umxhasi lohlukile komnye ubuncinane kwiparameters ezimbini (igama leAE lahlukile kumntu wonke, kwaye izibuko liyafana, ngaphandle kwabaxhasi besiphelo ababalekayo kumncedisi omnye - apho amazibuko ayenawo. ukwabelwa ngokwahlukileyo).
Umzekelo pacs.xml ifayile nge
Kangangeenyanga ezintandathu yonke into yayilungile, inkqubo yaqalisa ukusebenza... yaza ke yafika kuthi βngaphantsi kwamanzi amatye"
- Kufuneka sisebenzise iiseva ezininzi ze-PACS eziza kuthatha indawo yezindala (apho isithuba sedisk siqalisile ukuphelelwa). Iiseva ze-PACS kumatshini obonakalayo, kodwa ayisiyiyo le nto sithetha ngayo;
- Kufuneka ngandlela-thile sitshintshe ulungelelwaniso olulodwa (kunye neeparitha ezimbini ezahlukeneyo) koomatshini abangama-200 (inani labo lalikhula rhoqo);
- Ukuqwalasela izinga lokukhula kwemithamo yesaveyi, isisombululo asifuneki nje kanye, kodwa siphindaphindwe kwaye rhoqo (umzekelo, kanye emva kweenyanga ezi-1-3).
Ukukhetha izixhobo zokusombulula ingxaki
Ekuqaleni, bekukho iinzame zokufumana isisombululo esiya kuguqula ifayile ye-pacs.xml kwicala lomxhasi kwaye yenze utshintsho kuluhlu lwabancedisi be-PACS ngaphandle kokuchaphazela igama le-AE kunye nezicwangciso zezibuko ze-TCP. Abathengi beWindows ngelo xesha babesekwe kuzo zombini iiWindows XP kunye neWindows 7 - ke bekukho iinzame zokubhala into enje ngokusekwe kwiVBScript. Kodwa yeha, kwakungenakwenzeka ukwenza umsebenzi onjalo, ngenxa yokunqongophala ngokupheleleyo kwamava ekubhaleni nayiphi na into enzima kwaye ebanzi ngolu lwimi. Imizamo yokufumana nokubhala kwakhona ayiphumelelanga (kufuneka kuqatshelwe ukuba sele ndinesicwangciso esahlukileyo entlokweni yam, ngoko andizange ndifake i-VBScript ngaphezu kweeyure ze-3-4).
Ekugqibeleni, ndilungiselele isisombululo esilandelayo:
- Ukusebenzisa umgaqo-nkqubo weqela, qokelela zonke iifayile ze-pacs.xml kwindawo enye kuyo nayiphi na iseva kumthombo wothungelwano;
- Guqula iifayile ngobuninzi (besele ndinamava ekusombululeni iingxaki ezinjalo usebenzisa iPerl);
- Kwakhona sebenzisa imigaqo-nkqubo yeqela ukuhlaziya useto lwabathengi.
Ukuqokelela iifayile kusetyenziswa uMgaqo-nkqubo weQela
Elona candelo lilula kukuba xa umxhasi engena kwiprofayile yakhe, yena, ngamalungelo akhe, aphumeze ifayile ethile .bat, ethi:
echo off
If exist %APPDATA%RadiantViewerpacs.xml copy %APPDATA%RadiantViewerpacs.xml srv.test.localpconfigs$pacs-%COMPUTERNAME%-%USERNAME%.xml
Ngaloo ndlela, iifayile ze-pacs.xml ziya kuqokelelwa kumncedisi kumthombo ofihliweyo, igama eliqulethe ulwazi olusuka kweyiphi ikhompyutha kwaye ikopi yomsebenzisi ikhutshelwe.
Eyona nto yayinzima yayikukulinda de lo mgaqo-nkqubo usebenze kubo bonke abasebenzisi.
Ukutshintsha ulungelelwaniso usebenzisa i-Perl script
Siza kudinga
Iskripthi ngokwaso siye sabonakala silula:
use XML::Writer;
# ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡ Ρ ΠΎΡΡΠ΅ΡΠ°ΠΌΠΈ, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ ΡΡΠΏΠΈΡΠΎΠΊ (ΡΠ΄Π°Π»ΡΠ΅ΠΌ Π»ΠΈΡΠ½Π΅Π΅):
$report_dir = "C:Perl64WORKPACS-xml3";
opendir(DIR, "$report_dir") or die "ΠΠ΅ ΠΌΠΎΠ³Ρ ΠΎΡΠΊΡΡΡΡ ΠΏΠ°ΠΏΠΊΡ Ρ ΠΎΡΡΠ΅ΡΠ°ΠΌΠΈ!";
@report_files = readdir DIR;
shift (@report_files); # ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΡΠΎΡΠΊΡ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° (.)
shift (@report_files); # ΡΠ΄Π°Π»ΡΠ΅ΠΌ Π΄Π²Π΅ ΡΠΎΡΠΊΠΈ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° (..)
# print "@report_files";
closedir(DIR);
# ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ - ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π·Π° ΡΠ°Π·. ΠΡΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ AET ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ° Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
foreach $analiz_file (@report_files)
{
$full_path_to_file="C:Perl64WORKPACS-xml3".$analiz_file;
open (INFO, $full_path_to_file);
while ($line = <INFO>)
{
# ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ $aet ΠΈ $port ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ XML ΡΠ°ΠΉΠ»Π°:
my ($other1, $aet, $other2, $port, $other3) = split /"/, $line, 5;
# ΠΡΠ»ΠΈ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΡΡΠΎΠΊΠ° listener - ΡΠΎ ΠΌΡ Π΄ΠΎΡΠ»ΠΈ Π΄ΠΎ Π½ΡΠΆΠ½ΠΎΠΉ ΡΡΡΠΎΡΠΊΠΈ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ XML:
if ($other1 =~ 'listener')
{
# Π€ΠΎΡΠΌΠΈΡΡΠ΅ΠΌ Π½ΠΎΠ²ΡΠΉ XML c Π½ΡΠΆΠ½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ ΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ:
my $writer = XML::Writer->new(OUTPUT => 'self', DATA_MODE => 1, DATA_INDENT => 2, );
$writer->xmlDecl('utf-8');
$writer->startTag('pacs');
$writer->startTag('listener', ae => $aet, port => $port);
$writer->endTag();
$writer->startTag('hosts');
$writer->startTag('host', name => 'MRT', ae => 'ORTHANC', ip => 'XX.YY.214.17', ts => '1.2.840.10008.1.2.1', port => '4242', maxassoc => '1', allpres => '0', search => '1', protocol => '1', searchcharset => '', wildcards => '3', carets => '0');
$writer->endTag();
$writer->startTag('host', name => 'KT', ae => 'ORTHANC2', ip => 'XX.YY.215.253', ts => '1.2.840.10008.1.2.1', port => '4242', maxassoc => '1', allpres => '0', search => '1', protocol => '1', searchcharset => '', wildcards => '3', carets => '0');
$writer->endTag();
$writer->startTag('host', name => 'R', ae => 'ORTHANC3', ip => 'XX.YY.215.252', ts => '1.2.840.10008.1.2.1', port => '4242', maxassoc => '1', allpres => '0', search => '1', protocol => '1', searchcharset => '', wildcards => '3', carets => '0');
$writer->endTag();
$writer->startTag('host', name => 'KT-20180501-20180831', ae => 'ORTHANC4', ip => 'XX.YY.215.251', ts => '1.2.840.10008.1.2.1', port => '4242', maxassoc => '1', allpres => '0', search => '1', protocol => '1', searchcharset => '', wildcards => '3', carets => '0');
$writer->endTag();
$writer->startTag('host', name => 'KT-20180901-20181130', ae => 'ORTHANC5', ip => 'XX.YY.215.250', ts => '1.2.840.10008.1.2.1', port => '4242', maxassoc => '1', allpres => '0', search => '1', protocol => '1', searchcharset => '', wildcards => '3', carets => '0');
$writer->endTag();
$writer->endTag('hosts');
$writer->startTag('presets');
$writer->endTag();
$writer->startTag('lastsearch', dt => '4', mfid => '1048592');
$writer->endTag();
$writer->endTag('pacs');
# ΠΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π³ΠΎΡΠΎΠ²ΡΠΉ XML Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ:
my $xml = $writer->end();
# ΠΠΎΠ΄Π³ΠΎΡΠ°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠΈ:
$rewritexml = $full_path_to_file;
# ΠΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ XML ΡΠ°ΠΉΠ»Ρ Π½ΠΎΠ²ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ:
open (NEWXML, ">$rewritexml");
print NEWXML $xml;
close (NEWXML);
}
}
}
Umgaqo wokusebenza kwayo:
- Sivula uvimba weefayili apho siqokelele ulungelelwaniso lwe-pacs.xml kubathengi kwaye sibeke uluhlu lweefayile kuluhlu lwee-scalars (@report_files);
- Kwi-loop, siqhuba ifayile enye ngexesha kwaye sifunde umgca ngomgca;
- Ukusebenzisa ukuhlukana, sahlula umgca ngamnye ube ngamacandelo ama-5, sisebenzisa iingcaphuno njengesahluli;
- Sifumana umgca kunye negama lomphulaphuli kunye nedatha yendawo ekhethekileyo kwifayile nganye (igama lomxhasi we-AE kunye nenombolo ye-port ye-TCP) kwiinguqu ezimbini;
- Emva koku, sivelisa ngokulula ifayile entsha ye-XML, faka iiparamitha ezizodwa kuyo kwaye emva koko ufake inani elifunekayo leeseva ze-PACS ngeeparamitha zazo - abo. iqale ngantoni)
- Siphinda sibhala ifayile entsha yeXML ngaphezulu kwendala.
Kufuneka kuqatshelwe ukuba eneneni, andisisebenzisi esi script ngokuzenzekelayo ngokuzenzekelayo - enyanisweni, ndikhuphela uqwalaselo oluqokelelweyo kuluhlu olwahlukileyo kwaye emva koko ndiqhube iskripthi kwaye nditshintshe zonke ngobuninzi. Okulandelayo, ukujonga okungahleliwe - kunye noqwalaselo lunokuhanjiswa emva koomatshini.
Ukusasaza iifayile ze-pacs.xml ezilungisiweyo kubathengi
Eyona nto ilula ethe yafika engqondweni kukwenza utshintsho kwifayile esele isebenza .bat eqokelela ubumbeko kubathengi kwaye yongeze umgca:
If exist %APPDATA%RadiantViewerpacs.xml copy /Y srv.test.localpconfigsnew$pacs-%COMPUTERNAME%-%USERNAME%.xml %APPDATA%RadiantViewerpacs.xml
Ifayile ye.bat yokugqibela ibonakala ngolu hlobo:
@echo off
If exist %APPDATA%RadiantViewerpacs.xml copy %APPDATA%RadiantViewerpacs.xml srv.test.localpconfigs$pacs-%COMPUTERNAME%-%USERNAME%.xml
If exist %APPDATA%RadiantViewerpacs.xml copy /Y srv.test.localpconfigsnew$pacs-%COMPUTERNAME%-%USERNAME%.xml %APPDATA%RadiantViewerpacs.xml
isiphelo
Iyafana nale"idolo"isisombululo. Sele sizame kabini (ngoSeptemba 2018 kunye noFebruwari 2019), ukuza kuthi ga ngoku indiza iqhelekile. Ewe, hayi i-100% yohlaziyo lwabathengi, kodwa isondele kweli xabiso - sigqibezela ukuphumla ukude. Ishicilelwe ngu
umthombo: www.habr.com