αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαžŽαŸˆαž–αŸαž›αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“

αžŸαž˜αŸαž™αž”αž»αžšαŸαž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαžΆαžŸαŸ’αžαŸ’αžš

αž’αž„αŸ’αž‚αž€αžΆαžšαžœαŸαž‡αŸ’αž‡αžŸαžΆαžŸαŸ’αžšαŸ’αžαž˜αž½αž™αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ Orthanc PACS αž“αž·αž„αž’αžαž·αžαž·αž‡αž“ Radiant DICOM αŸ” αž€αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ†αž‘αžΎαž„ αž™αžΎαž„αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžαžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ DICOM αž“αžΈαž˜αž½αž™αŸ—αžαŸ’αžšαžΌαžœαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ PACS αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

  • αžˆαŸ’αž˜αŸ„αŸ‡αž’αžαž·αžαž·αž‡αž“
  • αžˆαŸ’αž˜αŸ„αŸ‡ AE (αžαŸ’αžšαžΌαžœαžαŸ‚αž˜αžΆαž“αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹)
  • αž…αŸ’αžšαž€ TCP αžŠαŸ‚αž›αž”αžΎαž€αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸ…αž•αŸ’αž“αŸ‚αž€αž’αžαž·αžαž·αž‡αž“ αž“αž·αž„αž‘αž‘αž½αž›αž€αžΆαžšαžŸαŸ’αž‘αž„αŸ‹αž˜αžαž· DICOM αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ PACS (ឧ. αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžšαž»αž‰αž–αž½αž€αžœαžΆαž‘αŸ…αžšαž€αž’αžαž·αžαž·αž‡αž“ - αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž»αž“)
  • αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ Radiant αž’αžαž·αžαž·αž‡αž“αž”αžΆαž“αž‘αž‘αž½αž›αž’αžΆαž αžΆαžšαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‚αž·αžαŸ– αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžαž·αžαž·αž‡αž“αž“αžΈαž˜αž½αž™αŸ— αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžαžΆαž„αž›αžΎ αž“αžΆαŸ†αž±αŸ’αž™αž―αž€αžŸαžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž–αŸαž‰αŸ” pacs.xmlαžŠαŸ‚αž›αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ (αž•αŸ’αž›αžΌαžœαŸ– %APPDATA%RadiantViewerpacs.xml) αž€αŸ’αž“αž»αž„αž–αŸαž›αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαž“αŸαŸ‡ αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαž˜αž½αž™αžαž»αžŸαž‚αŸ’αž“αžΆαž–αžΈαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αž–αžΈαžš (αžˆαŸ’αž˜αŸ„αŸ‡ AE αž‚αžΊαžαž»αžŸαž‚αŸ’αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αž“αž»αžŸαŸ’αžŸαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αž“αžΆ αž αžΎαž™αž…αŸ’αžšαž€αž‚αžΊαžŠαžΌαž…αž‚αŸ’αž“αžΆαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž›αžΎαž€αž›αŸ‚αž„αžαŸ‚αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαžŸαŸ’αžαžΆαž“αžΈαž™αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαžΌαž…αž‚αŸ’αž“αžΆ - αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡ αž…αŸ’αžšαž€αž€αŸαž˜αžΆαž“αž•αž„αžŠαŸ‚αžš αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαžαŸ‹αžαžΆαŸ†αž„αžαž»αžŸαž‚αŸ’αž“αžΆ) αŸ”

αž§αž‘αžΆαž αžšαžŽαŸαž―αž€αžŸαžΆαžš pacs.xml αžŠαŸ„αž™ αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹:

