рд╡реИрдпрдХреНрддрд┐рдХ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдЬрддрди рдХрд░рддрд╛рдирд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдмрджрд▓рдгреЗ

prehistory

рдПрдХрд╛ рд╡реИрджреНрдпрдХреАрдп рд╕рдВрд╕реНрдереЗрдиреЗ Orthanc PACS рд╕рд░реНрд╡реНрд╣рд░ рдЖрдгрд┐ Radiant DICOM рдХреНрд▓рд╛рдпрдВрдЯрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЙрдкрд╛рдп рд▓рд╛рдЧреВ рдХреЗрд▓реЗ. рд╕реЗрдЯрдЕрдк рджрд░рдореНрдпрд╛рди, рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдврд│рд▓реЗ рдХреА рдкреНрд░рддреНрдпреЗрдХ DICOM рдХреНрд▓рд╛рдпрдВрдЯрдЪреЗ рд╡рд░реНрдгрди PACS рд╕рд░реНрд╡реНрд╣рд░рдордзреНрдпреЗ рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ:

  • рдХреНрд▓рд╛рдпрдВрдЯрдЪреЗ рдирд╛рд╡
  • AE рдирд╛рд╡ (рдЕрджреНрд╡рд┐рддреАрдп рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ)
  • рдПрдХ TCP рдкреЛрд░реНрдЯ рдЬреЛ рдХреНрд▓рд╛рдпрдВрдЯрдЪреНрдпрд╛ рдмрд╛рдЬреВрдиреЗ рдЖрдкреЛрдЖрдк рдЙрдШрдбрддреЛ рдЖрдгрд┐ PACS рд╕рд░реНрд╡реНрд╣рд░рдХрдбреВрди DICOM рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЛ (рдореНрд╣рдгрдЬреЗ, рд╕рд░реНрд╡реНрд╣рд░ рддреНрдпрд╛рдВрдирд╛ рдХреНрд▓рд╛рдпрдВрдЯрдХрдбреЗ рдврдХрд▓рддреЛ - рдкреНрд░рдердо рдХрдиреЗрдХреНрд╢рди рд╕реБрд░реВ рдХрд░рддреЛ)
  • рдЖрдпрдкреА рдкрддреНрддрд╛

рд░реЗрдбрд┐рдпрдВрдЯ рд╕реЗрдЯ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдХреНрд▓рд╛рдпрдВрдЯрд▓рд╛ рд╡рд┐рдЪрд╛рд░рд╛рд╕рд╛рдареА рдЦрд╛рд▓реАрд▓ рдЕрдиреНрди рдорд┐рд│рд╛рд▓реЗ: рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдпрдВрдЯрд╕рд╛рдареА, рд╡рд░реАрд▓ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рд╕рд╣ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рд╕реЗрдЯ рдХреЗрд▓реНрдпрд╛рдиреЗ рдлрд╛рдЗрд▓ рднрд░рд▓реА рдЧреЗрд▓реА. pacs.xml, рдЬреЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓рдордзреНрдпреЗ рд╕реНрдерд┐рдд рд╣реЛрддреЗ (рдкрде: %APPDATA%RadiantViewerpacs.xml). рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рдПрдХрд╛ рдХреНрд▓рд╛рдпрдВрдЯрдЪреЗ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХрдореАрддрдХрдореА рджреЛрди рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рдордзреНрдпреЗ рджреБрд╕рд░реНтАНрдпрд╛рдкреЗрдХреНрд╖рд╛ рд╡реЗрдЧрд│реЗ рд╣реЛрддреЗ (рдПрдИрдЪреЗ рдирд╛рд╡ рдкреНрд░рддреНрдпреЗрдХрд╛рд╕рд╛рдареА рд╡реЗрдЧрд│реЗ рдЕрд╕рддреЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЪрд╛рд▓рдгрд╛рд░реЗ рдЯрд░реНрдорд┐рдирд▓ рдХреНрд▓рд╛рдпрдВрдЯ рд╡рдЧрд│рддрд╛ рдкреЛрд░реНрдЯ рдореБрд│рд╛рдд рд╕рдорд╛рди рдЕрд╕рддреЗ - рддреЗрдереЗ рдкреЛрд░реНрдЯ рджреЗрдЦреАрд▓ рд╣реЛрддреЗ. рд╡реЗрдЧрд│реЗ рдирд┐рдпреБрдХреНрдд рдХрд░рдгреЗ).

рджреНрд╡рд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг pacs.xml рдлрд╛рдЗрд▓ рджреБрд╡рд╛:

