SqliteインストールとConquetのフィルタで転送先を指定

更新日2023-07-11 (火) 10:32:28
作成日:2023年6月26日

SqliteのDB内容の確認のためツールのインストールと、Conquestサーバ(Ver1.5.0b)でDBのデータ内容の条件でDICOMデータの転送先を変更する手順

Sqliteツールインストール

以下のURLからDownload。

https://www.sqlite.org/index.html

DL1.png

DL2.png

適当なフォルダに展開

使用方法

DBに接続

>sqlite3.exe conquest.db3 ← dicomserver150b\data\dbaseにある
SQLite version 3.42.0 2023-05-16 12:36:15
Enter ".help" for usage hints.

切断

sqlite> .exit

テーブルの表示

sqlite> .table
DICOMImages    DICOMSeries    DICOMWorkList
DICOMPatients  DICOMStudies   UIDMODS

テーブル内容の表示

sqlite> select * from DICOMPatients;
0009703828|HEAD EXP2||O|1686187648|||
sqlite> select * from DICOMSeries where BodyPartEx='CHEST';
1.2.392.200036.9125.3.24963615215859.64922747427.2612288|1001|20191111|\
163125.000||CR|||FUJIFILM Corporation||CHEST||ru0|Ootsuji Clinic||5|\
1.2.392.200036.9125.2.24963615215859.64922747014.3204330|1687742560|||

スキーマ表示

.schema DICOMPatients   ←「;」なし
 CREATE TABLE DICOMPatients \
 (PatientID  varchar(64) PRIMARY KEY not null, \
 PatientNam  varchar(64), \
 PatientBir char(8) , \
 PatientSex  varchar(16), \
 AccessTime  int, \
 qTimeStamp   int, \
 qFlags       int, \
 qSpare       varchar(64));

ConquestのExportFilterでの転送先を指定方法

GUIで表示したスキーマでなく、Sqliteのコマンドラインから「.schema DICOMSeries」で確認したスキーマを使用する。キャラクタ指定は「'」くくる。
よって、Dicomタグにあるからと言って全てのタグを利用できるわけではない
指定はSQLのselect文でテーブル名「DICOMSeries」のwhere 以降の指定になるようだ。

ExportFilter0 = BodyPartEx = 'CHEST'

select * from DICOMSeries where BodyPartEx = 'CHEST';

を意味するようだ。

dicom.iniの例

ExportFilter0 = BodyPartEx='CHEST'
             ↑↑にはスペースは必要

胸のイメージを指定

dicom.iniでの追加部

  1. モダリティが[(0008,0060)がCR]で胸[(0018,0015)がCHEST]の画像はWin11-2110に転送
  2. モダリティが[(0008,0060)がOT]の画像はWinPINTESTに転送
# Edit by JE2ISM
# Setup conquest server to forward all images received to multiple pacs servers
ForwardAssociationLevel = *
ForwardAssociationCloseDelay = 5
ForwardAssociationRefreshDelay = 3600
ExportConverters = 2
ExportConverter0 = forward to Win112110
ExportModality0 = CR
ExportFilter0 = BodyPartEx = 'CHEST'  ←ここ
ExportConverter1 = forward to WinPINTEST
ExportModality1 = OT

「BodyPartEx = "CHEST"」の=の前後もスペースが必要かも→Windows再起動後はスペースがないと動作しなくなった(不思議)

  • 患者IDの先頭にXXが付く患者を転送
# Edit by JE2ISM
# Setup conquest server to forward all images received to multiple pacs servers
ForwardAssociationLevel = *
ForwardAssociationCloseDelay = 5
ForwardAssociationRefreshDelay = 3600
ExportConverters = 1
ExportConverter0 = forward to Win11-2110
ExportFilter0 = SeriesPat Like 'XX%'  ← ここ

2つの条件を満足する場合

BodyPartExamined(0018,0015)が「CHEST」でInstitutionName(0008,0080)が「Ootsuji Clinic」に一致するときに適用

ExportFilter0 = BodyPartEx = 'CHEST' and Institutio = 'Ootsuji Clinic'

