Ag atharrachadh roghainnean prògram fhad ‘s a tha thu a’ sàbhaladh paramadairean pearsanta

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 cheangal:

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).

Tha am fuasgladh gu h-ìosal.

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 Perl gnìomhach airson Windows bho ActiveState, a bharrachd air modal XML ::Writer, a ghabhas a chuir a-steach leis an àithne ppm stàlaich XML-Writer.

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 cheangal.

Source: www.habr.com

Cuir beachd ann