рд╕реБрдорд╛рд░реЗ рд╕рд╣рд╛ рдорд╣рд┐рдиреЗ рд╕рд░реНрд╡рдХрд╛рд╣реА рдареАрдХ рд╣реЛрддреЗ, рд╕рд┐рд╕реНрдЯрдо рдХрд╛рдо рдХрд░реВ рд▓рд╛рдЧрд▓реА... рдЖрдгрд┐ рдордЧ рддреА рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЖрд▓реА.рдкрд╛рдгреНрдпрд╛рдЦрд╛рд▓реА рджрдЧрдб"

  • рдЖрдореНрд╣рд╛рд▓рд╛ рдЕрдиреЗрдХ рдирд╡реАрди PACS рд╕рд░реНрд╡реНрд╣рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрддреАрд▓ рдЬреЗ рдЬреБрдиреЗ рдмрджрд▓рддреАрд▓ (рдЬреЗрдереЗ рдбрд┐рд╕реНрдХ рдЬрд╛рдЧрд╛ рд╕рдВрдкреВ рд▓рд╛рдЧрд▓реА рдЖрд╣реЗ). рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирдордзреАрд▓ PACS рд╕рд░реНрд╡реНрд╣рд░, рдкрд░рдВрддреБ рдЖрдореНрд╣реА рддреНрдпрд╛рдмрджреНрджрд▓ рдмреЛрд▓рдд рдирд╛рд╣реА;
  • рдЖрдореНрд╣рд╛рд▓рд╛ 200 рдорд╢рд┐рдиреНрд╕рд╡рд░ (рджреЛрди рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рд╕рд╣) рдпреБрдирд┐рдХ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдиреНрд╕ рдХреЗрдВрджреНрд░реАрдпрд░рд┐рддреНрдпрд╛ рдмрджрд▓рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдЖрд╣реЗ (рддреНрдпрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рдпрдорд┐рддрдкрдгреЗ рд╡рд╛рдврдд рд╣реЛрддреА);
  • рд╕рд░реНрд╡реЗрдХреНрд╖рдг рд╡реНрд╣реЙрд▓реНрдпреВрдордЪреНрдпрд╛ рд╡рд╛рдвреАрдЪрд╛ рджрд░ рд▓рдХреНрд╖рд╛рдд рдШреЗрддрд╛, рдПрдХ рдЙрдкрд╛рдп рдлрдХреНрдд рдПрдХрджрд╛рдЪ рдирд╡реНрд╣реЗ рддрд░ рдкреНрд░рддрд┐рдХреГрддреА рдЖрдгрд┐ рдирд┐рдпрдорд┐рддрдкрдгреЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рджрд░ 1-3 рдорд╣рд┐рдиреНрдпрд╛рдВрдиреА рдПрдХрджрд╛) рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдЙрдкрд╛рдп рдЦрд╛рд▓реА рджрд┐рд▓реЗрд▓рд╛ рдЖрд╣реЗ.

рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд╛рдзрдиреЗ рдирд┐рд╡рдбрдгреЗ

рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛, рдХреНрд▓рд╛рдпрдВрдЯрдЪреНрдпрд╛ рдмрд╛рдЬреВрдиреЗ pacs.xml рдлрд╛рдИрд▓ рд╕реБрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ AE рдирд╛рд╡ рдЖрдгрд┐ TCP рдкреЛрд░реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрдЬрд╡рд░ рдкрд░рд┐рдгрд╛рдо рди рдХрд░рддрд╛ PACS рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рд╕реВрдЪреАрдордзреНрдпреЗ рдмрджрд▓ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд╣реА рдЙрдкрд╛рдп рд╢реЛрдзрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛. рддреНрдпрд╛рд╡реЗрд│реА Windows рдХреНрд▓рд╛рдпрдВрдЯ Windows XP рдЖрдгрд┐ Windows 7 рдпрд╛ рджреЛрдиреНрд╣реАрдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддреЗ - рддреНрдпрд╛рдореБрд│реЗ VBScript рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЕрд╕реЗ рдХрд╛рд╣реАрддрд░реА рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдЭрд╛рд▓рд╛. рдкрд░рдВрддреБ, рдпрд╛ рднрд╛рд╖реЗрдд рдХрд╛рд╣реАрд╣реА рдХреНрд▓рд┐рд╖реНрдЯ рдЖрдгрд┐ рд╕рд░реНрд╡рд╕рдорд╛рд╡реЗрд╢рдХ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪрд╛ рдЕрдиреБрднрд╡ рдирд╕рд▓реНрдпрд╛рдореБрд│реЗ рдЕрд╕реЗ рдХрд╛рд░реНрдп рдкрд╛рд░ рдкрд╛рдбрдгреЗ рд╢рдХреНрдп рдирд╡реНрд╣рддреЗ. рд╢реЛрдзрдгреНрдпрд╛рдЪрд╛ рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рджреЗрдЦреАрд▓ рдЕрдпрд╢рд╕реНрд╡реА рдард░рд▓рд╛ (рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛рд╡реЗ рдХреА рдорд╛рдЭреНрдпрд╛ рдбреЛрдХреНрдпрд╛рдд рдЖрдзреАрдкрд╛рд╕реВрдирдЪ рдПрдХ рд╡реЗрдЧрд│реА рдпреЛрдЬрдирд╛ рд╣реЛрддреА, рдореНрд╣рдгреВрди рдореА 3-4 рддрд╛рд╕рд╛рдВрдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдХрд╛рд│ VBScript рдмрд░реЛрдмрд░ рд╡рд╛рд╡рд░рд▓реЗ рдирд╛рд╣реА).

