🙆♀️
OrthancのLua script機能拡張を試す
OrthancのLua機能拡張を試してみます。
公式ドキュメントは以下
検証環境
OS: Ubuntu20.04
Docker: 23.0.1
Docker Compose: v2.16.0(plugin)
今回試すこと
DICOM SRを受信したらXMLに変換する
準備
DockerコンテナにDCMTKをインストール
DICOM SR→XML変換は、DCMTKのdsr2xml
コマンドを用いる。
orthancのDockerイメージはUbuntuベースのため、aptでインストールが可能。
以下のようなDockerFileを作成する。
Dockerfile
FROM jodogne/orthanc-plugins:1.12.0
RUN apt-get update
RUN apt-get -y install dcmtk
docker-compose.ymlを修正する。
- DockerImageを設定していた部分をDockerfileからビルドするように変更
- Lua scriptとエクスポートディレクトリの設定を追加
docker-compose.yml
orthanc:
#image: jodogne/orthanc-plugins:1.12.0
build: ./docker/orthanc #Dockerfileがある相対パス
(中略)
volumes:
- ./orthanc_config/orthanc.json:/etc/orthanc/orthanc.json:ro
- ./orthanc_data:/var/lib/orthanc/data
- ./orthanc_config/test.lua:/etc/orthanc/test.lua #Lua script
- ./orthanc_export:/var/lib/orthanc/export #エクスポートディレクトリ
Lua scriptの準備
以下のようなLua scriptファイルを作成する。
test.lua
function OnStoredInstance(instanceId, tags, metadata,origin)
if tags['Modality']=="SR" then
local export_path='/var/lib/orthanc/export/'
local export_file_name = export_path .. tags['SOPInstanceUID'] .. '.dcm'
local output_file = assert(io.open(export_file_name, 'wb'))
local dicom = RestApiGet('/instances/' .. instanceId .. '/file')
output_file:write(dicom)
output_file:close()
os.execute('dsr2xml -Ee ' .. export_file_name .. ' ' .. export_file_name .. '.xml' )
end
end
orthanc.jsonの修正
以下のLuaScriptsの行を追加する。
orthanc.json
"LuaScripts": ["/etc/orthanc/test.lua"],
実行
$ docker compose build
$ docker compose up -d
モダリティや別のPACSよりDICOM送信した際にSRが含まれれば、./orthanc_export
ディレクトリにxmlファイルが生成される。
Discussion