Kuchinja zvirongwa zvepurogiramu uchichengetedza maparameter emunhu

prehistory

Rimwe sangano rekurapa rakaisa zvigadziriso zvakavakirwa paOrthanc PACS maseva uye Radiant DICOM mutengi. Panguva yekuseta, takaona kuti mutengi wega wega DICOM anofanirwa kutsanangurwa mumaseva ePACS sezvinotevera:

  • Zita remutengi
  • AE zita (rinofanira kunge rakasiyana)
  • Chiteshi cheTCP chinovhura otomatiki padivi remutengi uye chinogamuchira DICOM ongororo kubva kuPACS server (kureva, sevha inovasundira kumutengi - kutanga kubatana)
  • IP kero

Mushure mekugadzirisa Radiant, vatengi vakagamuchira chikafu chinotevera chekufunga: kune mutengi wega wega, kumisikidza software neiyo pamusoro apa paramita yakakonzera kuti faira rizadzwe. pacs.xml, iyo yaive muchimiro chemushandisi (nzira: %APPDATA%RadiantViewerpacs.xml) Panguva imwecheteyo, dhizaini yemumwe mutengi yaisiyana kubva kune imwe mune angangoita maviri paramita (zita reAE rakasiyana kune wese munhu, uye chiteshi chakangofanana, kunze kwevatengi vekupedzisira vanomhanya pane imwechete sevha - ipapo madoko aivewo. kugoverwa zvakasiyana).

Muenzaniso pacs.xml file by batanidzo:

Kweinenge mwedzi mitanhatu zvese zvaive zvakanaka, sisitimu yakatanga kushanda ... uye yakauya kwatiri "pasi pemvura mabweΒ»:

  • Isu tinofanirwa kuisa mukushanda akati wandei ePACS maseva anozotsiva ekare (apo disk nzvimbo yatanga kupera). PACS maseva mumashini chaiwo, asi handizvo zvatiri kutaura nezvazvo;
  • Isu tinoda neimwe nzira yepakati kushandura akasiyana masisitimu (ane maviri akasiyana paramita) pamachina mazana maviri (nhamba yavo yaigara ichiwedzera);
  • Tichifunga nezvekukura kwemavhoriyamu eongororo, mhinduro inodiwa kwete kamwe chete, asi inodzokororwa uye nguva dzose (semuenzaniso, kamwe chete pamwedzi 1-3).

Mhinduro iri pasi apa.

Kusarudza maturusi ekugadzirisa dambudziko

Pakutanga, pakaedza kutsvaga mhinduro yaizogadzirisa pacs.xml faira kudivi remutengi uye kuita shanduko kurondedzero yemaseva ePACS pasina kukanganisa zita reAE uye TCP marongero echiteshi. Vatengi veWindows panguva iyoyo vaive vakavakirwa paWindows XP neWindows 7 - saka pakaedza kunyora chimwe chinhu chakadai kubva paVBScript. Asi nhamo, zvakanga zvisingabviri kugona basa rakadaro, nokuda kwekushaya ruzivo rwakakwana mukunyora chero chinhu chakaoma uye chakazara mumutauro uyu. Kuedza kutsvaga nekunyora zvakare hakuna kubudirira (inofanira kuonekwa kuti ndakanga ndatova nehurongwa hwakasiyana mumusoro mangu, saka handina kuita fiddle neVBScript kwemaawa anopfuura 3-4).

Pakupedzisira ndakagadzika pane inotevera mhinduro:

  • Uchishandisa gwara reboka, unganidza mafaera ese epacs.xml munzvimbo imwechete pane chero sevha mune network resource;
  • Shandura mafaira en masse (ndanga ndatove neruzivo mukugadzirisa matambudziko akadaro ndichishandisa Perl);
  • Uyewo shandisa mitemo yeboka kugadzirisa zvirongwa zvevatengi.

Kuunganidza mafaira uchishandisa Group Policy

Chinhu chiri nyore ndechekuti kana mutengi apinda munhoroondo yake, iye, nekodzero dzake, anoita imwe .bat faira, inoti:

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

Saka, mafaera epacs.xml achaungana pane sevha mune yakavanzika sosi, zita rine ruzivo kubva kune komputa uye kubva kune mushandisi iyo config yakakopwa.

Chinhu chakanyanya kuoma kwaive kumirira kusvika mutemo uyu washanda kune vese vashandisi.

Kuchinja zvigadziriso uchishandisa Perl script

Tichada Active Perl yeWindows kubva kuActiveState, pamwe neXML ::Munyori module, inogona kuiswa uchishandisa murairo. ppm isa XML-Munyori.

Iyo script pachayo yakave yakapusa:

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

Nheyo yekushanda kwayo:

  • Isu tinovhura dhairekitori umo takaunganidza pacs.xml zvigadziriso kubva kune vatengi uye toisa runyoro rwemafaira mumhando ye scalar (@report_files);
  • Mune loop, tinogadzira faira imwe panguva uye toiverenga mutsara nemutsara;
  • Tichishandisa kupatsanurwa, tinotsemura mutsara wega wega muzvikamu zvishanu, tichishandisa makotesheni semupatsanuri;
  • Isu tinowana mutsara une izwi mutereri uye isa data rakasiyana kune yega faira (AE mutengi zita uye TCP port nhamba) mune maviri akasiyana;
  • Mushure meizvi, isu tinongogadzira faira idzva reXML, pinda yakasarudzika ma paramita mairi uye wobva waisa iyo inodiwa nhamba yemaseva ePACS nemaparamita avo - avo. zvazvatangira)
  • Isu tinonyora zvakare iyo itsva XML faira pamusoro peiyo yekare.

Izvo zvinofanirwa kucherechedzwa kuti muchokwadi, ini handishandise iyi script zvachose otomatiki - kutaura zvazviri, ini ndinokopa yakaunganidzwa configs mune yakaparadzana dhairekitori uye ipapo ndomhanyisa script uye ndoshandura iwo ese akawanda. Tevere, cheki isina kujairika - uye ma configs anogona kugoverwa kudzokera kumashini.

Kugovera mafaira akagadziridzwa pacs.xml kuvatengi

Chinhu chakareruka chakauya mumusoro ndechekuita shanduko kune yakatoshanda .bat faira inounganidza zvigadziriso kubva kune vatengi uye kuwedzera mutsara:

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

Iyo yekupedzisira .bat faira inoita seizvi:

@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

mhedziso

Zvakafanana neizvi"ibvi"mhinduro. Isu takatozviedza kaviri (munaGunyana 2018 naKukadzi 2019), kusvika zvino kubhururuka kwacho kwakajairika. Ehe, kwete 100% yevatengi inovandudza, asi iri padyo neichi kukosha - isu tinopedzisa zvimwe kure. Script by batanidzo.

Source: www.habr.com

Voeg