рд╕рд░рддреЗрд╢реЗрд╡рдЯреА рдореА рдЦрд╛рд▓реАрд▓ рдЙрдкрд╛рдпрд╛рд╡рд░ рд╕реНрдерд╛рдпрд┐рдХ рдЭрд╛рд▓реЛ:

  • рдЧрдЯ рдзреЛрд░рдг рд╡рд╛рдкрд░реВрди, рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрд╕рд╛рдзрдирд╛рддреАрд▓ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд╕рд░реНрд╡ pacs.xml рдлрд╛рдпрд▓реА рдПрдХрд╛рдЪ рдард┐рдХрд╛рдгреА рд╕рдВрдХрд▓рд┐рдд рдХрд░рд╛;
  • рдлрд╛рдЗрд▓реНрд╕ рдПрдХрддреНрд░рд┐рддрдкрдгреЗ рдмрджрд▓рд╛ (рдорд▓рд╛ рдЖрдзреАрдЪ рдкрд░реНрд▓ рд╡рд╛рдкрд░реВрди рдЕрд╢рд╛ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рдгреНрдпрд╛рдЪрд╛ рдЕрдиреБрднрд╡ рдЖрд╣реЗ);
  • рдХреНрд▓рд╛рдпрдВрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдЕрдкрдбреЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЧрдЯ рдзреЛрд░рдгреЗ рджреЗрдЦреАрд▓ рд╡рд╛рдкрд░рд╛.

рдЧрдЯ рдзреЛрд░рдг рд╡рд╛рдкрд░реВрди рдлрд╛рдЗрд▓реНрд╕ рдЧреЛрд│рд╛ рдХрд░рдгреЗ

рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рднрд╛рдЧ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рдЬреЗрд╡реНрд╣рд╛ рдХреНрд▓рд╛рдпрдВрдЯ рддреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓рдордзреНрдпреЗ рд▓реЙрдЧ рдЗрди рдХрд░рддреЛ, рддреЗрд╡реНрд╣рд╛ рддреЛ, рддреНрдпрд╛рдЪреНрдпрд╛ рдЕрдзрд┐рдХрд╛рд░рд╛рдВрд╕рд╣, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ .bat рдлрд╛рдЗрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЛ, рдЬреНрдпрд╛рдордзреНрдпреЗ рдЕрд╕реЗ рдореНрд╣рдЯрд▓реЗ рдЖрд╣реЗ:

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

рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, pacs.xml рдлрд╛рдЗрд▓реНрд╕ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд▓рдкрд╡рд┐рд▓реЗрд▓реНрдпрд╛ рд╕реНрддреНрд░реЛрддрд╛рдордзреНрдпреЗ рдЬрдорд╛ рд╣реЛрддреАрд▓, рдЬреНрдпрд╛рдЪреНрдпрд╛ рдирд╛рд╡рд╛рдордзреНрдпреЗ рд╣реА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХреЛрдгрддреНрдпрд╛ рд╕рдВрдЧрдгрдХрд╛рд╡рд░реВрди рдЖрдгрд┐ рдХреЛрдгрддреНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдХрдбреВрди рдХреЙрдкреА рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ рдпрд╛рдЪреА рдорд╛рд╣рд┐рддреА рдЖрд╣реЗ.

рд╣реЗ рдзреЛрд░рдг рд╕рд░реНрд╡ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрд╕рд╛рдареА рдХрд╛рдо рдХрд░реЗрдкрд░реНрдпрдВрдд рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдгреЗ рд╣реА рд╕рд░реНрд╡рд╛рдд рдХрдареАрдг рдЧреЛрд╖реНрдЯ рд╣реЛрддреА.

рдкрд░реНрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рдкрд░реВрди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдмрджрд▓рдгреЗ

рдЖрдореНрд╣рд╛рд▓рд╛ рд▓рд╛рдЧреЗрд▓ рд╕рдХреНрд░рд┐рдп рдкрд░реНрд▓ ActiveState рд╡рд░реВрди Windows рд╕рд╛рдареА, рддрд╕реЗрдЪ 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 рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЛ, рд╡рд┐рднрд╛рдЬрдХ рдореНрд╣рдгреВрди рдЕрд╡рддрд░рдг рд╡рд╛рдкрд░реБрди;
  • рдЖрдореНрд╣рд╛рд▓рд╛ рд╢реНрд░реЛрддрд╛ рд╢рдмреНрджрд╛рд╕рд╣ рдПрдХ рдУрд│ рд╕рд╛рдкрдбрддреЗ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рдлрд╛рдИрд▓рд╕рд╛рдареА (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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