Conquest Ver1.4.19b+Mysqlでの確認

  • Mysqlの影響だと思われるがSQLのSELECTでのFilterで文字列は「"」で囲むようだ

dicom.iniでの追加部

# Edit by JE2ISM
# Setup conquest server to forward all images received to multiple pacs servers
ForwardAssociationLevel = *
ForwardAssociationCloseDelay = 5
ForwardAssociationRefreshDelay = 3600
ExportConverters = 2
ExportConverter0 = forward to Win112110
ExportModality0 = CR
ExportFilter0 = BodyPartEx = "CHEST" ←Mysqlでは「"」で囲む。
ExportConverter1 = forward to WinPINTEST
ExportModality1 = OT

サーバ上にデータが存在している場合でもデータを受信したときは、条件に従い転送するようだ(Ver1.4.19bで確認)

dicom.iniでの正規表現

Sqliteの正規表現

どの正規表現(Perl,awk等)が利用できるかは不明

「GLOB」がキーワード

  • テーブル内容
sqlite> select SeriesPat, SeriesNumb, Institutio from DICOMSeries;
0009703828| 1|
5|1001|Ootsuji Clinic
8900|1001|Ootsuji Clinic
8900|999|
HN5001|1001|Ootsuji Clinic
HN5001|1002|Ootsuji Clinic
  • 1文字目が数字だけにマッチしたものを抽出
sqlite> select SeriesPat, SeriesNumb, Institutio from DICOMSeries where SeriesPat GLOB '[0-9]*';
0009703828| 1|
5|1001|Ootsuji Clinic
8900|1001|Ootsuji Clinic
8900|999|
  • 1,2文字目がA-Zの文字、3文字目が数字に、4文字目以降は何でも良いにマッチしたものを抽出
sqlite> select SeriesPat, SeriesNumb, Institutio from DICOMSeries where SeriesPat GLOB '[A-Z][A-Z][0-9]*';
HN5001|1001|Ootsuji Clinic
HN5001|1002|Ootsuji Clinic

dicom.ini の ExportFilter

1文字目が数字だけにマッチしたとき「WinPINTEST」に転送する。

例)

  1. 12345 → 転送
  2. A1234 → 転送しない
  3. 5   → 転送
  4. 1ABCd → 転送
# Edit by JE2ISM
# Setup conquest server to forward all images received to multiple pacs servers
ForwardAssociationLevel = *
ForwardAssociationCloseDelay = 5
ForwardAssociationRefreshDelay = 3600
ExportConverters = 2
ExportConverter0 = forward to Win112110
ExportModality0 = CR
ExportFilter0 = SeriesPat GLOB '[0-9]*'  ← ここ
ExportConverter1 = forward to WinPINTEST
# ExportModality1 = OT

コマンドラインからデータ削除

患者IDを指定して削除

DGATE --deletepatient:patid

  • 患者IDが5を削除
dicomserver150b\dgate64.exe --deletepatient:5
  • XXから始まる患者IDすべて削除
dicomserver150b\dgate64.exe --deletepatient:XX*

ワイルドカードが使用できるようだ

Portを変えて2つConquestを立ち上げても、実行するdgate64.exeのパスを指定することで、同一のフォルダ内のConquestだけから、データを削除できる。他のConquestには影響がない

Helpの表示

>dgate64.exe -?

DGATE: UCDMC/NKI DICOM server thread and PACS utility application 1.5.0b

Usage:
(1) DGATE <-!#|-v|-u#>        Report as in dicom.ini|stdout|UDP(#=port)
          [-^|-l|-Lfile]      GUI/Normal/Debug log to file
          [-p#|-hAE|-qIP|-b]  Set port|AE|Target IP|Single thread debug mode
          [-wDIR]             Set the working directory for dgate(ini,dic,...)
          [-i|-r|-arDEVICE]   Init|Init/regenerate DB|Regen single device
(略)

添付ファイル: fileDL2.png 43件 [詳細] fileDL1.png 44件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-07-11 (火) 10:32:28