prehistory
Fikambanana ara-pitsaboana iray no nametraka vahaolana mifototra amin'ny mpizara Orthanc PACS sy mpanjifa Radiant DICOM. Nandritra ny fanamboarana dia hitanay fa ny mpanjifa DICOM tsirairay dia tsy maintsy faritana amin'ny mpizara PACS toy izao manaraka izao:
- Anaran'ny mpanjifa
- Anarana AE (tsy maintsy miavaka)
- Seranan-tseranana TCP izay misokatra ho azy amin'ny lafiny mpanjifa ary mandray ny fanadihadiana DICOM avy amin'ny mpizara PACS (izany hoe, ny mpizara dia manosika azy ireo mankany amin'ny mpanjifa - manomboka ny fifandraisana aloha)
- Adiresy IP
Taorian'ny nananganana an'i Radiant, dia nahazo ireto sakafo manaraka ireto ho eritreretina ny mpanjifa: ho an'ny mpanjifa tsirairay, ny fametrahana ny rindrambaiko miaraka amin'ireo mari-pamantarana etsy ambony dia nahatonga ny rakitra feno. pacs.xml, izay hita ao amin'ny mombamomba ny mpampiasa (lalana: %APPDATA%RadiantViewerpacs.xml). Mandritra izany fotoana izany, ny config an'ny mpanjifa iray dia tsy mitovy amin'ny iray hafa amin'ny paramètre roa farafahakeliny (ny anaran'ny AE dia hafa ho an'ny rehetra, ary ny seranan-tsambo dia mitovy amin'ny ankapobeny, afa-tsy ho an'ny mpanjifa terminal mandeha amin'ny server iray ihany - misy koa ny seranana. ho samy hafa).
Ohatra fisie pacs.xml amin'ny
Nandritra ny enim-bolana teo ho eo dia nilamina ny zava-drehetra, nanomboka niasa ny rafitra... ary tonga taminay izany βanaty rano ny vato"
- Mila mampiasa lohamilina PACS vaovao maromaro isika izay hisolo ny taloha (izay manomboka lany ny habaka kapila). Mpizara PACS amin'ny milina virtoaly, saingy tsy izany no resahinay;
- Ilaintsika ny manova ny rafitra tsy manam-paharoa (miaraka amin'ny mari-pamantarana roa samihafa) amin'ny milina 200 (nitombo tsy tapaka ny isan'izy ireo);
- Raha jerena ny tahan'ny fitomboan'ny volan'ny fanadihadiana dia ilaina ny vahaolana tsy indray mandeha, fa averina indray ary tsy tapaka (ohatra, indray mandeha isaky ny 1-3 volana).
Misafidiana fitaovana hamahana olana
Tamin'ny voalohany, nisy ny fikasana hitady vahaolana mety hanovana ny rakitra pacs.xml eo amin'ny lafiny mpanjifa ary hanova ny lisitry ny mpizara PACS tsy misy fiantraikany amin'ny anarana AE sy ny fikandrana port TCP. Ny mpanjifa Windows tamin'izany fotoana izany dia samy nifototra tamin'ny Windows XP sy Windows 7 - noho izany dia nisy ny fikasana hanoratra zavatra toy izany mifototra amin'ny VBScript. Saingy indrisy, tsy azo atao ny mifehy ny asa toy izany, noho ny tsy fahampian'ny traikefa amin'ny fanoratana zavatra sarotra sy feno amin'ity fiteny ity. Tsy nahomby ihany koa ny fiezahana hitady sy hanoratra (marihina fa efa nanana drafitra hafa tao an-dohako aho, ka tsy nibitsibitsika tamin'ny VBScript nandritra ny 3-4 ora mahery).
Tamin'ny farany dia nanorim-ponenana tamin'ny vahaolana manaraka aho:
- Amin'ny fampiasana ny politikan'ny vondrona, manangona ny rakitra pacs.xml rehetra amin'ny toerana iray amin'ny lohamilina amin'ny loharanon-tambajotra;
- Ovay ny rakitra en masse (efa nanana traikefa aho tamin'ny famahana olana toy izany tamin'ny fampiasana Perl);
- Ampiasao koa ny politikan'ny vondrona hanavaozana ny firafitry ny mpanjifa.
Manangona rakitra mampiasa Group Policy
Ny ampahany tsotra indrindra dia ny hoe rehefa miditra ao amin'ny mombamomba azy ny mpanjifa iray dia manatanteraka rakitra .bat iray izy miaraka amin'ny zony, izay milaza hoe:
echo off
If exist %APPDATA%RadiantViewerpacs.xml copy %APPDATA%RadiantViewerpacs.xml srv.test.localpconfigs$pacs-%COMPUTERNAME%-%USERNAME%.xml
Noho izany, ny rakitra pacs.xml dia hiangona ao amin'ny lohamilina amin'ny loharano miafina, ny anarany dia misy fampahalalana avy amin'ny solosaina sy avy amin'ny mpampiasa nandika an'io config io.
Ny zavatra sarotra indrindra dia ny niandry mandra-pahombiazan'ity politika ity ho an'ny mpampiasa rehetra.
Manova ny configurations mampiasa script Perl
Mila izany isika
Ny script mihitsy dia nivadika ho tsotra be:
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);
}
}
}
Ny fitsipiky ny asa:
- Sokafy ny lahatahiry izay nanangonay ny configs pacs.xml avy amin'ny mpanjifa ary mametraka ny lisitry ny rakitra ao anaty scalars maromaro (@report_files);
- Amin'ny tadio iray dia manodina rakitra iray isaky ny mandeha isika ary mamaky azy an-tsipika;
- Amin'ny fampiasana fizarazarana, nozarainay ny andalana tsirairay ho fizarana 5, amin'ny fampiasana teny nalaina ho toy ny fisarahana;
- Mahita tsipika misy ny teny mpihaino izahay ary mametraka angon-drakitra manokana ho an'ny rakitra tsirairay (anaran'ny mpanjifa AE sy nomeraon'ny seranan-tsambo TCP) ho fari-pahalalana roa;
- Aorian'izany dia mamorona rakitra XML vaovao fotsiny izahay, ampidiro ao anatin'izany ny paramètre tsy manam-paharoa ary ampidiro ny isan'ny mpizara PACS ilaina miaraka amin'ny masontsivana azy - ireo. inona no nanombohan'izany rehetra izany)
- Averinay soratanay eo ambonin'ilay taloha ilay rakitra XML vaovao.
Marihina fa raha ny marina dia tsy mampiasa ho azy tanteraka ity script ity aho - raha ny marina, dia mandika ireo config voaangona ao anaty lahatahiry misaraka aho ary avy eo dia mihazakazaka ny script ary manova azy rehetra. Manaraka, fisavana kisendrasendra - ary azo zaraina amin'ny milina ny config.
Mizara ny rakitra pacs.xml novaina amin'ny mpanjifa
Ny zavatra tsotra indrindra tonga tao an-tsaina dia ny fanovana ny rakitra .bat efa miasa izay manangona ny fanamafisana avy amin'ny mpanjifa ary manampy ny tsipika:
If exist %APPDATA%RadiantViewerpacs.xml copy /Y srv.test.localpconfigsnew$pacs-%COMPUTERNAME%-%USERNAME%.xml %APPDATA%RadiantViewerpacs.xml
Toy izao ny rakitra .bat farany:
@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
famaranana
Toy izao izany"lohalika"vahaolana. Efa indroa izahay no nanandrana izany (taminβny septambra 2018 sy febroary 2019), hatreto dia ara-dalΓ na ny sidina. Mazava ho azy fa tsy 100% amin'ny mpanjifa no manavao, fa manakaiky an'io sanda io - mamita ny ambiny lavitra izahay. Script nataon'i
Source: www.habr.com