B-CRR 院內閘道

這是什麼
────────
裝在診所／醫院內部的一支小程式。X 光拍完之後，PACS 會把影像送到它，
它負責：

  1. 把姓名、生日、病歷號等個資從影像裡清掉
  2. 用這間診所專屬的金鑰上鎖
  3. 送到 B-CRR 雲端

因為上鎖是在院內完成的，而鑰匙不會離開院內，所以雲端收到的影像
連我們自己也打不開。


安裝
────
※ 請先「解壓縮全部」，再從解開後的資料夾執行。
  直接在壓縮檔裡雙擊會失敗——Windows 會把程式解到暫存資料夾，
  旁邊的 bcrr_gateway.py 不會跟著過去。

Windows   雙擊 INSTALL.bat
macOS     雙擊 install.command

Windows 若沒有安裝 Python，INSTALL.bat 會告訴你並給下載網址。
注意：Windows 內建一個會跳出 Microsoft Store 的「python」捷徑，
那不是真的 Python。請用 python.org 的安裝檔，並勾選
「Add python.exe to PATH」。

安裝程式會檢查 Python、裝好需要的套件，然後問你三個問題：

  雲端網址     直接按 Enter 用預設值
  診所代碼     從網站「設定 → PACS 串接」按「新增閘道」取得
  存取權杖     同上，跟診所代碼一起給

填完之後它會印出一組「診所金鑰」。
把那一串複製到網站同一頁的「診所金鑰」欄位，按儲存。

  ※ 診所金鑰只會顯示這一次。弄丟的話，雲端上已經上傳的影像
    就永遠解不開了——包括我們也解不開。


啟動
────
Windows   雙擊 START.bat
macOS     雙擊 start.command

第一次啟動時，Windows 會跳出防火牆詢問視窗
（「Windows Defender 防火牆已封鎖此應用程式的部分功能」）。
請勾選「私人網路」並按「允許存取」——不勾的話 PACS 連不進來。
不需要勾「公用網路」。

啟動後會顯示：

  C-STORE SCP 監聽 11112，AE Title = BCRR_GW

請把這台電腦的 IP、上面的 Port 與 AE Title 交給 X 光系統的技師，
請他在 PACS 後台新增一條轉發路由指向這裡。

設定完成後，技師可以用 C-ECHO 測試連線是否正常。


給技師的技術規格
────────────────
  接收協定   DICOM C-STORE SCP
  Port       11112（可在設定檔修改）
  AE Title   BCRR_GW
  支援       C-ECHO（Verification SOP Class）
  上行       HTTPS POST，不接受任何連入

  離開院內的資料已依 DICOM PS3.15 基本層級去識別化，
  並以 AES-256-GCM 加密，金鑰由院方保管。

  原始碼可供資安單位審閱。


需要 Python 3.10 以上。
Windows  https://www.python.org/downloads/
macOS    內建，或用 Homebrew 安裝
