Инструменты пользователя

Инструменты сайта


orthanc

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
orthanc [2019/04/12 07:41]
sector
orthanc [2022/05/27 02:34] (текущий)
sector
Строка 6: Строка 6:
 Решил попробовать сделать единое хранилище. \\ Решил попробовать сделать единое хранилище. \\
 Конечно, можно купить и платные продукты, но это не наш метод.\\ Конечно, можно купить и платные продукты, но это не наш метод.\\
-Поиск выдал Orthanc, система у меня Debian 9, так что решил поставить из репозитория:\\+Поиск выдал Orthanc, система у меня Debian 10, так что решил поставить из репозитория:\\
  
 <code | ini> <code | ini>
Строка 12: Строка 12:
 </code> </code>
  
-Установился, поправил конфиг для того что бы зайти в WEB, загрузил несколько картинок, по игрался... \\ +Установил, поправил конфиг для того что бы зайти в WEB, загрузил несколько картинок... \\
-Но что-то мне не совсем понравился стандартный web viewer...\\ +
-Решил прикрутить  вьювер от Osimis.  \\ +
-Прописал в конфиг плагин: \\+
  
-<code | ini > +В последних версиях пользователи хранятся тут : 
-"Plugins" : [ +<code | ini> 
-    "/home/user/ libOsimisWebViewer.so r.so", +credentials.json
-]  +
-</code> +
-И был послан,  данный плагин поддерживается в версии 1.5.3 и выше\\+
  
-Решил собирать из исходников… \\+
 +  /** 
 +   * Sensitive configuration options. This file must *not* be 
 +   * publicly-readable. It must only be readable by the users that run 
 +   * the "orthanc" service. 
 +   **/
  
-Ставим необходимое\\+  // The list of the registered users. Because Orthanc uses HTTP 
 +  // Basic Authentication, the passwords are stored as plain text. 
 +  "RegisteredUsers" 
 +    "alice" : "alicePassword" 
 +    "admin" : "adminPassword", 
 +  } 
 +}
  
-<code | ini> 
-sudo apt-get install build-essential unzip cmake mercurial uuid-dev libcurl4-openssl-dev 
-liblua5.1-0-dev libgtest-dev libpng-dev libsqlite3-dev libssl-dev libjpeg-dev  zlib1g-dev  
-libdcmtk-dev libboost-all-dev libwrap0-dev libcharls-dev libjsoncpp-dev libpugixml-dev doxygen 
 </code> </code>
  
- +Включение http сервера и авторизации тут:
-скачиваем:\\+
  
 <code | ini> <code | ini>
  
-wget  https://www.orthanc-server.com/downloads/get.php?path=/orthanc/Orthanc-1.5.6.tar.gz+Orthanc.json 
 + "HttpServerEnabled" : true,
  
-</code> 
  
-распаковываем, собираем\\+ "AuthenticationEnabled" true,
  
-<code | ini> 
-# cmake -DALLOW_DOWNLOADS=ON -DUSE_GOOGLE_TEST_DEBIAN_PACKAGE=ON -DUSE_SYSTEM_CIVETWEB=OFF  
-        -DDCMTK_LIBRARIES=dcmjpls -DCMAKE_BUILD_TYPE=Release ~/Orthanc-1.5.6 
-# make 
-# make install  
 </code> </code>
  
-Скачал и подкинул плагин:+Что-то мне не понравился стандартный web viewer...\\ 
 +Решил прикрутить  viewer от Osimis.  \\ 
 + 
 +скачиваем:
  
 <code | ini> <code | ini>
Строка 58: Строка 56:
 </code> </code>
  
-все заработало. +нужно посмотреть -> http://orthanc.osimis.io/lsb/plugin-osimis-webviewer/releases/1.3.1/libOsimisWebViewer.so 
 + 
 +по умолчанию подгружаются все плагины находящиеся в папке /usr/share/orthanc/plugins\\ 
 +поэтому директиву Plugins править не нужно.\\ 
 +скаченную библиотеку надо поместить в папку: /usr/share/orthanc/plugins\\  
 +и перезапустить orthanc.\\
  
-Конфиг был тут - /root/Orthanc-1.5.6/Resources/Configuration.json - собственно где распаковывал и собирал.   
-Пока что в конфиге исправил только одну строчку, разрешающую доступ к Web-интерфейсу и одну дописал что бы подключить плагин: 
  
 <code | ini> <code | ini>
Строка 71: Строка 72:
  
      
 +</code>
 +
 +TITLE AE -сервера, собственно куда отправляются снимки
 +И кодировка в которую они будут преобразованы "DefaultEncoding" : "Windows1251",
 +
 +
 +<code | ini>
 +  // The DICOM Application Entity Title
 +  "DicomAet" : "ORTHANC",
 +
 +  // Check whether the called AET corresponds to the AET of Orthanc
 +  // during an incoming DICOM SCU request
 +  "DicomCheckCalledAet" : false,
 +
 +  // The DICOM port
 +  "DicomPort" : 4242,
 +
 +  // The default encoding that is assumed for DICOM files without
 +  // "SpecificCharacterSet" DICOM tag, and that is used when answering
 +  // C-Find requests (including worklists). The allowed values are
 +  // "Ascii", "Utf8", "Latin1", "Latin2", "Latin3", "Latin4",
 +  // "Latin5", "Cyrillic", "Windows1251", "Arabic", "Greek", "Hebrew",
 +  // "Thai", "Japanese", "Chinese", "JapaneseKanji", "Korean", and
 +  // "SimplifiedChinese".
 +  //"DefaultEncoding" : "Latin1",
 +  "DefaultEncoding" : "Windows1251",
 +
 </code> </code>
  
  
 <code | ini>   <code | ini>  
