40
CyberRad CyberRad 2006 2006 チュートリアル( チュートリアル( 5 5 オープンソースの使い方各論: オープンソースの使い方各論: DICOM DICOM サーバ サーバ 藤田保健衛生大学 藤田保健衛生大学 衛生学部 衛生学部 武藤 武藤 晃一 晃一 kmuto@fujita kmuto@fujita - - hu.ac.jp hu.ac.jp

CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

CyberRadCyberRad 20062006

チュートリアル(チュートリアル(55))

オープンソースの使い方各論:オープンソースの使い方各論:DICOMDICOMサーバサーバ

藤田保健衛生大学藤田保健衛生大学 衛生学部衛生学部

武藤武藤 晃一晃一kmuto@[email protected]

Page 2: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

22

本チュートリアルの概要本チュートリアルの概要

•• オープンソース、フリーソフトウェアとして公開オープンソース、フリーソフトウェアとして公開されている「されている「DICOM DICOM サーバ」にはどんなものがサーバ」にはどんなものがあるのか?あるのか?

–– DICOM DICOM サーバサーバ == 保存保存SCP, Q/R SCPSCP, Q/R SCPを実装を実装

•• どうやって探す?どうやって探す?

–– !!

•• どうやって使う?どうやって使う?

–– 代表的なソフトの使用法を紹介代表的なソフトの使用法を紹介

•• 実際に使えるの?実際に使えるの?

–– 藤田保健衛生大学病院の事例(藤田保健衛生大学病院の事例(WebDASWebDAS)を紹介)を紹介

Page 3: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

33

DICOMDICOM関連の関連の OSSOSS、、FSWFSW

•• DICOMDICOM規格の実装を行うためのライブラリ規格の実装を行うためのライブラリ

–– DICOMDICOMオブジェクトのハンドリングオブジェクトのハンドリング

–– DIMSEDIMSEのサポートのサポート

–– サンプルアプリケーションとして様々なツールも提供サンプルアプリケーションとして様々なツールも提供

•• 画像ビューア画像ビューア

–– GUIGUIの工夫、コンピュータグラフィックス(3の工夫、コンピュータグラフィックス(3DD)や)や 画像処理の画像処理の機能を実装機能を実装

–– DIMSEDIMSEのサポートが無いものもあるのサポートが無いものもある

•• DICOMDICOMオブジェクトの加工ツールオブジェクトの加工ツール

–– AnonymizerAnonymizer

–– 他の画像フォーマットへの変換等他の画像フォーマットへの変換等

•• 画像保存サーバ画像保存サーバ

–– 保存保存SCP, Q/R SCP SCP, Q/R SCP とオブジェクトのストレージをサポートとオブジェクトのストレージをサポート

–– WebWebによる画像参照機能を持つものもあるによる画像参照機能を持つものもある

Page 4: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

44

DICOMDICOM関連の関連の OSSOSS、、FSWFSW

•• 個別のソフトは、単独で成立しているものもあれ個別のソフトは、単独で成立しているものもあれば、他のば、他のOSS, FSWOSS, FSWを組み合わせて成立しているを組み合わせて成立しているものもある。ものもある。

–– 利用できるものは利用して、手早く必要な機能を実現利用できるものは利用して、手早く必要な機能を実現させるさせる

–– OSSOSSを組み合わせれば、個別のニーズに応じて改造もを組み合わせれば、個別のニーズに応じて改造も可能可能

•• DICOMDICOM規格の「どの範囲をサポート」している規格の「どの範囲をサポート」しているかは、まちまち。かは、まちまち。

–– Transfer SyntaxTransfer Syntax

–– SOPSOPクラスクラス

Page 5: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

55

どこにあるの?どこにあるの?

669,000件

ヒット・・・

669,000件

ヒット・・・

商用製品も多い・・・

商用製品も多い・・・

Page 6: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

66

DICOMDICOM関連関連OSS, FSWOSS, FSWへのリンク集へのリンク集

•• The DICOM StandardThe DICOM Standard–– http://http://www.sph.sc.edu/comd/rorden/dicom.htmlwww.sph.sc.edu/comd/rorden/dicom.html

–– 南カリフォルニア大学の南カリフォルニア大学の ChirsChirs RordenRorden 氏の氏のDICOMDICOM解説ページ解説ページ

Page 7: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

77

DICOMDICOM関連関連OSS, FSWOSS, FSWへのリンク集へのリンク集

•• Open Open RadRad–– http://http://www.openrad.comwww.openrad.com//

–– 最近更新されていない?最近更新されていない?

Page 8: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

88

DICOMDICOM関連関連OSS, FSWOSS, FSWへのリンク集へのリンク集

•• idoimaging.comidoimaging.com–– http://http://www.idoimaging.comwww.idoimaging.com

–– Programmer Programmer のの Andrew Andrew CrabbCrabb 氏が収集したリンク集氏が収集したリンク集

–– 200200以上医用画像関連の以上医用画像関連のOSS, FSWOSS, FSWが分類され検索可能が分類され検索可能

“PACS”に分類されたもの

Page 9: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

99

DICOMDICOM関連関連OSS, FSWOSS, FSWへのリンク集へのリンク集

•• Free Healthcare SoftwareFree Healthcare Software–– http://http://sls.netpatia.comsls.netpatia.com//

–– 医用画像、医用画像、DICOMDICOM関連だけでなく関連だけでなくHL7HL7、電子カルテなどの、電子カルテなどのOSSOSS情報を収集している情報を収集している

Page 10: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

1010

代表的な代表的なOSSOSSののDICOMDICOM実装ライブラリ実装ライブラリ

DIMSEDIMSE含め含めDICOMDICOM規格の実装をサポートするもの規格の実装をサポートするもの

•• CC–– CTN v3.0.6 CTN v3.0.6

ftp://ftp://ftp.erl.wustl.edu/pub/dicom/software/ctnftp.erl.wustl.edu/pub/dicom/software/ctn//

•• C++C++–– DCMTK v3.5.4 DCMTK v3.5.4

http://http://dicom.offis.de/dcmtk.php.endicom.offis.de/dcmtk.php.en

–– UCDMC DICOM codeUCDMC DICOM code

•• dicomlibdicomlib v0.9.0 v0.9.0 http://http://dicomlib.swri.ca/dicomlib.htmldicomlib.swri.ca/dicomlib.html

•• dicomlibdicomlib v1.4.10 v1.4.10 http://www.xs4all.nl/~ingenium/dicom.htmlhttp://www.xs4all.nl/~ingenium/dicom.html

•• JavaJava–– dcm4che v1.3.22 dcm4che v1.3.22

http://sourceforge.net/projects/dcm4che/http://sourceforge.net/projects/dcm4che/

–– JDCM v1.6 JDCM v1.6 http://www.geocities.com/gigiobb/http://www.geocities.com/gigiobb/

Page 11: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

1111

代表的な代表的なOSS,FSWOSS,FSWののDICOMDICOMサーバサーバ

•• SimpleDICOMSimpleDICOM Receiver 4.0 Receiver 4.0 http://http://www.radiology.upmc.edu/software.htmlwww.radiology.upmc.edu/software.html

•• CTNCTN

–– archive_serverarchive_server

•• DCMTK DCMTK

–– dmcqrscpdmcqrscp

•• UCDMC UCDMC dicomlibdicomlib

–– scippyscippyhttp://http://dicomlib.swri.ca/scippy.htmldicomlib.swri.ca/scippy.html

–– Conquest DICOM Server Conquest DICOM Server http://www.xs4all.nl/%7Eingenium/dicom.htmlhttp://www.xs4all.nl/%7Eingenium/dicom.html

Page 12: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

1212

Simple DICOM Receiver 4.0Simple DICOM Receiver 4.0

•• ピッツバーグ大学(米)ピッツバーグ大学(米)–– Division of Radiology Informatics, University of Pittsburgh MediDivision of Radiology Informatics, University of Pittsburgh Medical Centercal Center

•• CTN CTN と商用のと商用の MyDICOMMyDICOM ライブラリライブラリ(http://(http://www.mydicom.netwww.mydicom.net) ) をベースをベース

•• 保存保存SCP SCP のみのみ

•• Windows .NET Framework Windows .NET Framework によるによる GUI GUI アプリケーアプリケーションション

–– BinaryBinaryのみ提供されるのみ提供される

Page 13: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

1313

archive_serverarchive_server (CTN)(CTN)

•• CTNCTN((Central Test NodeCentral Test Node)に含まれる)に含まれるDICOMDICOMサーバサーバ

–– Mallinckrodt Institute of RadiologyMallinckrodt Institute of Radiology((ワシントン大学センワシントン大学セントルイス校)で開発トルイス校)で開発

–– RSNA/NEMARSNA/NEMAオフィシャルなオフィシャルなDICOMDICOM実装実装

•• v3.0.6 (2003v3.0.6 (2003--33--11)11)で開発停止中?!で開発停止中?!

–– SCPSCPをサポートする保存をサポートする保存SOPSOPクラス:34クラス:34

–– サポートするサポートするTSTS:暗黙的:暗黙的 VR LEVR LE

–– Q/RQ/R SCPSCPに対応に対応•• RDBMSRDBMS((PostgreSQLPostgreSQL, Microsoft , Microsoft SQLServerSQLServer etcetc……)を)を

利用利用

•• ConsoleConsoleアプリケーション(アプリケーション(CUICUI))

–– Linux, Windows, Mac OSX Linux, Windows, Mac OSX で動作で動作

Page 14: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

1414

dcmqrscpdcmqrscp (DCMTK)(DCMTK)

•• DCMTK DCMTK に含まれるに含まれる DICOM DICOM サーバサーバ–– オルデンブルグ大学(ドイツ)のオルデンブルグ大学(ドイツ)の OFFISOFFIS((Oldenburg Oldenburg

Research and Development Institute for Information Research and Development Institute for Information Technology Tools and SystemsTechnology Tools and Systems)が開発・公開)が開発・公開

–– 19931993年より年よりCEN/TC251CEN/TC251のプロジェクトとして開発が始まるのプロジェクトとして開発が始まる

–– ヨーロッパのヨーロッパのCTNCTN

•• DCMTK v3.5.4DCMTK v3.5.4((20052005--1212--2020))

–– SCPSCPをサポートする保存をサポートする保存SOPSOPクラス:クラス:8484

–– サポートするサポートするTSTS:: 9 9 ((Jpeg2000Jpeg2000にも対応)にも対応)

–– Q/RQ/R SCPSCPに対応に対応•• インデックスファイル(インデックスファイル(index.datindex.dat)を作成)を作成

•• RDBMSRDBMS不要不要

•• ConsoleConsoleアプリケーション(アプリケーション(CUICUI))

–– Linux, Windows, Mac OSX Linux, Windows, Mac OSX で動作で動作•• OsiriXOsiriX はは DIMTK DIMTK を利用しているを利用している

Page 15: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

1515

DCMTKDCMTKの中身の中身

•• dcmdatadcmdata–– DICOMDICOMデータのエンコード/データのエンコード/

デコードデコード

–– dump, XMLdump, XML化化, dump, dumpややXMLXMLからからDICOMDICOMデータ作成データ作成, PDF, PDFののDICOMDICOM化化

•• dcmimagedcmimage–– カラー画像のカラー画像のDICOMDICOM化化

•• dcmimgledcmimgle–– DICOM Part14DICOM Part14準拠の画像処準拠の画像処

理理

•• dcmjpegdcmjpeg–– JpegJpegエンコードエンコード//デコードデコード

•• dcmnetdcmnet–– DIMSEDIMSEライブラリライブラリ

–– echo, Cecho, C--FIND SCU, CFIND SCU, C--MOVE SCU&SCP, CMOVE SCU&SCP, C--STORE SCU&SCPSTORE SCU&SCP

•• dcmpstatdcmpstat–– Presentation StatePresentation Stateライブラライブラ

リリ

–– DICOM Print SCU&SCPDICOM Print SCU&SCP

•• dcmqrdbdcmqrdb–– DICOMDICOM画像サーバ画像サーバ

–– dcmqrscpdcmqrscp

•• dcmsigndcmsign–– 電子署名電子署名

•• dcmsrdcmsr–– DICOM SRDICOM SR

•• dcmtlsdcmtls–– セキュリティ通信(セキュリティ通信(Part15Part15))

•• dcmwlmdcmwlm–– MWM SCPMWM SCPとなるとなるWebWebアプリアプリ

Page 16: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

1616

dcmqrscpdcmqrscpを使ってみるを使ってみる

•• WindowsWindows用実行バイナリ(用実行バイナリ(dcmtkdcmtk--3.5.43.5.4--win32win32--i386.zipi386.zip)をダウンロードして解凍)をダウンロードして解凍–– ““C:C:¥¥usrusr¥¥dcmtkdcmtk”” に展開に展開

•• 環境変数の設定環境変数の設定

–– set DCMDICTPATH=C:set DCMDICTPATH=C:¥¥usrusr¥¥dcmtkdcmtk¥¥liblib¥¥dicom.dicdicom.dic

•• dcmqrscp.exedcmqrscp.exe用の設定ファイルを編集用の設定ファイルを編集

–– C:C:¥¥usrusr¥¥dcmtkdcmtk¥¥etcetc¥¥dcmqrscp.cfgdcmqrscp.cfg

Page 17: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

1717

dcmqrscp.cfgdcmqrscp.cfg

# Global Configuration Parameters# Global Configuration ParametersNetworkTypeNetworkType = "= "tcptcp""NetworkTCPPortNetworkTCPPort = 104= 104MaxPDUSizeMaxPDUSize = 16384= 16384MaxAssociationsMaxAssociations = 16= 16Display = "no"Display = "no"

HostTableHostTable BEGINBEGINtest = (TEST, test = (TEST, localhostlocalhost, 3000), 3000)HostTableHostTable ENDEND

VendorTableVendorTable BEGINBEGINVendorTableVendorTable ENDEND

AETableAETable BEGINBEGINDCMSRV DCMSRV x:x:¥¥dicomtestdicomtest¥¥TESTTEST RW (200,1024mb) testRW (200,1024mb) testAETableAETable ENDEND

Store SCUのAEタイトルを「TEST」とする。

Store SCPのAEタイトルを「DCMSRV」とする。

受け取ったDICOMデータは、「x:¥dicomtest¥TEST¥」

ディレクトリに保存する。

最大保持Studyは「200」件最大保存容量は「1024MByte」

HostTable内のエイリアス「test」からのリクエストに対応

Page 18: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

1818

保存SCP

保存SCU

Page 19: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

1919

scippyscippy

•• Sunnybrook&WomenSunnybrook&Women’’ss College College (カナダ)(カナダ)

–– Health Sciences Center Health Sciences Center のの Trevor Morgan Trevor Morgan 氏氏

–– UCDMCUCDMC((Medical Center of the University of California at Medical Center of the University of California at DavisDavis)で開発された)で開発されたDICOMDICOMライブラリを元に、改良を加えたライブラリを元に、改良を加えたDICOMDICOMライブラリライブラリ dicomlibdicomlib v 0.9.0 v 0.9.0 を開発を開発

•• dicomlibdicomlib v0.9.0v0.9.0をベースに実装(をベースに実装(20042004--77--2020))

–– Q/RQ/R SCPSCPに対応に対応

•• PostgreSQLPostgreSQL を利用を利用

•• ConsoleConsoleアプリケーション(アプリケーション(CUICUI))

–– LinuxLinuxで動作で動作

–– インストールは手作業でインストールは手作業で

Page 20: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

2020

Conquest DICOM ServerConquest DICOM Server

•• Netherlands Cancer InstituteNetherlands Cancer Institute(オランダ)(オランダ)

–– Marcel van HerkMarcel van Herk氏らにより開発・公開氏らにより開発・公開

–– UCDMCUCDMCで開発されたで開発されたDICOMDICOMライブラリを元に、ライブラリを元に、改良を加えた改良を加えたDICOMDICOMライブラリライブラリ dicomlibdicomlib v 1.4.11 v 1.4.11 を開発を開発

•• dicomlibdicomlib v1.4.11v1.4.11をベースに実装をベースに実装

–– WindowsWindows版はバイナリのみ公開版はバイナリのみ公開

•• Q/R SCPQ/R SCPに対応に対応

–– Microsoft Access (MDB), SQL Server, DBASEMicrosoft Access (MDB), SQL Server, DBASEⅢⅢを利用を利用

•• SCPSCPをサポートする保存をサポートする保存SOPSOPクラス:67クラス:67

•• サポートするサポートするTSTS:7(:7(Jpeg Lossless Jpeg Lossless 等をサポート)等をサポート)

•• GUIGUIアプリケーションアプリケーション

–– LinuxLinux版はソースコードによる公開版はソースコードによる公開

Page 21: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

2121

画像参照サーバ画像参照サーバ

•• CTNCTN等は等は Q/R SCP Q/R SCP に対応するため、に対応するため、RDBMSRDBMSを利用を利用

•• RDBMS RDBMS はは SQLSQL言語を使って情報を検索し取り言語を使って情報を検索し取り出せる出せる

•• WebWebサーバーサイド・スクリプト言語には、サーバーサイド・スクリプト言語には、RDBMSRDBMSとの連携をサポートするものが多いとの連携をサポートするものが多い–– PHP, ASP, JSP etcPHP, ASP, JSP etc……

•• DICOMDICOM画像を画像をjpegjpeg画像にコンバートすることも、画像にコンバートすることも、DCMTKDCMTK等のライブラリを使えば簡単等のライブラリを使えば簡単

•• WebWebサーバとサーバとDICOMDICOMサーバを連携させた、画像サーバを連携させた、画像参照機能を構築できる参照機能を構築できる

Page 22: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

2222

CTN + CTN + αα(画像参照機能)(画像参照機能)

•• DIOWaveDIOWave http://diowavehttp://diowave--vs.sourceforge.netvs.sourceforge.net//

–– 浜松医科大学でのプロジェクト(作佐部太也氏ら)浜松医科大学でのプロジェクト(作佐部太也氏ら)⇒⇒ オープンソースオープンソース

–– Windows .NET Framework , MDAC, ASP.NET, IISWindows .NET Framework , MDAC, ASP.NET, IIS–– CTNCTNををWindowsWindowsサービス化サービス化

•• DiAcessDiAcess http://http://www.yumemido.netwww.yumemido.net/freeware//freeware/

–– ((有有))夢見堂のフリーソフトウェア夢見堂のフリーソフトウェア–– Mac OSX, Mac OSX, MySQLMySQL, PHP, apache, PHP, apache

•• pgCTNpgCTN http://http://pgctn.sourceforge.jppgctn.sourceforge.jp//

–– 若狭湾エネルギー研究所若狭湾エネルギー研究所・・横浜則也横浜則也氏が開発しオープンソース化氏が開発しオープンソース化–– Linux, Linux, PostgreSQLPostgreSQL, PHP, apache, PHP, apache–– DCMTK, dicom3tools, dicom2, DCMTK, dicom3tools, dicom2, ImageMagicImageMagic etcetc……–– レポート作成機能やレポート作成機能やAjaxAjaxによる画像参照など多機能による画像参照など多機能

•• WebDASWebDAS http://www.fujitahttp://www.fujita--hu.ac.jp/~kmuto/webdashu.ac.jp/~kmuto/webdas//

–– 拙作のフリーソフトウェア(ソースコードは公開)拙作のフリーソフトウェア(ソースコードは公開)–– Windows, Windows, SQLServerSQLServer, ASP, IIS / Linux, , ASP, IIS / Linux, PostgreSQLPostgreSQL, PHP, , PHP,

apacheapache–– CTNCTNのの Store SCP Store SCP ソフトにソフトにjpegjpeg画像出力機能を付加画像出力機能を付加

Page 23: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

2323

WebDASWebDAS のシステム構成のシステム構成

PHPPHP

dicomImagedicomImageData baseData base

pglibpglib

archive_serve_jpegarchive_serve_jpeg

Linux ext3 Linux ext3 filesystemfilesystem

DICOMDICOMimagesimages

JPEGJPEGimagesimages

DICOMDICOMprotocolprotocol

http protocolhttp protocol

DICOMDICOMViewerViewerJavaJavaappletapplet

JPEGJPEGimagesimages

DICOMDICOMimagesimages

Microsoft IEMicrosoft IE

WindowsWindowsクライアント端末クライアント端末 Linux Linux 画像サーバ画像サーバ

画像データは画像データはURLURLで特定で特定httphttpで転送で転送

apacheapacheWeb serverWeb server

SQLSQL

Page 24: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

2424

archive_serverarchive_serverが利用するが利用するデータベースデータベース

PatientLevelPatNam (0010,0010)PatID (0010,0020)PatBirDat (0010,0030)PatBirTim (0010,0032)PatSex (0010,0040)NumPatRelStuNumPatRelSerNumPatRelImaInsertDateInsertTimeOwnerGroupNamePriv

StudyLevelStuDat (0008,0020)StuTim (0008,0030)AccNum (0008,0050)StuID (0020,0010)StuInsUID (0020,000D)RefPhyNam (0008,0090)StuDes (0008,1030)PatAge (0010,1010)PatSiz (0010,1020)PatWei (0010,1030)NumStuRelSerNumStuRelImaInsertDateInsertTimeOwnerGroupNamePrivPatParent (0010,0020)

SeriesLevelMod (0008,0060)SerNum (0020,0011)SerInsUID (0020,000E)ProNam (0018,1030)SerDes (0008,103E)BodParExa (0018,0015)ViePos (0018,5100)NumSerRelImaInsertDateInsertTimeOwnerGroupNamePrivStuParent (0020,000D)

InstanceTableImageUID (0008,0018)RespondingTitle MediumPathSize (7fe0,0000)Transfer

ImageLevelImaNum (0020,0013)SOPInsUID (0008,0016)SOPClaUID (0008,0018)SamPerPix (0028,0002)PhoInt (0028,0004)Row (0028,0010)Col (0028,0011)BitAll (0028,0100)BitSto (0028,0101)PixRep (0028,0103)PatOri (0020,0020)InsertDateInsertTimeOwnerGroupNamePrivSerParent (0020,000E)

DICOMDICOMオブジェクトを受信すると、タグ情報をパースしてオブジェクトを受信すると、タグ情報をパースしてQ/RQ/Rにに必要な情報を必要な情報をRDBMSRDBMSに格納。に格納。DICOMDICOMオブジェクト自体はオブジェクト自体はOSOSのファイルシステム上にファイルとしてのファイルシステム上にファイルとして保存され、データベースにはそのありか(保存され、データベースにはそのありか(pathpath)が格納される。)が格納される。

Page 25: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

2525

画像データ検索画像データ検索

•• 欲しい情報を取得するための欲しい情報を取得するためのSQLSQL文を作成文を作成–– 患者患者ID ID 「「123456123456」」 をもつ検査を取得をもつ検査を取得

•• SELECTSELECT ** FROM FROM StudyLevelStudyLevel WHERE WHERE PatParentPatParent = = ‘‘123456123456’’

•• クエリーの結果として、クエリーの結果として、PatParentPatParentが「が「123456123456」である」であるStudyLevelStudyLevelテーブルの情報が返ってくるテーブルの情報が返ってくる

–– 検査検査UID UID 「「1.2.3921.2.392.x.y.z.a.b.x.y.z.a.b」を持つシリーズを取得」を持つシリーズを取得

•• SELECT * FROM SELECT * FROM SeriesLevelSeriesLevel WHERE WHERE StuParentStuParent = = ‘‘1.2.392.x.y.z.a.b1.2.392.x.y.z.a.b’’

–– シリーズシリーズUIDUID「「 1.2.392.x.y.z.c.d1.2.392.x.y.z.c.d 」を持つ画像の所在」を持つ画像の所在((path)path)を取得を取得

•• SELECT Path FROM SELECT Path FROM ImageLevelImageLevel, , InstanceTableInstanceTableWHERE WHERE ((SerParentSerParent = = ‘‘1.2.392.x.y.z.c.d1.2.392.x.y.z.c.d’’ AND AND

ImageLevel.SOPInsUIDImageLevel.SOPInsUID = = InstanceTable.ImageUIDInstanceTable.ImageUID))

Page 26: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

2626

JpegJpeg画像出力機能画像出力機能

•• archive_serverarchive_server の動作の動作

–– DICOMDICOMデータを受け取るとメモリー内に保持データを受け取るとメモリー内に保持

–– DICOMDICOMタグデータをデータベースにインサートタグデータをデータベースにインサート

–– OSOSが提供するが提供するfile systemfile systemの所定のディレクトリに、の所定のディレクトリに、DICOMDICOMデーデータをタをfilefileとして保存として保存

•• archive_server_jpegarchive_server_jpeg の動作の動作

–– OSOSが提供するが提供するfile systemfile systemの所定のディレクトリに、の所定のディレクトリに、DICOMDICOMデーデータをタをfilefileとして保存として保存

–– メモリー内のピクセルデータ(メモリー内のピクセルデータ(7fe0,00107fe0,0010)をコピーして、)をコピーして、JPEGJPEGフォーマットに変換し、フォーマットに変換し、DICOMDICOMデータと同じ場所に、同じデータと同じ場所に、同じfile file 名で拡張子を名で拡張子を““.jpg.jpg””に変えて保存に変えて保存

–– メモリー内のピクセルデータを縮小補完してからメモリー内のピクセルデータを縮小補完してからJPEGJPEGフォーフォーマットに変換し、マットに変換し、DICOMDICOMデータと同じ場所に、データと同じ場所に、file file 名の最後名の最後にに””_s_s””を付け、拡張子をを付け、拡張子を““.jpg.jpg””に変えて保存に変えて保存

Page 27: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

2727

例)例)

•• archive_serverarchive_server

/home/images/1_2_392_x_y_z_a_b/1_2_392_x_y_z_c_d//home/images/1_2_392_x_y_z_a_b/1_2_392_x_y_z_c_d/CT_340_1.dcmCT_340_1.dcm

•• archive_server_jpegarchive_server_jpeg

/home/images/1_2_392_x_y_z_a_b/1_2_392_x_y_z_c_d//home/images/1_2_392_x_y_z_a_b/1_2_392_x_y_z_c_d/CT_340_1.dcmCT_340_1.dcm

DICOMDICOM画像データ画像データ↑↑

/home/images/1_2_392_x_y_z_a_b/1_2_392_x_y_z_c_d//home/images/1_2_392_x_y_z_a_b/1_2_392_x_y_z_c_d/CT_340_1CT_340_1.jpg.jpg

DICOMDICOM画像データと同じ解像度の画像データと同じ解像度のjpegjpeg画像データ画像データ↑↑

/home/images/1_2_392_x_y_z_a_b/1_2_392_x_y_z_c_d//home/images/1_2_392_x_y_z_a_b/1_2_392_x_y_z_c_d/CT_340_1CT_340_1_s.jpg_s.jpg

DICOMDICOM画像を縮小してから画像を縮小してからjpegjpegへ変換したサムネイル画像データへ変換したサムネイル画像データ↑↑

Page 28: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

2828

WebDASWebDASの構成の構成

•• /home//home/webdaswebdas/ / →→ http://hostname/http://hostname/ でアクセスされるディレクトでアクセスされるディレクトリリ

–– menu.phpmenu.php toptopページページ–– patientpatient--study.phpstudy.php 患者患者--検査一覧作成検査一覧作成–– refimage_topflame.phprefimage_topflame.php 1検査を表示するためのフレームを生成1検査を表示するためのフレームを生成–– study.phpstudy.php 検査情報を表示検査情報を表示–– series.phpseries.php シリーズ情報を表示シリーズ情報を表示–– image.phpimage.php JPEGJPEGサムネイル画像、オリジナルサイズ画像表示サムネイル画像、オリジナルサイズ画像表示–– dicomview.phpdicomview.php DICOM viewer Java applet DICOM viewer Java applet 起動スクリプト起動スクリプト–– //dicomviewerdicomviewer/*/* DICOM viewer Java applet DICOM viewer Java applet 本体本体–– search_top.phpsearch_top.php 検査情報検索ページ検査情報検索ページ–– search_result.phpsearch_result.php 検索結果表示ページ検索結果表示ページ–– dcmdump.phpdcmdump.php DICOM DICOM ヘッダ情報表示ヘッダ情報表示–– list.csslist.css WebWebページのスタイルシートページのスタイルシート–– //imgimg/*/* WebWebページで使用するアイコンなどの画像ページで使用するアイコンなどの画像–– /inc/*/inc/* DHTMLDHTML関連の関連の JavascriptJavascript 書類書類

•• /home//home/webdaswebdas--inc/inc/–– webdassite.phpwebdassite.php データベースにアクセスするためのデータベースにアクセスするためのpasswdpasswd等を保持等を保持–– common.phpcommon.php WebWebページの表示方法などを制御するページの表示方法などを制御するincludeinclude書類書類–– commoncommon--mb.phpmb.php 患者名のローマ字→ひらがな変換機能患者名のローマ字→ひらがな変換機能

Page 29: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

2929

デモデモ

•• VMwareVMware の仮想マシンにの仮想マシンに Linux Linux をインストールをインストール

•• LAPPLAPPと改造と改造CTNCTNによるによるWebDASWebDAS((DICOMDICOM画像画像参照サーバ)を構築参照サーバ)を構築

•• 参照はホスト参照はホストOSOS((Windows XPWindows XP)から)から

Page 30: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

ご清聴ありがとうございました。ご清聴ありがとうございました。

Page 31: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:
Page 32: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

3232

患者患者--検査リスト検査リスト patientpatient--study.phpstudy.php

Page 33: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

3333

検査サムネイル表示検査サムネイル表示

study.phpstudy.php

series.phpseries.php

image.phpimage.php

Page 34: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

3434

DICOM tag DICOM tag 情報表示情報表示dcmdump.phpdcmdump.php

Page 35: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

3535

1画像表示1画像表示 image.phpimage.php

Page 36: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

3636

画像のリサイズ(画像のリサイズ(DHTMLDHTMLの機能)の機能)

Page 37: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

3737

画像データの一覧を画像データの一覧をURLURLで保持で保持

JavascriptJavascriptで画像ので画像のURLURLを配列変数にを配列変数に

保持することで、保持することで、アニメーション等をアニメーション等を実現できる実現できる

Page 38: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

3838

DICOM Viewer Java appletDICOM Viewer Java appletdicomview.phpdicomview.php

Page 39: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

3939

DICOMDICOM画像も画像もhttphttpで転送で転送

Viewer appletViewer appletは、は、URLURLで指定されで指定されたたDICOMDICOM画像を画像をhttphttpで取得する。で取得する。

Viewer applet Viewer applet の設定の設定

Page 40: CyberRad2006 チュートリアル(5) オープンソー …kmuto/webdas/CyberRad2006-T5-kmuto.pdfCyberRad2006 チュートリアル(5) オープンソースの使い方各論:

4040

検査の検索検査の検索

search_top.phpsearch_top.php

search_result.phpsearch_result.php

refimage_topflame.phprefimage_topflame.php