๊ฐœ์ธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ๋™์•ˆ ํ”„๋กœ๊ทธ๋žจ ์„ค์ • ๋ณ€๊ฒฝ

์„ ์‚ฌ ์‹œ๋Œ€

ํ•œ ์˜๋ฃŒ ๊ธฐ๊ด€์€ Orthanc PACS ์„œ๋ฒ„์™€ Radiant DICOM ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์†”๋ฃจ์…˜์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ค์ • ๊ณผ์ •์—์„œ ๊ฐ DICOM ํด๋ผ์ด์–ธํŠธ๋Š” PACS ์„œ๋ฒ„์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค๋ช…๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๊ณ ๊ฐ ์ด๋ฆ„
  • AE ์ด๋ฆ„(๊ณ ์œ ํ•ด์•ผ ํ•จ)
  • ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์ž๋™์œผ๋กœ ์—ด๋ฆฌ๊ณ  PACS ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ DICOM ์„ค๋ฌธ์กฐ์‚ฌ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” TCP ํฌํŠธ(์ฆ‰, ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์ชฝ์œผ๋กœ ์ด๋ฅผ ํ‘ธ์‹œํ•˜์—ฌ ์—ฐ๊ฒฐ์„ ๋จผ์ € ์‹œ์ž‘ํ•จ)
  • IP ์ฃผ์†Œ

Radiant๋ฅผ ์„ค์ •ํ•œ ํ›„ ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•ด ์œ„์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์„ค์ •ํ•˜๋ฉด ํŒŒ์ผ์ด ์ฑ„์›Œ์กŒ์Šต๋‹ˆ๋‹ค. pacs.xml, ์‚ฌ์šฉ์ž ํ”„๋กœํ•„(๊ฒฝ๋กœ: %APPDATA%RadiantViewerpacs.xml). ๋™์‹œ์— ํ•œ ํด๋ผ์ด์–ธํŠธ์˜ ๊ตฌ์„ฑ์€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์—์„œ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ์™€ ๋‹ฌ๋ž์Šต๋‹ˆ๋‹ค(AE ์ด๋ฆ„์€ ๋ชจ๋“  ์‚ฌ๋žŒ๋งˆ๋‹ค ๋‹ค๋ฅด๋ฉฐ ํฌํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ๋™์ผํ•œ ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๋Š” ํ„ฐ๋ฏธ๋„ ํด๋ผ์ด์–ธํŠธ๋Š” ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ํฌํŠธ์—๋„ ๋‹ค๋ฅด๊ฒŒ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค).

pacs.xml ํŒŒ์ผ ์˜ˆ: ๋งํฌ:

์•ฝ XNUMX๊ฐœ์›” ๋™์•ˆ ๋ชจ๋“  ๊ฒƒ์ด ๊ดœ์ฐฎ์•˜๊ณ  ์‹œ์Šคํ…œ์ด ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค... ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ์šฐ๋ฆฌ์—๊ฒŒ ์™”์Šต๋‹ˆ๋‹ค.์ˆ˜์ค‘ ๋Œยป:

  • ์šฐ๋ฆฌ๋Š” ์ด์ „ ์„œ๋ฒ„(๋””์Šคํฌ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•ด์ง€๊ธฐ ์‹œ์ž‘ํ•œ ์„œ๋ฒ„)๋ฅผ ๋Œ€์ฒดํ•  ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด PACS ์„œ๋ฒ„๋ฅผ ๊ฐ€๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ ๋จธ์‹ ์˜ PACS ์„œ๋ฒ„. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ๋งํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๊ฒŒ ์•„๋‹™๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ๋“  200๊ฐœ ๋จธ์‹ ์˜ ๊ณ ์œ ํ•œ ๊ตฌ์„ฑ(๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋งค๊ฐœ๋ณ€์ˆ˜ ์‚ฌ์šฉ)์„ ์ค‘์•™์—์„œ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ทธ ์ˆ˜๋Š” ์ •๊ธฐ์ ์œผ๋กœ ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค).
  • ์„ค๋ฌธ์กฐ์‚ฌ๋Ÿ‰์˜ ์ฆ๊ฐ€์œจ์„ ๊ณ ๋ คํ•˜๋ฉด ์ผํšŒ์„ฑ ์†”๋ฃจ์…˜์ด ์•„๋‹Œ ์ •๊ธฐ์ ์œผ๋กœ(์˜ˆ: 1~3๊ฐœ์›”์— ํ•œ ๋ฒˆ) ๋ฐ˜๋ณต์ ์œผ๋กœ ์†”๋ฃจ์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ ์„ ํƒ

