Socruithe cláir a athrú agus paraiméadair phearsanta á sábháil

réamhstair

Chuir eagraíocht leighis amháin réitigh i bhfeidhm bunaithe ar fhreastalaithe Orthanc PACS agus cliant Radiant DICOM. Le linn an tsocraithe, fuaireamar amach nach mór cur síos a dhéanamh ar gach cliant DICOM i bhfreastalaithe PACS mar seo a leanas:

  • Ainm an chliaint
  • Ainm AE (caithfidh sé a bheith uathúil)
  • Port TCP a osclaíonn go huathoibríoch ar thaobh an chliaint agus a fhaigheann suirbhéanna DICOM ón bhfreastalaí PACS (i.e., cuireann an freastalaí brú orthu i dtreo an chliaint - an nasc a thionscnamh ar dtús)
  • Seoladh IP

Tar éis Radiant a bhunú, fuair na cliaint an méid seo a leanas le haghaidh machnaimh: do gach cliant, nuair a bhunaigh na bogearraí leis na paraiméadair thuas líonadh an comhad pacaí.xml, a bhí lonnaithe sa phróifíl úsáideora (conair: %APPDATA% RadiantViewerpacs.xml). Ag an am céanna, bhí config cliant amháin difriúil ó cheann eile i dhá pharaiméadar ar a laghad (tá an t-ainm AE difriúil do gach duine, agus tá an calafort go bunúsach mar an gcéanna, ach amháin i gcás cliaint críochfoirt ag rith ar an bhfreastalaí céanna - bhí na calafoirt freisin a shannadh éagsúla).

Comhad pacs.xml sampla ag nasc:

Ar feadh sé mhí bhí gach rud go breá, thosaigh an córas ag obair... agus ansin tháinig sé chugainn “faoi ​​uisce clocha»:

  • Ní mór dúinn roinnt freastalaithe PACS nua a chur i bhfeidhm a chuirfear in ionad na sean-cinn (áit a bhfuil spás diosca tosaithe ag rith amach). Freastalaithe PACS i meaisíní fíorúla, ach ní hé sin a bhfuilimid ag caint faoi;
  • Caithfimid cumraíochtaí uathúla a athrú go lárnach ar bhealach éigin (le dhá pharaiméadair dhifriúla) ar 200 meaisín (bhí a líon ag méadú go rialta);
  • Ag cur san áireamh an ráta fáis ar líon na suirbhéanna, tá gá le réiteach ní hamháin uair amháin, ach a mhacasamhlú agus go rialta (mar shampla, uair amháin gach 1-3 mhí).

Tá an réiteach thíos.

Uirlisí a roghnú chun fadhb a réiteach

Ar dtús, rinneadh iarrachtaí teacht ar réiteach éigin a mhodhnódh an comhad pacs.xml ar thaobh an chliaint agus athruithe a dhéanamh ar liosta na bhfreastalaithe PACS gan tionchar a imirt ar ainm AE agus ar shuíomhanna calafoirt TCP. Bhí cliaint Windows ag an am sin bunaithe ar Windows XP agus Windows 7 araon - mar sin bhí iarrachtaí ann rud éigin mar seo a scríobh bunaithe ar VBScript. Ach faraor, níorbh fhéidir tasc den sórt sin a mháistir, mar gheall ar an easpa iomlán taithí ar aon rud casta agus cuimsitheach a scríobh sa teanga seo. Níor éirigh le hiarrachtaí teacht ar agus athscríobh freisin (ba chóir a thabhairt faoi deara go raibh plean difriúil agam i mo cheann cheana féin, agus mar sin níor fidléir mé le VBScript ar feadh níos mó ná 3-4 uair an chloig).

Sa deireadh shocraigh mé ar an réiteach seo a leanas:

  • Ag baint úsáide as beartas grúpa, bailigh gach comhad pacs.xml in aon áit amháin ar aon fhreastalaí in acmhainn líonra;
  • Athraigh comhaid en masse (bhí taithí agam cheana féin ar fhadhbanna den sórt sin a réiteach ag baint úsáide as Perl);
  • Úsáid polasaithe grúpa freisin chun socruithe cliant a nuashonrú.

