prehistory
Bungwe lina lachipatala lidakhazikitsa mayankho kutengera ma seva a Orthanc PACS ndi kasitomala wa Radiant DICOM. Pakukhazikitsa, tidapeza kuti kasitomala aliyense wa DICOM ayenera kufotokozedwa mu ma seva a PACS motere:
- Dzina la kasitomala
- Dzina la AE (liyenera kukhala lapadera)
- Doko la TCP lomwe limangotseguka pambali ya kasitomala ndikulandila kafukufuku wa DICOM kuchokera pa seva ya PACS (mwachitsanzo, seva imakankhira kwa kasitomala - kuyambitsa kulumikizana koyamba)
- Adilesi ya IP
Pambuyo kukhazikitsa Radiant, makasitomala adalandira chakudya chotsatirachi: kwa kasitomala aliyense, kukhazikitsa pulogalamuyo ndi magawo omwe ali pamwambawa kumapangitsa kuti fayiloyo idzaze. pacs.xml, yomwe inali mu mbiri ya ogwiritsa ntchito (njira: %APPDATA%RadiantViewerpacs.xml). Nthawi yomweyo, kasinthidwe ka kasitomala m'modzi amasiyana ndi wina m'magawo awiri (dzina la AE ndi losiyana kwa aliyense, ndipo doko ndilofanana, kupatula makasitomala omwe akuyenda pa seva yomweyo - pamenepo madoko nawonso anali nawo. kupatsidwa zosiyana).
Chitsanzo pacs.xml wapamwamba ndi
Pafupifupi miyezi isanu ndi umodzi zonse zinali bwino, dongosololi linayamba kugwira ntchito ...pansi pa madzi miyalaΒ»:
- Tiyenera kukhazikitsa maseva angapo atsopano a PACS omwe adzalowe m'malo akale (pomwe malo a disk ayamba kutha). Ma seva a PACS mu makina enieni, koma sizomwe tikukamba;
- Tiyenera mwanjira ina kusintha masinthidwe apadera (ndi magawo awiri osiyana) pamakina 200 (chiwerengero chawo chikuwonjezeka nthawi zonse);
- Poganizira kuchuluka kwa kuchuluka kwa kafukufukuyu, yankho limafunikira osati kamodzi kokha, koma kubwerezabwereza komanso pafupipafupi (mwachitsanzo, kamodzi pa miyezi 1-3).
Kusankha zida zothetsera vuto
Poyamba, panali kuyesa kupeza yankho lomwe lingasinthe fayilo ya pacs.xml kumbali ya kasitomala ndikusintha mndandanda wa maseva a PACS popanda kukhudza dzina la AE ndi zoikamo za doko la TCP. Makasitomala a Windows panthawiyo anali okhazikika pa Windows XP ndi Windows 7 - kotero panali kuyesa kulemba chonga ichi kutengera VBScript. Koma tsoka, sikunali kotheka kudziwa bwino ntchito yotereyi, chifukwa chosowa chidziwitso cholemba chilichonse chovuta komanso chovuta m'chinenerochi. Kuyesera kuti ndipeze ndi kulembanso sikunapambane (ziyenera kuzindikirika kuti ndinali ndi dongosolo losiyana m'mutu mwanga, kotero sindinagwirizane ndi VBScript kwa maola oposa 3-4).
Pamapeto pake ndinakhazikika pa yankho ili:
- Pogwiritsa ntchito mfundo zamagulu, sonkhanitsani mafayilo onse a pacs.xml pamalo amodzi pa seva iliyonse pamanetiweki;
- Sinthani mafayilo ambiri (ndinali ndi chidziwitso kale pakuthana ndi mavutowa pogwiritsa ntchito Perl);
- Gwiritsaninso ntchito mfundo zamagulu kuti musinthe makonda a kasitomala.
Kusonkhanitsa mafayilo pogwiritsa ntchito Group Policy
Chosavuta kwambiri ndi chakuti kasitomala akalowa mu mbiri yake, iye, ndi ufulu wake, amatulutsa fayilo inayake ya .bat, yomwe imati:
echo off
If exist %APPDATA%RadiantViewerpacs.xml copy %APPDATA%RadiantViewerpacs.xml srv.test.localpconfigs$pacs-%COMPUTERNAME%-%USERNAME%.xml
Chifukwa chake, mafayilo a pacs.xml adziunjikira pa seva muzinthu zobisika, dzina lomwe lili ndi chidziwitso kuchokera pakompyuta komanso kwa yemwe adakopera kasinthidwe kameneka.
Chinthu chovuta kwambiri chinali kudikirira mpaka ndondomekoyi igwire ntchito kwa onse ogwiritsa ntchito.
Kusintha masinthidwe pogwiritsa ntchito Perl script
Tidzafunika
Script yokha idakhala yosavuta:
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);
}
}
}
Mfundo ya ntchito yake:
- Timatsegula chikwatu momwe tasonkhanitsira zosintha za pacs.xml kuchokera kwa makasitomala ndikuyika mndandanda wamafayilo mumagulu a scalar (@report_files);
- Mu lupu, timakonza fayilo imodzi panthawi ndikuwerenga mzere ndi mzere;
- Pogwiritsa ntchito kugawanika, timagawa mzere uliwonse kukhala magawo 5, pogwiritsa ntchito mawu ngati olekanitsa;
- Timapeza mzere wokhala ndi mawu omvera ndikuyika deta yapadera pa fayilo iliyonse (dzina la kasitomala wa AE ndi nambala ya doko la TCP) mumitundu iwiri;
- Pambuyo pake, timangopanga fayilo yatsopano ya XML, kulowetsamo magawo apadera ndikuyika nambala yofunikira ya ma seva a PACS ndi magawo awo - izo. zomwe zidayambira)
- Timalembanso fayilo yatsopano ya XML pamwamba pa yakaleyo.
Zindikirani kuti kwenikweni, sindimagwiritsa ntchito script izi zokha - kwenikweni, ndimakopera ma configs omwe anasonkhanitsidwa mu bukhu lapadera ndikuyendetsa script ndikusintha zonse. Kenako, cheke mwachisawawa - ndi ma configs akhoza kugawidwa m'makina.
Kugawa mafayilo osinthidwa a pacs.xml kwa makasitomala
Chinthu chosavuta chomwe chinabwera m'maganizo chinali kusintha fayilo ya .bat yomwe ikugwira ntchito kale yomwe imasonkhanitsa zosintha kuchokera kwa makasitomala ndikuwonjezera mzere:
If exist %APPDATA%RadiantViewerpacs.xml copy /Y srv.test.localpconfigsnew$pacs-%COMPUTERNAME%-%USERNAME%.xml %APPDATA%RadiantViewerpacs.xml
Fayilo yomaliza ya .bat ikuwoneka motere:
@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
Pomaliza
Zili ngati izi"bondo"yankho. Tayesera kale kawiri (mu Seputembala 2018 ndi February 2019), mpaka pano ndegeyo ndiyabwinobwino. Zachidziwikire, osati 100% yamakasitomala osintha, koma ili pafupi ndi mtengo uwu - timamaliza zina zonse patali. Script ndi
Source: www.habr.com