prehistory
Rimwe sangano rekurapa rakaisa zvigadziriso zvakavakirwa paOrthanc PACS maseva uye Radiant DICOM mutengi. Panguva yekuseta, takaona kuti mutengi wega wega DICOM anofanirwa kutsanangurwa mumaseva ePACS sezvinotevera:
- Zita remutengi
- AE zita (rinofanira kunge rakasiyana)
- Chiteshi cheTCP chinovhura otomatiki padivi remutengi uye chinogamuchira DICOM ongororo kubva kuPACS server (kureva, sevha inovasundira kumutengi - kutanga kubatana)
- IP kero
Mushure mekugadzirisa Radiant, vatengi vakagamuchira chikafu chinotevera chekufunga: kune mutengi wega wega, kumisikidza software neiyo pamusoro apa paramita yakakonzera kuti faira rizadzwe. pacs.xml, iyo yaive muchimiro chemushandisi (nzira: %APPDATA%RadiantViewerpacs.xml) Panguva imwecheteyo, dhizaini yemumwe mutengi yaisiyana kubva kune imwe mune angangoita maviri paramita (zita reAE rakasiyana kune wese munhu, uye chiteshi chakangofanana, kunze kwevatengi vekupedzisira vanomhanya pane imwechete sevha - ipapo madoko aivewo. kugoverwa zvakasiyana).
Muenzaniso pacs.xml file by
Kweinenge mwedzi mitanhatu zvese zvaive zvakanaka, sisitimu yakatanga kushanda ... uye yakauya kwatiri "pasi pemvura mabweΒ»:
- Isu tinofanirwa kuisa mukushanda akati wandei ePACS maseva anozotsiva ekare (apo disk nzvimbo yatanga kupera). PACS maseva mumashini chaiwo, asi handizvo zvatiri kutaura nezvazvo;
- Isu tinoda neimwe nzira yepakati kushandura akasiyana masisitimu (ane maviri akasiyana paramita) pamachina mazana maviri (nhamba yavo yaigara ichiwedzera);
- Tichifunga nezvekukura kwemavhoriyamu eongororo, mhinduro inodiwa kwete kamwe chete, asi inodzokororwa uye nguva dzose (semuenzaniso, kamwe chete pamwedzi 1-3).
Kusarudza maturusi ekugadzirisa dambudziko
Pakutanga, pakaedza kutsvaga mhinduro yaizogadzirisa pacs.xml faira kudivi remutengi uye kuita shanduko kurondedzero yemaseva ePACS pasina kukanganisa zita reAE uye TCP marongero echiteshi. Vatengi veWindows panguva iyoyo vaive vakavakirwa paWindows XP neWindows 7 - saka pakaedza kunyora chimwe chinhu chakadai kubva paVBScript. Asi nhamo, zvakanga zvisingabviri kugona basa rakadaro, nokuda kwekushaya ruzivo rwakakwana mukunyora chero chinhu chakaoma uye chakazara mumutauro uyu. Kuedza kutsvaga nekunyora zvakare hakuna kubudirira (inofanira kuonekwa kuti ndakanga ndatova nehurongwa hwakasiyana mumusoro mangu, saka handina kuita fiddle neVBScript kwemaawa anopfuura 3-4).
Pakupedzisira ndakagadzika pane inotevera mhinduro:
- Uchishandisa gwara reboka, unganidza mafaera ese epacs.xml munzvimbo imwechete pane chero sevha mune network resource;
- Shandura mafaira en masse (ndanga ndatove neruzivo mukugadzirisa matambudziko akadaro ndichishandisa Perl);
- Uyewo shandisa mitemo yeboka kugadzirisa zvirongwa zvevatengi.
Kuunganidza mafaira uchishandisa Group Policy
Chinhu chiri nyore ndechekuti kana mutengi apinda munhoroondo yake, iye, nekodzero dzake, anoita imwe .bat faira, inoti:
echo off
If exist %APPDATA%RadiantViewerpacs.xml copy %APPDATA%RadiantViewerpacs.xml srv.test.localpconfigs$pacs-%COMPUTERNAME%-%USERNAME%.xml
Saka, mafaera epacs.xml achaungana pane sevha mune yakavanzika sosi, zita rine ruzivo kubva kune komputa uye kubva kune mushandisi iyo config yakakopwa.
Chinhu chakanyanya kuoma kwaive kumirira kusvika mutemo uyu washanda kune vese vashandisi.
Kuchinja zvigadziriso uchishandisa Perl script
Tichada
Iyo script pachayo yakave yakapusa:
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);
}
}
}
Nheyo yekushanda kwayo:
- Isu tinovhura dhairekitori umo takaunganidza pacs.xml zvigadziriso kubva kune vatengi uye toisa runyoro rwemafaira mumhando ye scalar (@report_files);
- Mune loop, tinogadzira faira imwe panguva uye toiverenga mutsara nemutsara;
- Tichishandisa kupatsanurwa, tinotsemura mutsara wega wega muzvikamu zvishanu, tichishandisa makotesheni semupatsanuri;
- Isu tinowana mutsara une izwi mutereri uye isa data rakasiyana kune yega faira (AE mutengi zita uye TCP port nhamba) mune maviri akasiyana;
- Mushure meizvi, isu tinongogadzira faira idzva reXML, pinda yakasarudzika ma paramita mairi uye wobva waisa iyo inodiwa nhamba yemaseva ePACS nemaparamita avo - avo. zvazvatangira)
- Isu tinonyora zvakare iyo itsva XML faira pamusoro peiyo yekare.
Izvo zvinofanirwa kucherechedzwa kuti muchokwadi, ini handishandise iyi script zvachose otomatiki - kutaura zvazviri, ini ndinokopa yakaunganidzwa configs mune yakaparadzana dhairekitori uye ipapo ndomhanyisa script uye ndoshandura iwo ese akawanda. Tevere, cheki isina kujairika - uye ma configs anogona kugoverwa kudzokera kumashini.
Kugovera mafaira akagadziridzwa pacs.xml kuvatengi
Chinhu chakareruka chakauya mumusoro ndechekuita shanduko kune yakatoshanda .bat faira inounganidza zvigadziriso kubva kune vatengi uye kuwedzera mutsara:
If exist %APPDATA%RadiantViewerpacs.xml copy /Y srv.test.localpconfigsnew$pacs-%COMPUTERNAME%-%USERNAME%.xml %APPDATA%RadiantViewerpacs.xml
Iyo yekupedzisira .bat faira inoita seizvi:
@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
mhedziso
Zvakafanana neizvi"ibvi"mhinduro. Isu takatozviedza kaviri (munaGunyana 2018 naKukadzi 2019), kusvika zvino kubhururuka kwacho kwakajairika. Ehe, kwete 100% yevatengi inovandudza, asi iri padyo neichi kukosha - isu tinopedzisa zvimwe kure. Script by
Source: www.habr.com