αž’αžŸαŸ‹αžšαž™αŸˆαž–αŸαž›αž”αŸ’αžšαž αŸ‚αž›αž”αŸ’αžšαžΆαŸ†αž˜αž½αž™αžαŸ‚ αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αžΊαž›αŸ’αž’ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš ... αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžœαžΆαž”αžΆαž“αž˜αž€αžŠαž›αŸ‹αž–αž½αž€αž™αžΎαž„ "αž€αŸ’αžšαŸ„αž˜αž‘αžΉαž€αŸ” αžαŸ’αž˜Β»:

  • αž™αžΎαž„αžαŸ’αžšαžΌαžœαžŠαžΆαž€αŸ‹αž±αŸ’αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ PACS αžαŸ’αž˜αžΈαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž“αžΉαž„αž‡αŸ†αž“αž½αžŸαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž…αžΆαžŸαŸ‹ (αž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž‘αŸ†αž αŸ†αžαžΆαžŸαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž’αžŸαŸ‹)αŸ” αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ PACS αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αž αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ„αŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αž€αŸ†αž–αž»αž„αž“αž·αž™αžΆαž™αž“αŸ„αŸ‡αž‘αŸαŸ”
  • αž™αžΎαž„αžαŸ’αžšαžΌαžœαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹ (αž‡αžΆαž˜αž½αž™αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž–αžΈαžšαž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆ) αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“ 200 (αž…αŸ†αž“αž½αž“αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΎαž“αž‘αžΎαž„αž‡αžΆαž‘αŸ€αž„αž‘αžΆαžαŸ‹);
  • αžŠαŸ„αž™αž‚αž·αžαž–αžΈαž’αžαŸ’αžšαžΆαž€αŸ†αžŽαžΎαž“αž“αŸƒαž”αžšαž·αž˜αžΆαžŽαžŸαŸ’αž‘αž„αŸ‹αž˜αžαž· αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž˜αž½αž™αž‚αžΊαžαŸ’αžšαžΌαžœαž€αžΆαžšαž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž˜αŸ’αžαž„αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αžšαžΌαžœαž…αž˜αŸ’αž›αž„ αž“αž·αž„αž‘αŸ€αž„αž‘αžΆαžαŸ‹ (αž§αž‘αžΆαž αžšαžŽαŸ αž˜αŸ’αžαž„αžšαŸ€αž„αžšαžΆαž›αŸ‹ 1-3 αžαŸ‚)αŸ”

αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž˜αžΆαž“αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ”

αž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž§αž”αž€αžšαžŽαŸαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆ

αžŠαŸ†αž”αžΌαž„αž‘αžΎαž™ αž˜αžΆαž“αž€αžΆαžšαž–αŸ’αž™αžΆαž™αžΆαž˜αžŸαŸ’αžœαŸ‚αž„αžšαž€αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αž“αžΉαž„αž€αŸ‚αž”αŸ’αžšαŸ‚αž―αž€αžŸαžΆαžš pacs.xml αž“αŸ…αž•αŸ’αž“αŸ‚αž€αž’αžαž·αžαž·αž‡αž“ αž“αž·αž„αž’αŸ’αžœαžΎαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αž‰αŸ’αž‡αžΈαž“αŸƒαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ PACS αžŠαŸ„αž™αž˜αž·αž“αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αžˆαŸ’αž˜αŸ„αŸ‡ AE αž“αž·αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž…αŸ’αžšαž€ TCP αŸ” αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαžœαžΈαž“αžŠαžΌαž“αŸ…αž–αŸαž›αž“αŸ„αŸ‡αž˜αžΆαž“αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž›αžΎαž‘αžΆαŸ†αž„ Windows XP αž“αž·αž„ Windows 7 αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž˜αžΆαž“αž€αžΆαžšαž–αŸ’αž™αžΆαž™αžΆαž˜αžŸαžšαžŸαŸαžšαž’αŸ’αžœαžΈαž˜αž½αž™αžŠαžΌαž…αž“αŸαŸ‡αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎ VBScript αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚ alas, αžœαžΆαž˜αž·αž“αž’αžΆαž…αž‘αŸ…αžšαž½αž…αž‘αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž‡αžΆαž˜αŸ’αž…αžΆαžŸαŸ‹αž“αŸƒαž€αž·αž…αŸ’αž…αž€αžΆαžšαž”αŸ‚αž”αž“αŸαŸ‡αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αžαŸ’αžœαŸ‡αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž–αŸαž‰αž›αŸαž‰αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαž’αŸ’αžœαžΈαžŠαŸ‚αž›αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αž·αž„αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαžŸαžΆαž“αŸαŸ‡αŸ” αž€αžΆαžšαž–αŸ’αž™αžΆαž™αžΆαž˜αžŸαŸ’αžœαŸ‚αž„αžšαž€ αž“αž·αž„αžŸαžšαžŸαŸαžšαž‘αžΎαž„αžœαž·αž‰αž€αŸαž˜αž·αž“αž‡αŸ„αž‚αž‡αŸαž™αžŠαŸ‚αžš (αž‚αž½αžšαž€αžαŸ‹αžŸαŸ†αž‚αžΆαž›αŸ‹αžαžΆ αžαŸ’αž‰αž»αŸ†αž˜αžΆαž“αž‚αž˜αŸ’αžšαŸ„αž„αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αž”αžΆαž›αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αžšαž½αž…αž αžΎαž™ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž”αžΆαž“αžšαžœαž›αŸ‹αž‡αžΆαž˜αž½αž™ VBScript αž›αžΎαžŸαž–αžΈ 3-4 αž˜αŸ‰αŸ„αž„)αŸ”

