https://github.com/knopkem/dicom-dimse-native
node js native addon for dimse services
https://github.com/knopkem/dicom-dimse-native
cpp dicom dimse find get move napi native pacs scp scu server sql store
Last synced: 2 months ago
JSON representation
node js native addon for dimse services
- Host: GitHub
- URL: https://github.com/knopkem/dicom-dimse-native
- Owner: knopkem
- License: other
- Created: 2020-01-11T09:57:03.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2026-03-21T12:35:07.000Z (2 months ago)
- Last Synced: 2026-03-21T22:11:12.070Z (2 months ago)
- Topics: cpp, dicom, dimse, find, get, move, napi, native, pacs, scp, scu, server, sql, store
- Language: C
- Homepage:
- Size: 145 MB
- Stars: 59
- Watchers: 2
- Forks: 23
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://travis-ci.com/knopkem/dicom-dimse-native)
[](https://github.com/knopkem/dicom-dimse-native/issues) [](https://app.fossa.io/projects/git%2Bgithub.com%2Fknopkem%2Fdicom-dimse-native?ref=badge_shield)
[](https://greenkeeper.io/)
# dicom-dimse-native
Nodejs native addon for DICOM DIMSE services using the DCMTK DICOM c++ toolkit (v.3.6.8).
# Supported DIMSE services
* C-Echo as SCU and SCP
* C-Find as SCU and SCP
* C-Move as SCU and SCP
* C-Get as SCU and SCP
* C-Store as SCU and SCP
# Features
* build on robust c++ DICOM framework
* prebuilds available for: macos, windows, linux
* extended character set support
* supports compression: JPEG, JPEG-LS, RLE, JPEG 2000
* typescript support
* simple to use
# Roadmap:
* Worklist SCP and SCU
## How to install
This package uses prebuilds from GitHub Releases to fetch precompiled binaries, so provided your platform is supported, all you need to do is:
```npm i -s dicom-dimse-native```
Otherwise install will try to compile the sources for your platform, you will need:
* CMake installed and in path
* a working c++ compiler (vs 2015+ or g++5.3+)
* network access to bootstrap `libiconv` for full charset conversion support, unless `LIB_ICONV` already points at a compatible prefix
Source builds now bootstrap `libiconv` by building a pinned `knopkem/libiconv-cmake` checkout before running `cmake-js compile`, so Linux, macOS, and Windows all use the same `libiconv` packaging flow.
## Examples
run the examples:
```npm run example:[echoscu|findscu|getscu|movescu|storescu|storescp]```
# PACS-server
## Features:
* ECHO, FIND, MOVE, GET and STORE-SCP
* sqlite db backend
* multithreaded association handling
```
import { startStoreScp, storeScpOptions } from 'dicom-dimse-native';
const scpOptions: storeScpOptions = {
source: {
aet: "MY_AET",
ip: "127.0.0.1",
port: 9999,
},
peers: [
{
aet: "TARGET_AET",
ip: "127.0.0.1",
port: 5678
}
],
storagePath: "path_to_storage_dir",
};
startStoreScp(scpOptions, (result) => {
console.log(JSON.parse(result));
});
```
# Move-SCU
```
import { moveScu, moveScuOptions } from 'dicom-dimse-native';
const moveOptions: moveScuOptions =
{
source: {
aet: "MY_AET",
ip: "127.0.0.1",
port: 9999
},
target: {
aet: "TARGET_AET",
ip: "127.0.0.1",
port: 5678
},
tags: [
{
key: "0020000D",
value: "1.3.46.670589.5.2.10.2156913941.892665384.993397",
},
{
key: "00080052",
value: "STUDY",
},
],
destination: "MY_AET", // e.g. sending to ourself
verbose: true
};
moveScu(moveOptions, (result) => {
console.log(JSON.parse(result));
});
```
# Find-SCU
```
import { findScu, findScuOptions } from 'dicom-dimse-native';
const options: findScuOptions = {
source: {
aet: "MY_AET",
ip: "127.0.0.1",
port: 9999
},
target: {
aet: "TARGET_AET",
ip: "127.0.0.1",
port: 5678
},
tags: [
{
key: "0020000D",
value: "1.3.46.670589.5.2.10.2156913941.892665384.993397",
},
{
key: "00080052",
value: "STUDY",
},
{
key: "00100010",
value: "",
}
],
verbose: true
};
findScu(options, (result) => {
console.log(JSON.parse(result));
});
```
For more information see examples.
# Result Format:
```
{
code: 0 (success) / 1 (pending) / 2 (failure),
container: null / 'DICOMJSON (only when using c-find)',
messsage: 'request succeeded' / 'descriptive problem',
status: 'success' / 'pending' / 'failure'
}
```
C-FIND results are returned in DICOMJSON format see https://www.dicomstandard.org/dicomweb/dicom-json-format/
## License
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fknopkem%2Fdicom-dimse-native?ref=badge_large)