á á±á¬ááá¯áá»ážáá¬á
áá±ážáááºááá¯ááºáá¬á¡ááœá²á·á¡á ááºážáá áºáá¯ááẠOrthanc PACS áá¬áá¬áá»á¬ážááŸáá·áº Radiant DICOM áá±á¬ááºáááºáá»á¬ážá¡áá±á«áº á¡ááŒá±áá¶á ááŒá±ááŸááºážáá»ááºáá»á¬ážá¡á¬áž á¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·áááºá á áá áºááá·áºááœááºážá ááºá¡ááœááºážá DICOM áá±á¬ááºáááºáá áºáá¯á á®ááᯠPACS áá¬áá¬áá»á¬ážááœáẠá¡á±á¬ááºáá«á¡ááá¯ááºáž áá±á¬áºááŒááááºáᯠáá»áœááºá¯ááºááá¯á· ááœá±á·ááŸááá²á·áááº-
- ááá¯ááºážá¡áááº
- AE á¡ááẠ(áá°ážááŒá¬ážááááº)
- áá±á¬ááºáááºáááºá០á¡ááá¯á¡áá»á±á¬ááºááœáá·áºáá¬ááŒá®áž PACS áá¬áá¬á០DICOM á á áºáááºážáá»á¬ážááᯠáááºáá¶áááŸáááá·áº TCP á¡áá±á«ááºáá áºáᯠ(ááá¯ááá¯áááºááŸá¬á áá¬áá¬ááẠáááºážááá¯á·á¡á¬áž áááá¯ááºážááá·áºáá®ááá¯á· ááœááºážááá¯á·ááẠ- áá»áááºáááºááŸá¯ááᯠáŠážá áœá¬á áááºáááº)
- á¡áá¯ááºáá®-ááááºá á¬
Radiant ááᯠá áá áºááá·áºááœááºážááŒá®ážáá±á¬ááºá áá±á¬ááºáááºáá»á¬ážááẠááœá±ážáá±á«áºááŸá¯á¡ááœáẠá¡á±á¬ááºáá«á¡á á¬ážá¡á á¬ááᯠáááŸááá²á·áááº- áá¯á¶ážá áœá²áá°áá áºáŠážá á®á¡ááœááºá á¡áááºáá±á¬áºááŒáá«ááá·áºáááºáá»ááºáá»á¬ážááŒáá·áº áá±á¬á·ááºáá²ááºááᯠá áá áºááá·áºááœááºážááŒááºážááŒáá·áº ááá¯ááºááᯠááŒáá·áºáá±ážáá²á·áááºá pacs.xmlá¡áá¯á¶ážááŒá¯áá°áááá¯ááá¯ááºááœááºáááºááŸááá±á¬ (áááºážááŒá±á¬ááºáž- %APPDATA%RadiantViewerpacs.xml) áá áºáá»áááºáááºážááŸá¬áááºá client áá áºáá¯á config ááẠá¡áááºážáá¯á¶áž parameters ááŸá áºáá¯ááœáẠá¡ááŒá¬ážáá áºáá¯ááŸáá·áº ááœá²ááŒá¬ážááẠ(AE name ááẠáá°ááá¯ááºážá¡ááœáẠááœá²ááŒá¬ážáááºá port ááẠá¡ááŒá±áá¶á¡á¬ážááŒáá·áº áá°áá®áááºá áá°áá®áá±á¬ server áá±á«áºááœáẠrun áá±áá±á¬ terminal client áá»á¬ážááŸááœá²á port áá»á¬ážááẠá¡ááŒá±áá¶á¡á¬ážááŒáá·áº áá°áá®ááẠ- á¡á²áá®ááŸá¬ ports ááœá±áááºážáá«áá«áááºá ááœá²ááŒá¬ážá á±áááº)á
á¥ááᬠpacs.xml ááá¯ááº
ááŒá±á¬ááºááá±á¬ááºááŒá¬áá±á¬á· á¡á¬ážáá¯á¶ážá¡áááºááŒá±áááºá ââá áá áºáá ááŒá®áž á¡áá¯ááºáá¯ááºáááº... ááŒá®ážáá±á¬á· áá«ááá¯á·áá®áá±á¬ááºáá¬áááºááá±á¡á±á¬áẠáá»á±á¬ááºáá»á¬áž"
- áá»áœááºá¯ááºááá¯á·ááẠá¡áá±á¬ááºážáá»á¬ážááá¯á¡á á¬ážááá¯ážááá·áº PACS áá¬áá¬á¡áá áºáá»á¬ážá áœá¬ááᯠáááºáááºáá¯ááºáá±á¬ááºááẠááá¯á¡ááºááẠ(áá áºáá±áá¬ááœááºá ááŒá¯áá¬áááº)á virtual machines áá»á¬ážááŸá PACS áá¬áá¬áá»á¬ážá ááá¯á·áá±á¬áº áá»áœááºá¯ááºááá¯á·ááŒá±á¬áá±ááá·áºá¡áá¬ááá¯ááºáá«á
- á áẠ200 ááœáẠáá°ážááŒá¬ážáá±á¬ááœá²á·á ááºážáá¯á¶áá»á¬áž (ááá°áá®áá±á¬ ááá·áºáááºáá»ááºáá»á¬áž ááŸá áºáá¯ááŒáá·áº) ááᯠáá áºáááºážáááºážááŒáá·áº áááá¯ááŸááŒá±á¬ááºážáá²ááẠááá¯á¡ááºááẠ(áááºážááá¯á·áá¡áá±á¡ááœááºááẠáá¯á¶ááŸááºááá¯ážáá¬áááº)á
- á á áºáááºážááá¬ááá»á¬ážá ááá¯ážáááºááŸá¯ááŸá¯ááºážááᯠááá·áºááœááºážá ááºážá á¬ážááŒááºážááŒáá·áº á¡ááŒá±áá áºáá¯ááẠáá áºááŒáááºáá»áŸáá¬áá áááºáá°áá»áᬠáá¯á¶ááŸáẠ(á¥ááá¬á á-á ááá»áŸáẠáá áºááŒáááº) ááá¯á¡ááºáá«áááºá
ááŒá±ááŸááºážáá»ááºááŸá¬ á¡á±á¬ááºáá«á¡ááá¯ááºážááŒá
áºáááºá
ááŒá¿áá¬áá áºáá¯ááŒá±ááŸááºážááẠáááááá¬áá»á¬ážááœá±ážáá»ááºááŒááºážá
á¡á ááá¯ááºážááœááºá áááá¯ááºážááá·áºáááºá០pacs.xml ááá¯ááºááᯠááœááºážáá¶ááŒááºáááºáááºááŸáá·áº AE á¡áááºááŸáá·áº TCP áá±á«ááºáááºáááºáá»á¬ážááᯠáááááá¯ááºá á±áá² PACS áá¬áá¬áá»á¬ážá á¬áááºážááá¯á· á¡ááŒá±á¬ááºážá¡áá²áá¯ááºááá·áº ááŒá±ááŸááºážáá»ááºá¡áá»áá¯á·ááᯠááŸá¬ááœá±ááẠááŒáá¯ážáááºážááŸá¯áá»á¬áž ááŸááá²á·áááºá ááá¯á¡áá»áááºá Windows client áá»á¬ážááẠWindows XP ááŸáá·áº Windows 7 ááŸá áºáá»áá¯ážáá¯á¶ážááᯠá¡ááŒá±áá¶áá¬ážááẠ- ááá¯á·ááŒá±á¬áá·áº VBScript ááᯠá¡ááŒá±áá¶á á€áá²á·ááá¯á· áá±ážááẠááŒáá¯ážáááºážááŸá¯áá»á¬áž ááŸááá²á·áááºá ááŒá áºáá»ááºáá±á¬á·á áá®áá¬áá¬á áá¬ážááŸá¬ ááŸá¯ááºááœá±ážááŒá®áž ááŸá¯ááºááœá±ážáá²á· á¡áá¬ááœá±ááᯠáá±ážáá¬ážáá¬ááŸá¬ á¡ááœá±á·á¡ááŒá¯á¶ á¡ááŒáá·áºáááŸááá¬ááŒá±á¬áá·áº áá®ááá¯á¡áá¯ááºáá áºáá¯ááᯠáá»áœááºážáá»ááºááá¯ááºááá¯ááºá áœá¬ ááá±á¬ááºááœááºááá¯ááºáá²á·áá«áá°ážá ááŸá¬ááœá±ááŒá®áž ááŒááºáááºáá±ážáá¬ážááẠááŒáá¯ážáááºážááŸá¯áá»á¬ážáááºáž áá¡á±á¬ááºááŒááºáá²á·áá« (áá»áœááºá¯ááºááá±á«ááºážáá²ááœáẠááá°áá®áá±á¬á¡á á®á¡á ááºáá áºáá¯ááŸááá±ááŒá®ááŒá áºáá±á¬ááŒá±á¬áá·áº áá»áœááºá¯ááºááẠVBScript ááŸáá·áº á-á áá¬áá®áááºááá¯á áááŸá¯ááºáá²á·ááá·áºáá«)á
á¡áá¯á¶ážááœáẠáá»áœááºá¯ááºááẠá¡á±á¬ááºáá«á¡ááŒá±ááᯠáá¯á¶ážááŒááºáá²á·áááºá
- á¡ááœá²á·áá°áá«áááá¯á¡áá¯á¶ážááŒá¯á ááœááºáááºá¡áááºážá¡ááŒá áºááŸá áááºááá·áºáá¬áá¬ááœááºáááᯠpacs.xml ááá¯ááºá¡á¬ážáá¯á¶ážááᯠáá áºáá±áá¬áááºážááœáẠá á¯á ááºážáá«á
- ááá¯ááºáá»á¬ážááᯠá¡á á¯ááá¯ááºá¡ááŒá¯á¶ááá¯áẠááŒá±á¬ááºážáá²ááŒááºáž (Perl ááᯠá¡áá¯á¶ážááŒá¯á ááá¯áá²á·ááá¯á·áá±á¬ ááŒá¿áá¬áá»á¬ážááᯠááŒá±ááŸááºážáá¬ááœáẠá¡ááœá±á·á¡ááŒá¯á¶ááŸáááŒá®ážáá¬áž)á
- áááá¯ááºážááá·áºáááºáááºáá»á¬ážááᯠá¡ááºááááºáá¯ááºááẠá¡ááœá²á·áá°áá«ááá»á¬ážááá¯áááºáž á¡áá¯á¶ážááŒá¯áá«á
Group Policy ááᯠá¡áá¯á¶ážááŒá¯á ááá¯ááºáá»á¬áž á á¯áá±á¬ááºážááŒááºážá
á¡ááá¯ážááŸááºážáá¯á¶ážá¡áá»ááºááŸá¬ áá¯á¶ážá áœá²áá°ááẠáááºážááááá¯ááá¯ááºááᯠáá±á¬á·ááºá¡ááºáááºáá±á¬á¡áá«ááœááºá áá°ááẠáááºážááá¯ááºááá¯ááºááœáá·áºáá»á¬ážááŸáá·áºá¡áá° áááºááŸááºáá¬ážáá±á¬ .bat ááá¯ááºááᯠáá¯ááºáá±á¬ááºáááºáá°áááºááŸá¬-
echo off
If exist %APPDATA%RadiantViewerpacs.xml copy %APPDATA%RadiantViewerpacs.xml srv.test.localpconfigs$pacs-%COMPUTERNAME%-%USERNAME%.xml
ááá¯á·ááŒá±á¬áá·áºá pacs.xml ááá¯ááºáá»á¬ážááẠáááºááá·áºááœááºáá»á°áá¬á០á¡áá»ááºá¡áááºáá»á¬ážááŸáá·áº ဠconfig ááᯠáá°ážáá°áá¬ážááá·áº á¡áá¯á¶ážááŒá¯áá°áá¶á០á¡áá»ááºá¡áááºáá«ááŸáááá·áº áá»áŸáá¯á·ááŸááºá¡áááºážá¡ááŒá áºáá áºáá¯ááœáẠáá¬áá¬áá±á«áºááœáẠá á¯ááŒá¯á¶áá±áááºááŒá áºáááºá
á¡áááºáá²áá¯á¶ážááŸá¬ á€áá°áá«áááẠáá¯á¶ážá áœá²áá°á¡á¬ážáá¯á¶ážá¡ááœáẠá¡áá¯ááºááŒá áºáááºá¡áá á á±á¬áá·áºáááºááŒá áºáááºá
Perl script ááᯠá¡áá¯á¶ážááŒá¯á ááœá²á·á ááºážááŸá¯áá¯á¶á á¶áá»á¬ážááᯠááŒá±á¬ááºážáá²ááŒááºážá
áá»áá±á¬áºááá¯á·ááá¯á¡ááºáá«áááº
áá¬ááºááœáŸááºážááá¯ááºááá¯ááºá á¡áá±á¬áºáá±ážááá¯ážááŸááºážáá«áááº-
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);
}
}
}
áááºážááá¯ááºáá±á¬ááºááŸá¯áááá¬á
- áá»áœááºá¯ááºááá¯á·ááẠáá±á¬ááºáááºáá»á¬ážáá¶á០pacs.xml ááœá²á·á ááºážááŸá¯áá¯á¶á á¶áá»á¬ážááᯠá á¯áá±á¬ááºážáá¬ážáá±á¬ áááºážááœáŸááºááá¯ááœáá·áºááŒá®áž ááá¯ááºá á¬áááºážááᯠá áá±áá¬áá»á¬áž (@report_files);
- á ááºááá¯ááºážáá áºáá¯ááœááºá áá»áœááºá¯ááºááá¯á·ááẠáá áºááŒáááºáá»áŸáẠááá¯ááºáá áºáá¯ááᯠáá¯ááºáá±á¬ááºááŒá®áž áááºážááᯠááá¯ááºážáá áºáá¯ááŒá®ážáá áºáᯠáááºáá«á
- ááœá²ááŒááºážááᯠá¡áá¯á¶ážááŒá¯á áá»ááºážáá áºááŒá±á¬ááºážá á®ááᯠá¡ááá¯ááºáž á ááá¯ááºážááœá²áá¬á
- áá»áœááºá¯ááºááá¯á·ááẠá áá¬ážáá¯á¶ážáá¬ážáá±á¬ááºáá°ááŸáá·áº á á¬ááŒá±á¬ááºážáá áºááŒá±á¬ááºážááœá±á·ááŒá®áž ááá¯ááºáá áºáá¯á á®á¡ááœáẠáá®ážááŒá¬ážáá±áᬠ(AE client name ááŸáá·áº TCP port áá¶áá«ááº) ááᯠvariable ááŸá áºáá¯á¡ááŒá Ạáá¬ážááŸááá«á
- áááºážááŒá®ážáá±á¬ááºá áá»áœááºá¯ááºááá¯á·ááẠXML ááá¯ááºá¡áá áºáá áºáá¯ááᯠáááºáá®ážááŒá®ážá áááºážááœáẠáá®ážááá·áºáá±á¬ááºáá»á¬ážááᯠááá·áºááœááºážááŒá®ážáá±á¬áẠááá¯á¡ááºáá±á¬ PACS áá¬áá¬áá»á¬ážá á¡áá±á¡ááœááºááᯠáááºážááá¯á·á ááá·áºáááºáá»ááºáá»á¬ážááŒáá·áº ááá·áºááœááºážáá« - á¡á²áá«ááœá±á á¡á¬ážáá¯á¶ážá áá¬á¡ááœáẠá áááºáá²á·áá¬áá²á)
- áá»áœááºá¯ááºááá¯á·ááẠXML ááá¯ááºá¡áá±á¬ááºážáááááºááœáẠá¡áá áºááŒááºáá±ážáá«áááºá
á¡ááŸááºááŸá¬á áá»áœááºá¯ááºááẠဠscript ááᯠá¡ááá¯á¡áá»á±á¬áẠáá¯á¶ážáá¡áá¯á¶ážáááŒá¯ááŒá±á¬ááºáž áááááŒá¯ááá·áºááẠ- á¡ááŸááºááŸá¬á á á¯áá±á¬ááºážáá¬ážáá±á¬ configs áá»á¬ážááᯠáá®ážááŒá¬áž directory áá áºáá¯ááá¯á· áá°ážáá°ááŒá®áž script ááᯠrun ááŒá®áž áááºážááá¯á·á¡á¬ážáá¯á¶ážááᯠá¡á á¯ááá¯ááºá¡ááŒá¯á¶ááá¯áẠááŒá±á¬ááºážáá²áá«áááºá ááá¯á·áá±á¬ááºá áá»áááºážá á áºáá±ážááŒááºáž - ááŸáá·áº configs áá»á¬ážááá¯á ááºáá»á¬ážááá¯á·ááŒááºáááºááŒáá·áºáá±ááá¯ááºáááºá
ááœááºážáá¶áá¬ážáá±á¬ pacs.xml ááá¯ááºáá»á¬ážááᯠáá¯á¶ážá áœá²áá°áá»á¬ážáᶠááŒáá·áºáá±ááŒááºážá
á áááºáá²ááœáẠá¡ááá¯ážááŸááºážáá¯á¶ážá¡áá»ááºááŸá¬ áá±á¬ááºáááºáá»á¬ážáá¶á០configurations áá»á¬ážááᯠá á¯áá±á¬ááºážááŒá®áž ááá¯ááºážááá·áºááá·áº áá¯ááºáá±á¬ááºááŒá®ážáá¬áž .bat ááá¯ááºááᯠá¡ááŒá±á¬ááºážá¡áá²áá¯ááºáááºááŒá áºáááºá
If exist %APPDATA%RadiantViewerpacs.xml copy /Y srv.test.localpconfigsnew$pacs-%COMPUTERNAME%-%USERNAME%.xml %APPDATA%RadiantViewerpacs.xml
áá±á¬ááºáá¯á¶áž .bat ááá¯ááºááẠá€áá²á·ááá¯á·ááŒá áºáááº-
@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
áá±á¬ááºáá»ááº
áá®ááá¯áá«áá²"áá°áž"ááŒá±ááŸááºážáá»ááºá áá»áœááºá¯ááºááá¯á· áááºážááᯠááŸá
áºááŒááẠ(á
ááºáááºáᬠ2018 ááŸáá·áº 2019 áá¯ááŸá
Ạáá±áá±á¬áºáá«áá®á) ááœáẠá
ááºážááŒáá·áºáá²á·ááŒá®áž ááá¯á¡áá»áááºá¡áá áá»á¶áááºážááŸá¯ááŸá¬ áá¯á¶ááŸááºááŒá
áºáááºá áá¯ááºáá«áááºá áá±á¬ááºáááºáá»á¬ážá 100% á¡ááºááááºááá¯ááºáá«á ááá¯á·áá±á¬áº áááºážááẠá€áááºááá¯ážááŸáá·áº áá®ážá
ááºáá«ááẠ- áá»áœááºá¯ááºááá¯á·ááẠáá»ááºá¡áá¬á¡á¬ážáá¯á¶ážááᯠá¡áá±ážá០ááŒá®ážá¡á±á¬ááºáá¯ááºáá«áááºá áá¬ááºááœáŸááºáž
source: www.habr.com