Raccoon 是使用 no-SQL 資料庫實作的醫學影像儲存系統(DICOMweb PACS),目前主要由北護影像資訊學實驗室維護。 Raccoon 使用 MongoDB 管理 DICOM 影像並提供 DICOMweb 以及 FHIR ImagingStudy RESTful API 功能進行儲存、查詢、調閱。 另外 Raccoon 使用了 Burni FHIR Server為底延伸出 FHIR 與 DICOM 結合的功能。
git submodule init 指令 git submodule update 安裝 BlueLight:yellow_heart::yellow_heart::yellow_heart:
您可以跟隨完整安裝教學的步驟安裝 Raccoon 🎉
此篇教學列出了每項必要軟體的安裝步驟、 Raccoon 的詳細設定、 Raccoon 的部屬以及 Raccoon 的測試方法
😄 對新手來講是一篇非常有好的教學! 😄
npm install
npm run build #此指令會下載 dcmtk 執行檔到 ./models/dcmtk 並產生 dotenv 檔案範例.
pip install -r requirements.txt #安裝 Python 相依性套件
💙💙💙
如果您是 Windows 的使用者,並已經結束安裝的步驟,您可以往下閱讀Configuration & Deploy的說明
bash sudo apt-get install python3-gdcm libgdcm3.0
bash sudo apt-get install imagemagick #ubuntu
sudo apt-get install dcmtk
npm install
npm run build #This will download dcmtk using apt-get install and generate example dotenv file.
pip install -r requirements.txt #安裝 Python 相依性套件
Unknown VR: Tag not found in data dictionary when using STOW-RS
DCMDICTPATH 環境變數dicom.dic 檔案可以在/usr/share/libdcmtk{version}找到
{version} 對應到dcmtk的版本, e.g. 3.6.5 => libdcmtk15
使用指令設定 DCMDICTPATH 或者您可以將指令加入到profile檔案中(~/.bashrc,~/.profile etc.), example with dcmtk 3.6.5:
sh
export DCMDICTPATH=/usr/share/libdcmtk15/dicom.dic
sh
echo $DCMDICTPATH.env 檔案位於專案根目錄.env.template 進行修改ENV='windows' #input the os type. enum: windows , linux
MONGODB_NAME="Raccoon"
MONGODB_HOSTS=["mongodb"]
MONGODB_PORTS=[27017]
MONGODB_USER="user"
MONGODB_PASSWORD="password"
MONGODB_SLAVEMODE=false
SERVER_HOST="localhost"
SERVER_PORT=8081
DICOM_STORE_ROOTPATH="C:/" #The root path that DICOMweb STOW to store
DICOMWEB_HOST="localhost"
DICOMWEB_PORT=8081
DICOMWEB_API="dicom-web"
FHIRSERVER_APIPATH="api/fhir"
FHIRSERVER_HOST="localhost"
FHIRSERVER_PORT=8081
FHIR_NEED_PARSE_PATIENT=true #STOW will generate Patient data using DICOMTag. If you want custom FHIR patient , please change to false.
USE_CONDA=false
CONDA_PATH="C:\\Users\\chinHPlaptop\\anaconda3\\Scripts\\conda.exe"
CONDA_GDCM_ENV_NAME="gdcm"
USE_DCM2JPEG_PYTHONAPI=true
DCM2JPEG_PYTHONAPI_HOST="127.0.0.1"
DCM2JPEG_PYTHONAPI_PORT=5000
public/scripts/config.jsvar envConfig = {
QIDO : {
hostName :'127.0.0.1' ,
port : '9090' ,
api : 'dicom-web' ,
http : "http" //http or https
} ,
WADO : {
hostName : '127.0.0.1' ,
port : '9090' ,
api : 'dicom-web' ,
http : "http"
} ,
FHIR : {
hostName : '127.0.0.1' ,
port : '9090' ,
api : 'api/fhir' ,
http : "http"
},
login: {
enable: false, // 是否啟動 login 功能
jwt: false // 是否儲存 token、檢查 token、使用 token 登入
},
backend: {
baseUrl: "http://localhost:8081" // 登入功能的後端前綴網址 (Raccoon)
}
}
node server
Example:
version: '3.4'
services:
mongodb:
image: mongo:4.2
container_name : mongodb
restart: always
ports:
- 27017:27017
volumes:
- ./mongodb/db:/data/db
environment:
# provide your credentials here
- MONGO_INITDB_DATABASE=admin
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=Raccoon#Admin2Mongo
- MONGO_PORT=27017
raccoon:
build:
context : ./
dockerfile : Dockerfile
container_name: raccoon
command: >
/bin/sh -c '
while ! nc -z mongodb 27017;
do
echo "waiting for database ...";
sleep 3;
done;
echo "db is ready!";
npm install;
pm2-runtime start ecosystem.config.js --node-args="--max-old-space-size=4096";
'
volumes :
- ./:/nodejs/raccoon
- ./raccoon-storage:/dicomFiles
- ./raccoon-null/node_modules:/nodejs/raccoon/node_modules
- ./raccoon-null/build:/nodejs/raccoon/build
- ./raccoon-null/models:/nodejs/raccoon/models/dcmtk/linux-lib
ports:
- 8081:8081
depends_on:
- mongodb
tty : true
restart: on-failure:3
stdin_open : true
docker-compose up -d
QIDO-RS、WADO-RS、STOW-RS : /dicom-web/studies
WADO-URI : /api/dicom/wado
base : /api/fhir/{resource}
metadata : /api/fhir/metadata
$ claude mcp add raccoon \
-- python -m otcore.mcp_server <graph>