Very importantly, the DICOM standard specifies DICOM tags that allow to index each single DICOM resource:html
PatientID (0x0010, 0x0020)
(part of the patient module).StudyInstanceUID (0x0020, 0x000d)
(part of the study module).SeriesInstanceUID (0x0020, 0x000e)
(part of the series module).SOPInstanceUID (0x0008, 0x0018)
(part of the SOP module).The DICOM standard orders StudyInstanceUID, SeriesInstanceUID and SOPInstanceUID to be globally unique. In other words, it is mandatory for two different imaging devices to never generate the same identifiers, even if they are manufactured by different vendors. Orthanc exploits this rule to derive its own unique identifiers.node
Importantly, even if the PatientID must be unique inside a given hospital, it is not guaranteed to be globally unique. This means that different patients imaged in different hospitals might share the same PatientID. For this reason, you should always browse from the study level (and not from the patient level) as soon as you deal with an application that handles patients from different hospitals.python
Configuring Orthanc simply consists in copying and adapting the default configuration file. This file is in the JSON file format. You can generate a sample configuration file with the following call:mysql
$ Orthanc --config=Configuration.json
Then, start Orthanc by giving it the path to the modified Configuration.json path as a command-line argument:linux
$ Orthanc ./Configuration.json
The default configuration file would:c++
ORTHANC
that listens on the port 4242.OrthancStorage
.Remark: When specifying paths under Microsoft Windows, backslashes (i.e. \
) should be either escaped by doubling them (as in \\
), or replaced by forward slashes (as in /
).git
To obtain more diagnostic, you can use the --verbose
or the --trace
options:web
$ Orthanc ./Configuration.json --verbose $ Orthanc ./Configuration.json --trace
Starting with Orthanc 0.9.1, you can also start Orthanc with the path to a directory. In such a case, Orthanc will load all the files with a .json
extension in this directory, and merge them to construct the configuration file. This allows to split the global configuration into several files.sql
systemctl stop firewalld
依賴環境shell
yum install unzip make automake gcc gcc-c++ python cmake curl-devel \ libpng-devel sqlite-devel libuuid-devel openssl-devel \ lua-devel mercurial patch tar
編譯安裝
解壓Orthanc-1.4.2.tar.gz到 /opt/context/Orthanc-1.4.2,進入目錄執行:
cmake -DALLOW_DOWNLOADS=ON \ -DUSE_SYSTEM_JSONCPP=OFF \ -DUSE_SYSTEM_MONGOOSE=OFF \ -DUSE_SYSTEM_PUGIXML=OFF \ -DUSE_SYSTEM_SQLITE=OFF \ -DUSE_SYSTEM_BOOST=OFF \ -DUSE_SYSTEM_DCMTK=OFF \ -DUSE_SYSTEM_GOOGLE_TEST=OFF \ -DUSE_SYSTEM_LIBJPEG=OFF \ -DCMAKE_BUILD_TYPE=Release \ /opt/context/Orthanc-1.4.2 cmake -DALLOW_DOWNLOADS=ON \ -DUSE_SYSTEM_JSONCPP=OFF \ -DUSE_SYSTEM_CIVETWEB=OFF \ -DUSE_SYSTEM_PUGIXML=OFF \ -DUSE_SYSTEM_SQLITE=OFF \ -DUSE_SYSTEM_BOOST=OFF \ -DUSE_SYSTEM_DCMTK=OFF \ -DUSE_SYSTEM_GOOGLE_TEST=OFF \ -DUSE_SYSTEM_LIBJPEG=OFF \ -DCMAKE_BUILD_TYPE=Release \ /opt/context/Orthanc-1.5.6 make
see:https://bitbucket.org/sjodogne/orthanc/src/default/LinuxCompilation.txt?fileviewer=file-view-default
其中/opt/context/Orthanc-1.4.2是解壓到的目錄,根據實際狀況酌情修改。
若是Downloading http://www.orthanc-server.com/downloads/third-party/boost_1_67_0_bcpdigest-1.4.0.tar.gz下載不穩定,將出現file DOWNLOAD HASH mismatch錯誤,將殘缺的文件從/opt/context/Orthanc-1.4.2/ThirdPartyDownloads/目錄下刪除,手動使用迅雷下載再上傳到該目錄下便可。
若是遇到文件不存在的問題,則手動解壓ThirdPartyDownloads目錄下對應的壓縮包到Orthanc-1.4.2目錄下。
若是遇到各類奇怪的錯誤,那麼使用迅雷手動下載所有文件,而後上傳便可。
編譯OrthancDicomWeb插件
將OrthancDicomWeb-0.5.tar.gz解壓到/opt/context/Orthanc-1.4.2-plugins/OrthancDicomWeb-0.5目錄
進入/opt/context/Orthanc-1.4.2-plugins/OrthancDicomWeb-0.5執行:
cmake -DSTATIC_BUILD=ON -DCMAKE_BUILD_TYPE=Release make
最終生成libOrthancDicomWeb.so.0.5插件文件
編譯MySQL plugins插件
將OrthancMySQL-1.1.tar.gz解壓到/opt/context/Orthanc-1.4.2-plugins/OrthancMySQL-1.1目錄
進入/opt/context/Orthanc-1.4.2-plugins/OrthancMySQL-1.1/MySQL執行:
cmake -DSTATIC_BUILD=ON -DCMAKE_BUILD_TYPE=Release make
The compilation will produce 2 shared libraries, each containing one plugin for Orthanc:
libOrthancMySQLIndex.so.1.1
replaces the default SQLite index of Orthanc by MySQL.libOrthancMySQLStorage.so.1.1
makes Orthanc store the DICOM files it receives into MySQL.使用OrthancMySQL插件將dicom元數據存儲到MySQL中,不單單只是爲了更好的性能和可靠性,更重要的是爲實現Orthanc負載均衡打基礎,很是重要!!!若是您不須要長遠考慮,那麼能夠跳過此步驟,直接使用默認內置的本地SQLite數據庫。
配置
配置文件在/opt/context/Orthanc-1.4.2/Resources目錄下Configuration.json。
只須要關注如下幾項便可:
//服務名稱 "Name" : "JuniperOrthanc" //dicom文件存儲路徑 "StorageDirectory" : "/data/orthanc", //索引數據庫存儲路徑 "IndexDirectory" : "/data/orthanc", //插件配置 "Plugins" : [ "/opt/context/Orthanc-1.4.2-plugins/OrthancDicomWeb-0.5/libOrthancDicomWeb.so.0.5", "/opt/context/Orthanc-1.4.2-plugins/OrthancMySQL-1.1/MySQL/libOrthancMySQLIndex.so.1.1", "/opt/context/Orthanc-1.4.2-plugins/OrthancMySQL-1.1/MySQL/libOrthancMySQLStorage.so.1.1" ], //OrthancDicomWeb插件配置 "DicomWeb" : { "Enable" : true, // Whether DICOMweb support is enabled "Root" : "/dicom-web/", // Root URI of the DICOMweb API (for QIDO-RS, STOW-RS and WADO-RS) "EnableWado" : true, // Whether WADO-URI (previously known as WADO) support is enabled "WadoRoot" : "/wado", // Root URI of the WADO-URI (aka. WADO) API "Host" : "localhost", // Hard-codes the name of the host for subsequent WADO-RS requests "Ssl" : false, // Whether HTTPS should be used for subsequent WADO-RS requests "StowMaxInstances" : 10, // For STOW-RS client, the maximum number of instances in one single HTTP query (0 = no limit) "StowMaxSize" : 10, // For STOW-RS client, the maximum size of the body in one single HTTP query (in MB, 0 = no limit) "QidoCaseSensitive" : true // For QIDO-RS server, whether search is case sensitive (since release 0.5) }, //Mysql插件配置 "MySQL" : { "EnableIndex" : true, //使用mysql存儲文件索引 "EnableStorage" : false, //使用mysql存儲dicom文件 "Host" : "node3", // For TCP connections (notably Windows) "Port" : 3306, // For TCP connections (notably Windows) "UnixSocket" : "", // For UNIX on localhost, Linux set to blank "Database" : "orthanc", "Username" : "root", "Password" : "123", "Lock" : false // 單個orthanc server獨佔數據庫,若是使用多個orthanc server共享mysql數據庫,必須關閉 }, //http服務端口 "HttpPort" : 7101, //容許遠程訪問 "RemoteAccessAllowed" : true,
生產環境的配置文件請在測試環境配置文件的基礎上作修改,由於作了許多優化
mkdir -p /data/orthanc
mysql數據庫初始化
開啓Mysql超長索引字段
show variables like 'innodb_large_prefix';
set global innodb_large_prefix=1;
show variables like 'innodb_file_format';
SET GLOBAL innodb_file_format = BARRACUDA;
set global innodb_file_format_max=BARRACUDA;
在配置的mysql服務中建立orthanc數據庫,字符集utf8mb4 -- UTF-8 Unicode,排序規則utf8mb4_unicode_ci
而後在orthanc數據庫中執行OrthancMySQL-1.1.sql便可。
啓動關閉
#進入/opt/context/Orthanc-1.4.2目錄,編譯完成以後這裏有可執行文件 #啓動 ./Orthanc /opt/context/Orthanc-1.4.2/Resources/Configuration.json > /data/logs/orthanc/orthanc.log 2>&1 & #關閉 ./Orthanc stop kill pid
/data/logs/orthanc/orthanc.log爲日誌文件路徑
訪問Orthanc Explorer
http://node1:7101/app/explorer.html
添加instances
curl -X POST http://localhost:7101/instances --data-binary @IM0
獲取instances的studyid
MainDicomTags:StudyInstanceUID
http://node1:7101/instances/{id}/study
獲取instances序號
MainDicomTags:InstanceNumber
http://node1:7101/instances/{instances-id}
獲取縮略圖
http://node1:7101/instances/{instances-id}/preview
安裝Meteor
將meteor-bootstrap-os.linux.x86_64.tar.gz文件和install.meteor.sh上傳到/opt/soft目錄下。
執行install.meteor.sh便可完成安裝。
sh install.meteor.sh
Meteor環境須要git客戶端依賴:
yum install -y git
安裝OHIF DICOM Viewer
將Viewers-master.zip解壓到/opt/context/ohif-dicom-viewer目錄
進入/opt/context/ohif-dicom-viewer/OHIFViewer目錄,利用Meteor安裝OHIF DICOM Viewer依賴:
METEOR_PACKAGE_DIRS="../Packages" meteor npm install
配置
編輯/opt/context/ohif-dicom-viewer/config/orthancDICOMWeb.json
關注如下幾點:
"name": "JuniperOrthanc", "wadoUriRoot": "http://localhost:7101/wado", "qidoRoot": "http://localhost:7101/dicom-web", "wadoRoot": "http://localhost:7101/dicom-web",
啓動
進入/opt/context/ohif-dicom-viewer/OHIFViewer目錄,利用Meteor啓動OHIF DICOM Viewer:
METEOR_PACKAGE_DIRS="../Packages" nohup meteor --settings ../config/orthancDICOMWeb.json --allow-superuser > /data/logs/orthanc/ohif-viewer.log 2>&1 &
關閉
kill -9 `ps ax | grep meteor | awk '{print $1}'`
必定要用exit命令退出shell,不然meteor會自動中止
訪問OHIF DICOM Viewer
http://node1:3000
http://node1:3000/viewer/1.2.840.113619.2.25.4.807793.1509756272.891
本文以AWS爲例,但並未使用AWS獨有功能,阿里雲同理可實現。
本文做爲一篇指導手冊,拋磚引玉,並不是循序漸進的詳細教程,實際操做過程當中可能會遇到各類各樣的問題,在本文留言便可,小菜會及時解答。