Latar belakang
Dalam satu organisasi medis, mereka menerapkan solusi berdasarkan server PACS Orthanc dan klien DICOM Radiant. Selama penyiapan, kami menemukan bahwa setiap klien DICOM harus dijelaskan di server PACS sebagai berikut:
- Nama pelanggan
- Nama AE (harus unik)
- Port TCP yang secara otomatis terbuka di sisi klien dan menerima pemeriksaan DICOM dari server PACS (mis. Server mendorong mereka ke arah klien, seolah-olah, yang memulai koneksi terlebih dahulu)
- Alamat IP
Setelah mengatur klien Radiant menerima informasi berikut untuk dipertimbangkan - untuk setiap klien, menyiapkan perangkat lunak dengan parameter di atas menyebabkan mengisi file
pacs.xml , yang terletak di profil pengguna (jalur:
% APPDATA% \ RadiantViewer \ pacs.xml ). Pada saat yang sama, konfigurasi satu klien dari yang lain berbeda dengan setidaknya dua parameter (nama AE berbeda untuk semua orang, dan port pada dasarnya sama, kecuali untuk klien terminal yang berjalan di server yang sama - di sana Anda juga harus menetapkan port yang berbeda).
Contoh file pacs.xml dari
tautan :
Selama sekitar setengah tahun semuanya baik-baik saja, sistem bekerja ... dan kemudian "
jebakan " mencapai kita:
- Kita perlu menjalankan beberapa server PACS baru, yang akan menggantikan yang lama (di mana ruang disk mulai habis). Server PACS di mesin virtual, tetapi ini bukan tentang itu;
- Kita perlu mengubah konfigurasi unik secara terpusat (dengan dua parameter berbeda) pada 200 mesin (jumlah mereka meningkat secara berkala);
- Mengingat tingkat pertumbuhan volume pemeriksaan, solusinya bukan satu kali, tetapi direplikasi dan teratur (misalnya, setiap 3-5 bulan sekali).
Solusinya ada di bawah ini.
Pilihan alat untuk memecahkan masalah
Awalnya, ada upaya untuk menemukan beberapa solusi yang mengubah file pacs.xml di sisi klien dan membuat perubahan pada daftar server PACS tanpa menyentuh nama AE dan pengaturan port TCP. Klien Windows pada saat itu didasarkan pada Windows XP dan Windows 7 - jadi ada upaya untuk menulis sesuatu seperti itu berdasarkan VBScript. Namun sayang, itu tidak mungkin untuk mengalahkan tugas seperti itu, mengingat kurangnya pengalaman dalam menulis sesuatu yang rumit dan kompleks dalam bahasa ini. Upaya untuk menemukan dan menulis ulang juga tidak berhasil (harus dicatat bahwa sudah ada rencana yang berbeda di kepala saya, jadi saya tidak repot-repot dengan VBScript selama lebih dari 3-4 jam).
Pada akhirnya, saya memutuskan solusi berikut:
- Kumpulkan semua file pacs.xml oleh kebijakan grup di satu tempat di server mana pun di jaringan berbagi;
- Ubah file secara massal (sudah ada pengalaman dalam memecahkan masalah seperti itu - menggunakan Perl);
- Juga, gunakan kebijakan grup untuk memperbarui pengaturan klien.
Mengumpulkan file menggunakan Kebijakan Grup
Bagian yang paling sederhana adalah ketika klien masuk ke profilnya, ia dengan haknya menjalankan file .bat tertentu tempat ditulis:
echo off If exist %APPDATA%\RadiantViewer\pacs.xml copy %APPDATA%\RadiantViewer\pacs.xml \\srv.test.local\pconfigs$\pacs-%COMPUTERNAME%-%USERNAME%.xml
Dengan demikian, file pacs.xml akan diakumulasikan di server dalam sumber daya tersembunyi, yang namanya berisi informasi dari komputer mana dan dari mana pengguna konfigurasi ini disalin.
Yang paling sulit adalah menunggu semua pengguna menyelesaikan kebijakan ini.
Mengubah konfigurasi menggunakan skrip Perl
Kita membutuhkan
Perl Aktif untuk Windows dari ActiveState, serta modul XML :: Writer, yang dapat diinstal menggunakan
ppm install perintah
XML-Writer .
Script itu sendiri ternyata sangat sederhana:
use XML::Writer;
Prinsip kerjanya:
- Kami membuka direktori di mana kami telah mengumpulkan konfigurasi pacs.xml dari klien dan meletakkan daftar file dalam array skalar (@report_files);
- Dalam satu lingkaran, kami memproses satu file pada satu waktu dan membacanya baris demi baris;
- Menggunakan split, pisahkan setiap baris menjadi 5 bagian, menggunakan tanda kutip sebagai pemisah;
- Kami menemukan baris dengan pendengar kata dan memasukkan dua variabel data unik untuk setiap file (nama AE klien dan nomor port TCP);
- Setelah itu, kita cukup membuat file XML baru, memasukkan parameter unik ke dalamnya, dan kemudian memasukkan jumlah server PACS yang diperlukan dengan parameter mereka - yaitu sesuatu yang semuanya dimulai )
- Tulis ulang file XML baru di atas yang lama.
Perlu dicatat bahwa sebenarnya saya tidak menggunakan skrip ini sepenuhnya secara otomatis - pada kenyataannya, saya menyalin konfigurasi yang dikumpulkan ke direktori yang terpisah dan kemudian menjalankan skrip dan mengubahnya bersama-sama. Kemudian cek acak - dan konfigurasi dapat dituangkan kembali ke mesin.
Mendistribusikan file pacs.xml yang dimodifikasi ke klien
Hal paling sederhana yang terpikir oleh saya adalah membuat perubahan pada file .bat yang sudah berfungsi yang mengumpulkan konfigurasi dari klien dan menambahkan baris:
If exist %APPDATA%\RadiantViewer\pacs.xml copy /Y \\srv.test.local\pconfigsnew$\pacs-%COMPUTERNAME%-%USERNAME%.xml %APPDATA%\RadiantViewer\pacs.xml
File .bat yang dihasilkan terlihat seperti ini:
@echo off If exist %APPDATA%\RadiantViewer\pacs.xml copy %APPDATA%\RadiantViewer\pacs.xml \\srv.test.local\pconfigs$\pacs-%COMPUTERNAME%-%USERNAME%.xml If exist %APPDATA%\RadiantViewer\pacs.xml copy /Y \\srv.test.local\pconfigsnew$\pacs-%COMPUTERNAME%-%USERNAME%.xml %APPDATA%\RadiantViewer\pacs.xml
Kesimpulan
Itulah solusi "
setinggi lutut ". Kami sudah mengujinya dua kali (pada September 2018 dan Februari 2019), sementara penerbangan normal. Tentu saja, itu tidak memperbarui 100% klien, tetapi mendekati nilai ini - kami menyelesaikan sisanya dari jarak jauh. Script dengan
referensi .