Hloov cov kev pab cuam nqis thaum txuag tus kheej tsis

prehistory

Ib lub koom haum kho mob tau siv cov kev daws teeb meem raws li Orthanc PACS servers thiab Radiant DICOM tus neeg siv khoom. Thaum lub sijhawm teeb tsa, peb pom tias txhua tus neeg siv DICOM yuav tsum tau piav qhia hauv PACS servers raws li hauv qab no:

  • Tus neeg siv khoom npe
  • AE lub npe (yuav tsum yog tus kheej)
  • TCP chaw nres nkoj uas cia li qhib rau ntawm tus neeg siv khoom thiab tau txais DICOM cov kev tshawb fawb los ntawm PACS server (piv txwv li, lub server thawb lawv mus rau tus neeg siv khoom - pib qhov kev sib txuas ua ntej)
  • IP chaw nyob

Tom qab teeb tsa Radiant, cov neeg siv khoom tau txais cov khoom noj hauv qab no rau kev xav: rau txhua tus neeg siv khoom, teeb tsa lub software nrog cov ntsuas saum toj no ua rau cov ntaub ntawv tau sau. pab xml, uas tau nyob hauv tus neeg siv profile (txoj kev: %APPDATA%RadiantViewerpacs.xml). Nyob rau tib lub sijhawm, kev teeb tsa ntawm ib tus neeg siv khoom sib txawv ntawm lwm qhov tsawg kawg yog ob qhov tsis sib xws (AE lub npe sib txawv rau txhua tus, thiab qhov chaw nres nkoj yog qhov zoo ib yam, tshwj tsis yog cov neeg siv davhlau ya nyob twg khiav ntawm tib lub server - muaj cov chaw nres nkoj kuj muaj. yuav tsum tau muab sib txawv).

Piv txwv pacs.xml cov ntaub ntawv los ntawm txuas:

Txog rau lub hlis txhua yam zoo, lub kaw lus pib ua haujlwm ... thiab tom qab ntawd nws tuaj rau peb "hauv qab dej lub pob zebΒ»:

  • Peb yuav tsum tau muab tso rau hauv ntau lub PACS servers tshiab uas yuav hloov cov qub (qhov chaw disk tau pib khiav tawm). PACS servers hauv tshuab virtual, tab sis qhov ntawd tsis yog qhov peb tab tom tham txog;
  • Peb yuav tsum tau hloov pauv cov kev teeb tsa tshwj xeeb (nrog ob qhov sib txawv) ntawm 200 lub tshuab (lawv tus lej tau nce tsis tu ncua);
  • Xav txog qhov kev loj hlob ntawm cov ntawv tshawb fawb, kev daws teeb meem tsis yog ib zaug xwb, tab sis rov ua dua thiab tsis tu ncua (piv txwv li, ib zaug txhua 1-3 lub hlis).

Txoj kev daws teeb meem yog hauv qab no.

Xaiv cov cuab yeej los daws qhov teeb meem

Thaum xub thawj, muaj kev sim nrhiav qee qhov kev daws teeb meem uas yuav hloov kho cov ntaub ntawv pacs.xml ntawm tus neeg siv khoom thiab hloov pauv cov npe ntawm PACS servers yam tsis cuam tshuam rau AE lub npe thiab TCP chaw nres nkoj. Cov neeg siv Windows lub sijhawm ntawd tau ua raws li Windows XP thiab Windows 7 - yog li muaj kev sim sau qee yam zoo li no raws li VBScript. Tab sis alas, nws tsis muaj peev xwm ua tau raws li txoj haujlwm no, vim tias tsis muaj kev paub dhau los hauv kev sau ntawv txhua yam nyuaj thiab nthuav dav hauv hom lus no. Kev sim nrhiav thiab sau dua tshiab kuj ua tsis tiav (nws yuav tsum tau muab sau tseg tias kuv twb muaj ib txoj kev npaj sib txawv hauv kuv lub taub hau, yog li kuv tsis fiddle nrog VBScript ntau dua 3-4 teev).

