ro-eachdraidheil
Chuir aon bhuidheann meidigeach an gnìomh fuasglaidhean stèidhichte air frithealaichean Orthanc PACS agus neach-dèiligidh Radiant DICOM. Rè an stèidheachadh, fhuair sinn a-mach gum feumar cunntas a thoirt air gach neach-dèiligidh DICOM ann an frithealaichean PACS mar a leanas:
- Ainm neach-dèiligidh
- Ainm AE (feumaidh e a bhith gun samhail)
- Port TCP a dh ’fhosglas gu fèin-ghluasadach air taobh an neach-dèiligidh agus a gheibh suirbhidhean DICOM bhon t-seirbheisiche PACS (ie, bidh am frithealaiche gan putadh a dh’ ionnsaigh an neach-dèiligidh - a ’tòiseachadh a’ cheangail an toiseach)
- Seòladh IP
Às deidh dhaibh Radiant a stèidheachadh, fhuair teachdaichean am biadh a leanas airson smaoineachadh: airson gach neach-dèiligidh, le bhith a’ stèidheachadh am bathar-bog leis na paramadairean gu h-àrd chaidh am faidhle a lìonadh pacs.xml, a bha suidhichte ann am pròifil an neach-cleachdaidh (slighe: %APPDATA% RadiantViewerpacs.xml). Aig an aon àm, bha rèiteachadh aon neach-dèiligidh eadar-dhealaichte bho neach eile ann an co-dhiù dà pharamadair (tha an t-ainm AE eadar-dhealaichte airson a h-uile duine, agus tha am port gu bunaiteach mar an ceudna, ach a-mhàin teachdaichean crìochnachaidh a bha a ’ruith air an aon fhrithealaiche - an sin bha na puirt cuideachd. a bhith air a shònrachadh eadar-dhealaichte).
Eisimpleir faidhle pacs.xml le
Airson timcheall air sia mìosan bha a h-uile dad gu math, thòisich an siostam ag obair ... agus an uairsin thàinig e thugainn “fon uisge clachan"
- Feumaidh sinn grunn frithealaichean PACS ùra a chuir an gnìomh a thèid an àite nan seann fheadhainn (far a bheil àite diosc air tòiseachadh a’ ruith a-mach). Frithealaichean PACS ann an innealan brìgheil, ach chan e sin a tha sinn a’ bruidhinn;
- Feumaidh sinn dòigh air choireigin atharrachadh sa mheadhan air rèiteachaidhean sònraichte (le dà pharamadair eadar-dhealaichte) air 200 inneal (bha an àireamh aca a’ dol am meud gu cunbhalach);
- A 'beachdachadh air ìre fàis meudan sgrùdaidh, tha feum air fuasgladh chan ann a-mhàin aon uair, ach air ath-aithris agus gu cunbhalach (mar eisimpleir, aon uair gach 1-3 mìosan).
Taghadh innealan gus fuasgladh fhaighinn air duilgheadas
An toiseach, chaidh oidhirpean a dhèanamh gus fuasgladh a lorg a dh'atharraicheadh am faidhle pacs.xml air taobh an neach-dèiligidh agus a dhèanadh atharrachaidhean air an liosta de luchd-frithealaidh PACS gun a bhith a 'toirt buaidh air ainm AE agus roghainnean port TCP. Bha luchd-dèiligidh Windows aig an àm sin stèidhichte air an dà chuid Windows XP agus Windows 7 - mar sin bha oidhirpean ann rudeigin mar seo a sgrìobhadh stèidhichte air VBScript. Ach gu mì-fhortanach, cha robh e comasach a leithid de ghnìomh a mhaighstir, air sgàth dìth eòlais ann a bhith a 'sgrìobhadh rud sam bith iom-fhillte agus iom-fhillte sa chànan seo. Cha do shoirbhich le oidhirpean lorg agus ath-sgrìobhadh cuideachd (bu chòir a thoirt fa-near gu robh plana eadar-dhealaichte agam nam cheann mu thràth, agus mar sin cha do rinn mi fìdhle le VBScript airson barrachd air 3-4 uairean).
Aig a 'cheann thall shocraich mi air an fhuasgladh a leanas:
- A 'cleachdadh poileasaidh buidhne, cruinnich a h-uile faidhle pacs.xml ann an aon àite air frithealaiche sam bith ann an goireas lìonra;
- Atharraich faidhlichean en masse (bha eòlas agam mu thràth air fuasgladh fhaighinn air na duilgheadasan sin le Perl);
- Cleachd poileasaidhean buidhne cuideachd gus roghainnean teachdaiche ùrachadh.
A’ cruinneachadh fhaidhlichean a’ cleachdadh Poileasaidh Buidhne
Is e am pàirt as sìmplidh nuair a chlàraicheas neach-dèiligidh a-steach don phròifil aige, bidh e, le a chòraichean, a’ cur an gnìomh faidhle .bat sònraichte, a tha ag ràdh:
echo off
If exist %APPDATA%RadiantViewerpacs.xml copy %APPDATA%RadiantViewerpacs.xml srv.test.localpconfigs$pacs-%COMPUTERNAME%-%USERNAME%.xml
Mar sin, cruinnichidh faidhlichean pacs.xml air an fhrithealaiche ann an goireas falaichte, anns a bheil fiosrachadh bhon choimpiutair agus bhon neach-cleachdaidh a chaidh an rèiteachadh seo a chopaigeadh.
B’ e an rud as duilghe feitheamh gus am biodh am poileasaidh seo ag obair don h-uile neach-cleachdaidh.
Ag atharrachadh rèiteachaidhean a’ cleachdadh sgriobt Perl
Bidh feum againn
Thionndaidh an sgriobt fhèin gu bhith gu math sìmplidh:
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);
}
}
}
Prionnsabal a h-obrachaidh:
- Bidh sinn a’ fosgladh an eòlaire anns an do chruinnich sinn rèiteachaidhean pacs.xml bho luchd-dèiligidh agus cuiridh sinn an liosta fhaidhlichean ann an sreath de sgalaran (@report_files);
- Ann an lùb, bidh sinn a’ pròiseasadh aon fhaidhle aig an aon àm agus ga leughadh a rèir loidhne;
- A 'cleachdadh sgoltadh, bidh sinn a' roinn gach loidhne gu 5 pàirtean, a 'cleachdadh luachan mar sgaradh;
- Lorgaidh sinn loidhne leis an fhacal neach-èisteachd agus cuiridh sinn dàta gun samhail airson gach faidhle (ainm teachdaiche AE agus àireamh port TCP) ann an dà chaochladair;
- Às deidh seo, bidh sinn dìreach a’ gineadh faidhle XML ùr, cuir a-steach crìochan sònraichte ann agus an uairsin cuir a-steach an àireamh riatanach de luchd-frithealaidh PACS leis na crìochan aca - iadsan. carson a thòisich e uile)
- Bidh sinn ag ath-sgrìobhadh am faidhle XML ùr a bharrachd air an t-seann fhear.
Bu chòir a thoirt fa-near, gu dearbh, nach bi mi a’ cleachdadh an sgriobt seo gu tur fèin-ghluasadach - gu dearbh, bidh mi a ’dèanamh lethbhreac de na configs cruinnichte gu eòlaire air leth agus an uairsin a’ ruith an sgriobt agus gan atharrachadh uile gu mòr. An uairsin, sgrùdadh air thuaiream - agus faodar na configs a sgaoileadh air ais gu na h-innealan.
A’ cuairteachadh fhaidhlichean pacs.xml atharraichte gu teachdaichean
B 'e an rud as sìmplidh a thàinig gu inntinn atharrachaidhean a dhèanamh air an fhaidhle .bat a bha ag obair mar-thà a bhios a' cruinneachadh rèiteachaidhean bho luchd-dèiligidh agus a 'cur ris an loidhne:
If exist %APPDATA%RadiantViewerpacs.xml copy /Y srv.test.localpconfigsnew$pacs-%COMPUTERNAME%-%USERNAME%.xml %APPDATA%RadiantViewerpacs.xml
Tha coltas mar seo air an fhaidhle .bat mu dheireadh:
@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
co-dhùnadh
Tha e mar seo"glùin" fuasgladh. Tha sinn mu thràth air feuchainn dà uair (san t-Sultain 2018 agus sa Ghearran 2019), gu ruige seo tha an itealan àbhaisteach. Gu dearbh, chan eil 100% de luchd-dèiligidh ag ùrachadh, ach tha e faisg air an luach seo - bidh sinn a 'crìochnachadh a' chòrr air astar. Sgriobt le
Source: www.habr.com