Comhaid a bhailiú ag úsáid Polasaí Grúpa

Is í an chuid is simplí ná nuair a logálann cliant isteach ina phróifíl, go ndéanann sé, lena chearta, comhad .bat áirithe a fhorghníomhú, a deir:

echo off
If exist %APPDATA%RadiantViewerpacs.xml copy %APPDATA%RadiantViewerpacs.xml srv.test.localpconfigs$pacs-%COMPUTERNAME%-%USERNAME%.xml

Mar sin, carnfaidh comhaid pacs.xml ar an bhfreastalaí in acmhainn fholaithe, a bhfuil faisnéis ina hainm ón ríomhaire agus ón úsáideoir a cóipeáil an cumraíocht seo.

Ba é an rud is deacra ná fanacht go dtí go n-oibreodh an polasaí seo do gach úsáideoir.

Cumraíochtaí a athrú ag baint úsáide as script Perl

Beidh gá againn leis Perl Gníomhach le haghaidh Windows ó ActiveState, chomh maith leis an modúl XML ::Writer, is féidir a shuiteáil ag baint úsáide as an ordú ppm suiteáil XML-Writer.

Bhí an script féin simplí go leor:

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);				
			}
	}
 
}

Prionsabal a oibríochta:

  • Osclaímid an t-eolaire ina bhfuil cumraíochtaí pacs.xml bailithe againn ó chliaint agus cuirimid liosta na gcomhad i raon scálaí (@report_files);
  • I lúb, déanaimid próiseáil ar chomhad amháin ag an am agus é a léamh líne ar líne;
  • Ag baint úsáide as scoilt, scoilt muid gach líne i 5 chuid, ag baint úsáide as Sleachta mar dheighilteoir;
  • Faighimid líne leis an éisteoir focal agus cuirimid sonraí uathúla do gach comhad (ainm cliaint AE agus uimhir phoirt TCP) ina dhá athróg;
  • Tar éis seo, ní dhéanaimid ach comhad XML nua a ghiniúint, paraiméadair uathúla a chur isteach ann agus ansin an líon riachtanach freastalaithe PACS a chur isteach lena paraiméadair - siúd. cad a thosaigh sé ar fad le haghaidh)
  • Athscríobhaimid an comhad XML nua ar bharr an tseancheann.

Ba chóir a thabhairt faoi deara go deimhin, ní úsáidim an script seo go hiomlán go huathoibríoch - go deimhin, cóipeáilim na cumraíochtaí bailithe isteach i eolaire ar leith agus ansin ritheann an script agus athraigh iad go léir en masse. Ansin, seiceáil randamach - agus is féidir na configs a dháileadh ar ais chuig na meaisíní.

Comhaid pacs.xml modhnaithe a dháileadh ar chliaint

Ba é an rud is simplí a tháinig chun cuimhne ná athruithe a dhéanamh ar an gcomhad .bat atá ag obair cheana féin a bhailíonn cumraíochtaí ó chliaint agus a chuireann an líne leis:

If exist %APPDATA%RadiantViewerpacs.xml copy /Y srv.test.localpconfigsnew$pacs-%COMPUTERNAME%-%USERNAME%.xml %APPDATA%RadiantViewerpacs.xml

Breathnaíonn an comhad .bat deiridh mar seo:

@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

Conclúid

Tá sé mar seo "glúin" réiteach. Tá iarracht déanta againn faoi dhó cheana féin (i mí Mheán Fómhair 2018 agus i mí Feabhra 2019), go dtí seo tá an eitilt gnáth. Ar ndóigh, ní nuashonraíonn 100% de na cliaint, ach tá sé gar don luach seo - déanaimid an chuid eile a chomhlánú go cianda. Script ag nasc.

Foinse: will.com

Add a comment