Thaum kawg kuv txiav txim siab rau cov kev daws teeb meem hauv qab no:

  • Siv pab pawg txoj cai, sau tag nrho cov ntaub ntawv pacs.xml nyob rau hauv ib qho chaw ntawm txhua tus neeg rau zaub mov hauv cov peev txheej network;
  • Hloov cov ntaub ntawv en masse (Kuv twb muaj kev paub txog kev daws teeb meem zoo li no siv Perl);
  • Kuj siv pab pawg cov cai los hloov kho cov neeg siv khoom.

Sau cov ntaub ntawv siv Pawg Txoj Cai

Qhov yooj yim tshaj plaws yog tias thaum tus neeg siv nkag mus rau hauv nws qhov profile, nws, nrog nws txoj cai, ua tiav cov ntaub ntawv .bat, uas hais tias:

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

Yog li, cov ntaub ntawv pacs.xml yuav sau rau ntawm lub server hauv qhov chaw zais, lub npe uas muaj cov ntaub ntawv los ntawm lub khoos phis tawj twg thiab los ntawm tus neeg siv qhov kev teeb tsa no tau theej.

Qhov nyuaj tshaj plaws yog tos kom txog thaum txoj cai no ua haujlwm rau txhua tus neeg siv.

Hloov cov kev teeb tsa siv Perl tsab ntawv

Peb yuav xav tau Active Perl rau Windows los ntawm ActiveState, nrog rau XML:: Cov ntawv sau ntawv, uas tuaj yeem ntsia tau siv cov lus txib ppm nruab XML-Writer.

Tsab ntawv nws tus kheej tau hloov mus ua qhov yooj yim heev:

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

Lub hauv paus ntsiab lus ntawm nws txoj haujlwm:

  • Peb qhib cov npe uas peb tau sau pacs.xml configurations los ntawm cov neeg siv khoom thiab tso cov npe ntawm cov ntaub ntawv nyob rau hauv ib qho array ntawm scalars (@report_files);
  • Hauv ib lub voj, peb ua cov ntaub ntawv ib zaug thiab nyeem nws kab los ntawm kab;
  • Siv cais, peb faib txhua kab rau hauv 5 qhov chaw, siv cov lus sib cais;
  • Peb pom ib kab nrog cov lus mloog thiab tso cov ntaub ntawv tshwj xeeb rau txhua cov ntaub ntawv (AE tus neeg siv lub npe thiab TCP tus lej chaw nres nkoj) rau hauv ob qhov sib txawv;
  • Tom qab no, peb tsuas yog tsim cov ntaub ntawv XML tshiab, nkag mus rau qhov tshwj xeeb rau hauv nws thiab tom qab ntawd ntxig tus lej xav tau ntawm PACS servers nrog lawv qhov tsis muaj - cov. dab tsi nws tag nrho pib rau)
  • Peb rov sau cov ntaub ntawv XML tshiab nyob rau saum lub qub.

Nws yuav tsum tau muab sau tseg tias qhov tseeb, kuv tsis siv tsab ntawv no kiag li - qhov tseeb, kuv luam cov sau configs rau hauv ib tug nyias muaj nyias ib directory thiab ces khiav tsab ntawv thiab hloov lawv tag nrho en masse. Tom ntej no, ib tug random check - thiab cov configs yuav muab faib rov qab mus rau lub tshuab.

Muab cov ntaub ntawv hloov pauv pacs.xml rau cov neeg siv khoom

Qhov yooj yim tshaj plaws uas tuaj rau hauv siab yog hloov pauv rau cov ntaub ntawv ua haujlwm .bat uas tau sau cov kev teeb tsa los ntawm cov neeg siv khoom thiab ntxiv cov kab:

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

Qhov kawg .bat cov ntaub ntawv zoo li no:

@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

xaus

Nws zoo li no "hauv caug"xov. Peb twb tau sim nws ob zaug (Lub Cuaj Hli 2018 thiab Lub Ob Hlis 2019), kom deb li deb lub davhlau yog qhov qub. Tau kawg, tsis yog 100% ntawm cov neeg siv khoom hloov tshiab, tab sis nws nyob ze rau tus nqi no - peb ua tiav qhov seem nyob deb. Script los ntawm txuas.

Tau qhov twg los: www.hab.com

Ntxiv ib saib