рд╡реНрдпрдХреНрддрд┐рдЧрдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╕рдордп рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрджрд▓рдирд╛

рдкреГрд╖реНрдарднреВрдорд┐

рдПрдХ рдЪрд┐рдХрд┐рддреНрд╕рд╛ рд╕рдВрдЧрдарди рдиреЗ Orthanc PACS рд╕рд░реНрд╡рд░ рдФрд░ рд░реЗрдбрд┐рдпрдВрдЯ DICOM рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдХрд┐рдПред рд╕реЗрдЯрдЕрдк рдХреЗ рджреМрд░рд╛рди, рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ DICOM рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ PACS рд╕рд░реНрд╡рд░ рдореЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

  • рдЧреНрд░рд╛рд╣рдХ рдирд╛рдо
  • рдПрдИ рдирд╛рдо (рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)
  • рдПрдХ рдЯреАрд╕реАрдкреА рдкреЛрд░реНрдЯ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рдЦреБрд▓рддрд╛ рд╣реИ рдФрд░ PACS рд╕рд░реНрд╡рд░ рд╕реЗ DICOM рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (рдпрд╛рдиреА, рд╕рд░реНрд╡рд░ рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдУрд░ рдзрдХреЗрд▓рддрд╛ рд╣реИ - рдкрд╣рд▓реЗ рдХрдиреЗрдХреНрд╢рди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ)
  • рдЖрдИрдкреА тАЛтАЛрдПрдбреНрд░реЗрд╕

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

рдЙрджрд╛рд╣рд░рдг pacs.xml рдлрд╝рд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдВрдХ:

рд▓рдЧрднрдЧ рдЫрд╣ рдорд╣реАрдиреЗ рддрдХ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛, рд╕рд┐рд╕реНрдЯрдо рдиреЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛... рдФрд░ рдлрд┐рд░ рдпрд╣ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдпрд╛ред''рдкрд╛рдиреА рдХреЗ рдиреАрдЪреЗ рдкрддреНрдерд░┬╗:

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

рд╕рдорд╛рдзрд╛рди рдиреАрдЪреЗ рд╣реИ.

рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдЪреБрдирдирд╛

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

рдЕрдВрдд рдореЗрдВ рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╛рдзрд╛рди рдкрд░ рд╕рд╣рдордд рд╣реБрдЖ:

  • рд╕рдореВрд╣ рдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕рд░реНрд╡рд░ рдкрд░ рд╕рднреА pacs.xml рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рд╕реНрдерд╛рди рдкрд░ рдПрдХрддреНрд░рд┐рдд рдХрд░реЗрдВ;
  • рд╕рд╛рдореВрд╣рд┐рдХ рд░реВрдк рд╕реЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрджрд▓реЗрдВ (рдореБрдЭреЗ рдкрд░реНрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреБрднрд╡ рдерд╛);
  • рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдореВрд╣ рдиреАрддрд┐рдпреЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╕рдореВрд╣ рдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдПрдХрддреНрд░рд┐рдд рдХрд░рдирд╛

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

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

рдЗрд╕ рдкреНрд░рдХрд╛рд░, pacs.xml рдлрд╝рд╛рдЗрд▓реЗрдВ рдПрдХ рдЫрд┐рдкреЗ рд╣реБрдП рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рдЬрдорд╛ рд╣реЛ рдЬрд╛рдПрдВрдЧреА, рдЬрд┐рд╕рдХреЗ рдирд╛рдо рдореЗрдВ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ рдХрд┐ рдХрд┐рд╕ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдФрд░ рдХрд┐рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╕рдмрд╕реЗ рдХрдард┐рди рдХрд╛рдо рддрдм рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдерд╛ рдЬрдм рддрдХ рдпрд╣ рдиреАрддрд┐ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреАред

рдкрд░реНрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрджрд▓рдирд╛

рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реЛрдЧреА рд╕рдХреНрд░рд┐рдп рдкрд░реНрд▓ ActiveState рд╕реЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП, рд╕рд╛рде рд╣реА 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 рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ;
  • рд╣рдо рд╢реНрд░реЛрддрд╛ рд╢рдмреНрдж рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐ рдвреВрдВрдврддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ (рдПрдИ рдХреНрд▓рд╛рдЗрдВрдЯ рдирд╛рдо рдФрд░ рдЯреАрд╕реАрдкреА рдкреЛрд░реНрдЯ рдирдВрдмрд░) рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рдбреЗрдЯрд╛ рдХреЛ рджреЛ рдЪрд░ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ;
  • рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдмрд╕ рдПрдХ рдирдИ 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% рдЧреНрд░рд╛рд╣рдХ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рдореВрд▓реНрдп рдХреЗ рдХрд░реАрдм рд╣реИ - рд╣рдо рдмрд╛рдХреА рдХреЛ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдВрдХ.

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