์ฒ˜์Œ์—๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ pacs.xml ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ  AE ์ด๋ฆ„๊ณผ TCP ํฌํŠธ ์„ค์ •์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  PACS ์„œ๋ฒ„ ๋ชฉ๋ก์„ ๋ณ€๊ฒฝํ•˜๋Š” ์†”๋ฃจ์…˜์„ ์ฐพ์œผ๋ ค๋Š” ์‹œ๋„๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹œ Windows ํด๋ผ์ด์–ธํŠธ๋Š” Windows XP์™€ Windows 7์„ ๋ชจ๋‘ ๊ธฐ๋ฐ˜์œผ๋กœ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— VBScript๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด์™€ ๊ฐ™์€ ๊ฒƒ์„ ์ž‘์„ฑํ•˜๋ ค๋Š” ์‹œ๋„๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„์‰ฝ๊ฒŒ๋„ ์ด ์–ธ์–ด๋กœ ๋ณต์žกํ•˜๊ณ  ํฌ๊ด„์ ์ธ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝํ—˜์ด ์ „ํ˜€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿฌํ•œ ์ž‘์—…์„ ๋งˆ์Šคํ„ฐํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฐพ์•„์„œ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋ ค๋Š” ์‹œ๋„๋„ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. (๋‚ด ๋จธ๋ฆฟ์†์—๋Š” ์ด๋ฏธ ๋‹ค๋ฅธ ๊ณ„ํš์ด ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— 3-4์‹œ๊ฐ„ ์ด์ƒ VBScript๋ฅผ ์กฐ์ž‘ํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

๊ฒฐ๊ตญ ๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•ด๊ฒฐ์ฑ…์„ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๊ทธ๋ฃน ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  pacs.xml ํŒŒ์ผ์„ ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค์˜ ๋ชจ๋“  ์„œ๋ฒ„์— ์žˆ๋Š” ํ•œ ์œ„์น˜์— ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.
  • ํŒŒ์ผ์„ ํ•œ๊บผ๋ฒˆ์— ๋ณ€๊ฒฝํ•˜์„ธ์š”(์ €๋Š” ์ด๋ฏธ Perl์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ๊ฒฝํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค).
  • ๋˜ํ•œ ๊ทธ๋ฃน ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ์„ค์ •์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฃน ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ ์ˆ˜์ง‘

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ถ€๋ถ„์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž์‹ ์˜ ํ”„๋กœํ•„์— ๋กœ๊ทธ์ธํ•  ๋•Œ ์ž์‹ ์˜ ๊ถŒํ•œ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ • .bat ํŒŒ์ผ์„ ์‹คํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

๋”ฐ๋ผ์„œ pacs.xml ํŒŒ์ผ์€ ์„œ๋ฒ„์˜ ์ˆจ๊ฒจ์ง„ ๋ฆฌ์†Œ์Šค์— ์ถ•์ ๋˜๋ฉฐ, ์ด๋ฆ„์—๋Š” ์ด ๊ตฌ์„ฑ์ด ๋ณต์‚ฌ๋œ ์ปดํ“จํ„ฐ์™€ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์–ด๋ ค์šด ์ ์€ ์ด ์ •์ฑ…์ด ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ์šฉ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

Perl ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑ ๋ณ€๊ฒฝ

์šฐ๋ฆฌ๋Š” ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค ์•กํ‹ฐ๋ธŒ ํŽ„ ActiveState์˜ Windows์šฉ XML::Writer ๋ชจ๋“ˆ์€ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ppm ์„ค์น˜ XML-์ž‘์„ฑ๊ธฐ.

์Šคํฌ๋ฆฝํŠธ ์ž์ฒด๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.

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

์ž‘๋™ ์›๋ฆฌ:

  • ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ pacs.xml ๊ตฌ์„ฑ์„ ์ˆ˜์ง‘ํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์—ด๊ณ  ํŒŒ์ผ ๋ชฉ๋ก์„ ์Šค์นผ๋ผ ๋ฐฐ์—ด(@report_files)์— ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฃจํ”„์—์„œ๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ํ•œ ์ค„์”ฉ ์ฝ์Šต๋‹ˆ๋‹ค.
  • ๋ถ„ํ• ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋”ฐ์˜ดํ‘œ๋ฅผ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์ค„์„ 5๊ฐœ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.
  • ๋ฆฌ์Šค๋„ˆ๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋œ ํ–‰์„ ์ฐพ์•„ ๊ฐ ํŒŒ์ผ์— ๊ณ ์œ ํ•œ ๋ฐ์ดํ„ฐ(AE ํด๋ผ์ด์–ธํŠธ ์ด๋ฆ„ ๋ฐ TCP ํฌํŠธ ๋ฒˆํ˜ธ)๋ฅผ ๋‘ ๊ฐœ์˜ ๋ณ€์ˆ˜์— ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ƒˆ XML ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ๊ณ ์œ ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅํ•œ ๋‹ค์Œ ํ•ด๋‹น ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ํ•„์š”ํ•œ ์ˆ˜์˜ PACS ์„œ๋ฒ„๋ฅผ ์‚ฝ์ž…ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ €๊ฒƒ๋“ค. ์ด ๋ชจ๋“  ๊ฑด ๋ฌด์—‡ ๋•Œ๋ฌธ์— ์‹œ์ž‘๋๋‚˜)
  • ์ด์ „ XML ํŒŒ์ผ ์œ„์— ์ƒˆ XML ํŒŒ์ผ์„ ๋‹ค์‹œ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์‹ค ์ €๋Š” ์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์™„์ „ํžˆ ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ˆ˜์ง‘๋œ ๊ตฌ์„ฑ์„ ๋ณ„๋„์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋ณต์‚ฌํ•œ ๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ผ๊ด„์ ์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ ๋ฌด์ž‘์œ„ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ตฌ์„ฑ์„ ๋จธ์‹ ์— ๋‹ค์‹œ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜์ •๋œ pacs.xml ํŒŒ์ผ์„ ํด๋ผ์ด์–ธํŠธ์— ๋ฐฐํฌ

๋งˆ์Œ์— ๋– ์˜ค๋ฅธ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๊ฒƒ์€ ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ตฌ์„ฑ์„ ์ˆ˜์ง‘ํ•˜๋Š” ์ด๋ฏธ ์ž‘๋™ ์ค‘์ธ .bat ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ๋‹ค์Œ ์ค„์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

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

์ตœ์ข… .bat ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@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

๊ฒฐ๋ก 

์ด๋ ‡๋‹คโ€๋ฌด๋ฆŽ" ํ•ด๊ฒฐ์ฑ…. ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ๋‘ ๋ฒˆ(2018๋…„ 2019์›”๊ณผ 100๋…„ XNUMX์›”) ์‹œ๋„ํ–ˆ์œผ๋ฉฐ ์ง€๊ธˆ๊นŒ์ง€ ๋น„ํ–‰์€ ์ •์ƒ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํด๋ผ์ด์–ธํŠธ์˜ XNUMX% ์—…๋ฐ์ดํŠธ๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ด ๊ฐ’์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€๋Š” ์›๊ฒฉ์œผ๋กœ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ์ž ๋งํฌ.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€