-WEB-морда тут http://ваш ip:8042/app/explorer.html+WEB-интерфейс тут http://ваш ip:8042/app/explorer.html
 </code> </code>
  
-Запуск с нужным конфигом:\\+ 
 +{{:orthanc1.jpg?400|}} 
 + 
 +Подключение к СУБД:
  
 <code | ini> <code | ini>
- # Orthanc /root/Orthanc-1.5.6/Resources/Configuration.json+apt-get install default-mysql-server default-mysql-clietn defaultlt-libmysqlclient-dev orthanc-mysql
 </code> </code>
  
-{{:orthanc1.jpg?400|}}+Увеличиваем размер блока данных
  
-Будем курить дальше.\\ +<code | ini> 
-Продолжение скоро. \\ +mcedit my.cnf
-В плане подключить MariaDB и собирать все снимки с устройств централизованно\\+
  
 +max_allowed_packet = 128M
 +
 +</code>
 +
 +создаем пользователя и бд, подключаемся:
 +
 +<code | ini>
 +mcedit /etc/orthanc/mysql.json
 +
 +cat /etc/orthanc/mysql.json 
 +{
 +  /**
 +   * Configuration to use MySQL or MariaDB instead of the default
 +   * SQLite back-end of Orthanc. You will have to install the
 +   * "orthanc-mysql" package to take advantage of this feature.
 +   **/
 +  "MySQL" : {
 +    // Enable the use of MySQL to store the Orthanc index?
 +    "EnableIndex" : true,
 +    
 +    // Enable the use of MySQL to store the DICOM files?
 +    "EnableStorage" : true,
 +    
 +    // Parameters of the MySLQ database
 +    "Host" : "localhost",
 +    "Port" : 3306,
 +    "Database" : "orthanc",
 +    "Username" : "orthanc",
 +    "UnixSocket" : "/var/run/mysqld/mysqld.sock",
 +    "Password" : "dDE4dkULEYrbBZxc",
 +    
 +    // Optional: Disable the locking of the MySQL database
 +    "Lock" : true
 +  }
 +}
 +
 +</code>
 +
 +Контроль доступа и отправка на другие модальности:
 +<code | ini>
 +Orthanc.json
 +
 +  "LuaScripts" : [
 +    "/etc/orthanc/lua/access.lua",
 +    "/etc/orthanc/lua/send.lua"
 +  ],
 +
 +"sample" : [ "AE_TITLE", "192.168.1.235", 4006 ]
 +</code>
 +Lua:
 +
 +Разрешения выполнять запросы  к Orthanc, с помощью этого скрипта можно разграничить права доступа к web интерфейсу Orthanc
 +
 +<code | ini>
 +
 +cat access.lua
 +function IncomingHttpRequestFilter(method, uri, ip, username, httpHeaders)
 +   -- Only allow GET requests for non-admin users
 +
 +  if method == 'GET' or method == 'POST' then
 +      return true
 +   elseif username == 'admin' then
 +      return true
 +   else
 +      return false
 +   end
 +end
 +
 +</code>
 +
 +
 +Можно по ip
 +
 +<code | ini>
 +
 +function IncomingHttpRequestFilter(method, uri, ip, username, httpHeaders)
 +  if method == 'GET' and (username == 'user' or username == 'admin') then
 +    -- Read-only access (only GET method is allowed)
 +    return true
 +  elseif username == 'admin' and ip == '127.0.0.1' then
 +    -- Read-write access for administrator (any HTTP method is allowed on localhost)
 +    return true
 +  else
 +    -- Access is disallowed by default
 +    return false
 +  end
 +end
 +
 +</code>
 +
 +
 +С помощью этого скрипта можно отправлять снимки которые пришли в Orthanc на другие DICOM сервера или на рабочие станции врачей.
 +
 +<code | ini>
 +cat send.lua
 +function OnStoredInstance(instanceId, tags, metadata)
 +    SendToModality(instanceId, 'sample')
 +end
 +
 +</code>
 +
 +С помощью этого скрипта можно разбирать изображение которые приходят на Orthanc и маршрутизировать их на другие сервера. 
 +
 +<code | ini>
 +cat /etc/orthanc/lua/send.lua
 +function OnStoredInstance(instanceId, tags, metadata)
 +    local Modality = tags['Modality']
 +        if string.find(Modality, 'CR') ~= nil then
 +            SendToModality(instanceId, 'sample')
 +        elseif string.find(Modality, 'MR') ~= nil then
 +            SendToModality(instanceId, 'sample')
 +        end
 +end
 +</code>
 +
 +
 +перезапускаем:
 +
 +<code | ini>
 +services orthanc restart
 +</code>
 +
 +Удаление старых записей
 +<code | ini>
 + $ curl --user admin:password http://localhost:8042/tools/find -d '{"Level":"Study","Query":{"StudyDate":"20120101-20121231"}}'
 +[
 +   "6e2c0ec2-5d99c8ca-c1c21cee-79a09605-68391d12",
 +   "ef2ce55f-9342856a-aee23907-2667e859-9f3b734d"
 +]
 +$ curl -X DELETE http://localhost:8042/studies/6e2c0ec2-5d99c8ca-c1c21cee-79a09605-68391d12
 +$ curl -X DELETE http://localhost:8042/studies/ef2ce55f-9342856a-aee23907-2667e859-9f3b734d
 +</code>
  
orthanc.1555054883.txt.gz · Последнее изменение: 2019/04/12 07:41 — sector

Яндекс.Метрика