Ho fetola litlhophiso tsa lenaneo ha u ntse u boloka liparamente tsa hau

prehistory

Mokhatlo o mong oa bongaka o sebelisitse litharollo tse ipapisitseng le li-server tsa Orthanc PACS le moreki oa Radiant DICOM. Nakong ea ho seta, re fumane hore moreki e mong le e mong oa DICOM o tlameha ho hlalosoa ho li-server tsa PACS ka tsela e latelang:

  • Lebitso la moreki
  • Lebitso la AE (le tlameha ho ikhetha)
  • Boema-kepe ba TCP bo bulang ka bo bona ka lehlakoreng la bareki mme bo amohela liphuputso tsa DICOM ho tsoa ho seva sa PACS (ke hore, seva se li sutumelletsa ho moreki - ho qala khokahano pele)
  • Aterese ea IP

Kamora ho theha Radiant, bareki ba ile ba fumana lijo tse latelang bakeng sa mohopolo: bakeng sa moreki e mong le e mong, ho theha software ka mekhahlelo e kaholimo ho ile ha fella ka hore faele e tlatsoe. pacs.xml, e neng e le profaeleng ea mosebelisi (tsela: %APPDATA%RadiantViewerpacs.xml). Ka nako e ts'oanang, tlhophiso ea moreki a le mong e ne e fapane le e 'ngoe bonyane ka mekhahlelo e' meli (lebitso la AE le fapane ho motho e mong le e mong, 'me boema-kepe bo ts'oana, ntle le bareki ba terminal ba sebetsang ho seva se le seng - moo likou le tsona li neng li e-na le eona. ho abeloa ka tsela e fapaneng).

Mohlala pacs.xml faele ka kgokahanyo:

Ka likhoeli tse ka bang tse tšeletseng ntho e 'ngoe le e' ngoe e ne e le hantle, tsamaiso e ile ea qala ho sebetsa ... 'me ea tla ho rona "ka tlasa metsi majoe"

  • Re hloka ho kenya tšebetsong li-server tse 'maloa tse ncha tsa PACS tse tla nkela tsa khale sebaka (moo sebaka sa disk se qalileng ho fela). Li-server tsa PACS ka mechini ea sebele, empa ha se seo re buang ka sona;
  • Re hloka ka tsela e itseng ho fetola litlhophiso tse ikhethang (ka mekhahlelo e 'meli e fapaneng) ho mechini e 200 (palo ea bona e ne e ntse e eketseha khafetsa);
  • Ha ho nahanoa ka sekhahla sa kholo ea lipalo tsa lipatlisiso, tharollo ha e hlokehe hanngoe feela, empa e phetoa le khafetsa (mohlala, hang ka mor'a likhoeli tse 1-3).

Tharollo e ka tlase.

Ho khetha lisebelisoa ho rarolla bothata

Qalong, ho bile le liteko tsa ho fumana tharollo e ka fetolang faele ea pacs.xml lehlakoreng la bareki le ho etsa liphetoho lethathamong la li-server tsa PACS ntle le ho ama lebitso la AE le litlhophiso tsa boema-kepe ba TCP. Basebelisi ba Windows ka nako eo ba ne ba ipapisitse le Windows XP le Windows 7 - kahoo ho bile le liteko tsa ho ngola ntho e kang ena ho latela VBScript. Empa bomalimabe, ho ne ho ke ke ha khoneha ho tseba mosebetsi o joalo, ka lebaka la ho hloka tsebo e feletseng ea ho ngola ntho leha e le efe e rarahaneng le e pharaletseng ka puo ena. Boiteko ba ho fumana le ho ngola hape ha boa ka ba atleha (ho lokela ho hlokomeloa hore ke ne ke se ke ntse ke e-na le moralo o fapaneng hloohong ea ka, kahoo ha kea ka ka ferekana le VBScript ka lihora tse fetang 3-4).

Qetellong ke ile ka rarolla bothata bo latelang:

  • U sebelisa leano la sehlopha, bokella lifaele tsohle tsa pacs.xml sebakeng se le seng ho seva sefe kapa sefe mohloling oa marang-rang;
  • Fetola lifaele ka bongata (ke ne ke se ke ntse ke e-na le phihlelo ea ho rarolla mathata a joalo ka Perl);
  • Hape sebelisa melaoana ea sehlopha ho ntlafatsa litlhophiso tsa bareki.

Ho bokella lifaele ho sebelisa Group Policy

Karolo e bonolo ka ho fetisisa ke hore ha moreki a kena profilaneng ea hae, eena, ka litokelo tsa hae, o sebelisa faele e itseng ea .bat, e reng:

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

Ka hona, lifaele tsa pacs.xml li tla ipokellela ho seva mohloling o patiloeng, oo lebitso la oona le nang le tlhahisoleseding e tsoang ho komporong efe le hore na tlhophiso ena e kopitsoe ho tsoa ho mang.

Ntho e thata ka ho fetisisa e ne e le ho ema ho fihlela pholisi ena e sebetsa ho basebelisi bohle.

Ho fetola litlhophiso ho sebelisa mongolo oa Perl

Re tla hloka Perl e sebetsang bakeng sa Windows ho tsoa ho ActiveState, hammoho le XML::Mojule oa Mongoli, o ka kengoang ho sebelisoa taelo. ppm kenya XML-Writer.

Script ka boeona e bile bonolo haholo:

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

Molao-motheo oa ts'ebetso ea eona:

  • Re bula bukana eo ho eona re bokeletseng litlhophiso tsa pacs.xml ho tsoa ho bareki ebe re beha lenane la lifaele ka bongata ba li-scalar (@report_files);
  • Ka loop, re sebetsana le faele e le 'ngoe ka nako' me re e bala mola ka mola;
  • Re sebelisa ho arohana, re arola mola o mong le o mong ka likarolo tse 5, re sebelisa mantsoe a qotsitsoeng e le karohano;
  • Re fumana mohala o nang le lentsoe le mametseng 'me re beha data e ikhethang bakeng sa faele ka' ngoe (lebitso la AE la bareki le nomoro ea port ea TCP) ka mefuta e 'meli;
  • Kamora sena, re theha faele e ncha ea XML, kenya liparamente tse ikhethileng ho eona ebe o kenya palo e hlokahalang ea li-server tsa PACS le liparamente tsa tsona - tseo. hore na e qalile eng)
  • Re ngola hape faele e ncha ea XML holim'a ea khale.

Hoa lokela ho hlokomeloa hore ha e le hantle, ha ke sebelise mongolo ona ka ho feletseng - ha e le hantle, ke kopitsa li-configs tse bokelitsoeng bukeng e fapaneng ebe ke tsamaisa script ebe ke e fetola kaofela ka bongata. Ka mor'a moo, cheke e sa reroang - 'me li-configs li ka khutlisetsoa mochining.

Ho aba lifaele tsa pacs.xml tse fetotsoeng ho bareki

Ntho e bonolo ka ho fetisisa e ileng ea fihla kelellong e ne e le ho etsa liphetoho ho faele ea .bat e seng e ntse e sebetsa e bokellang litlhophiso ho tsoa ho bareki le ho eketsa mohala:

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

Faele ea ho qetela ea .bat e shebahala tjena:

@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

fihlela qeto e

Ho joalo ka sena"lengole"tharollo. Re se re e lekile habeli (ka Loetse 2018 le Hlakola 2019), ho fihlela joale sefofane se tloaelehile. Ehlile, ha se 100% ea bareki ba ntlafatsang, empa e haufi le boleng bona - re tlatsa tse ling re le hole. Script ka kgokahanyo.

Source: www.habr.com

Eketsa ka tlhaloso