αž“αŸ…αž‘αžΈαž”αž‰αŸ’αž…αž”αŸ‹αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž›αžΎαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸˆ

  • αžŠαŸ„αž™αž”αŸ’αžšαžΎαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž€αŸ’αžšαž»αž˜ αž”αŸ’αžšαž˜αžΌαž›αž―αž€αžŸαžΆαžš 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

αž™αžΎαž„αž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžš Perl αžŸαž€αž˜αŸ’αž˜ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Windows αž–αžΈ ActiveState αž€αŸαžŠαžΌαž…αž‡αžΆ XML::Writer module αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ ppm αžŠαŸ†αž‘αžΎαž„ XML-Writer.

αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžαŸ’αž›αž½αž“αžœαžΆαž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆαžŸαžΆαž˜αž‰αŸ’αž‰αžŽαžΆαžŸαŸ‹αŸ–

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 αž•αŸ’αž“αŸ‚αž€ αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαž„αŸ‹αž‡αžΆαžŸαž‰αŸ’αž‰αžΆαž”αŸ†αž”αŸ‚αž€αŸ”
  • αž™αžΎαž„αžšαž€αžƒαžΎαž‰αž”αž“αŸ’αž‘αžΆαžαŸ‹αž‡αžΆαž˜αž½αž™αž–αžΆαž€αŸ’αž™ listener αž“αž·αž„αžŠαžΆαž€αŸ‹αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž―αž€αžŸαžΆαžšαž“αžΈαž˜αž½αž™αŸ— (αžˆαŸ’αž˜αŸ„αŸ‡αž’αžαž·αžαž·αž‡αž“ AE αž“αž·αž„αž›αŸαžαž…αŸ’αžšαž€ TCP) αž‘αŸ…αž‡αžΆαž’αžαŸαžšαž–αžΈαžšαŸ”
  • αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸαŸ‡ αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžš XML αžαŸ’αž˜αžΈ αž”αž‰αŸ’αž…αžΌαž›αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αž‘αŸ…αž€αŸ’αž“αž»αž„αžœαžΆ αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αž‰αŸ’αž…αžΌαž›αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž“αŸƒαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ PACS αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ - αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžœαžΆαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹)
  • αž™αžΎαž„αžŸαžšαžŸαŸαžšαž―αž€αžŸαžΆαžš 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% αž“αŸƒαž’αžαž·αžαž·αž‡αž“αž’αžΆαž”αŸ‹αžŠαŸαžαž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž‡αž·αžαž“αžΉαž„αžαž˜αŸ’αž›αŸƒαž“αŸαŸ‡ - αž™αžΎαž„αž”αŸ†αž–αŸαž‰αž“αŸ…αžŸαž›αŸ‹αž–αžΈαž…αž˜αŸ’αž„αžΆαž™αŸ” αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαŸ„αž™ αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹.

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