6 Commits

Author SHA1 Message Date
AlfandiMario
af9ec01c19 additional field untuk overlay MRI OHIF 2025-11-04 11:47:12 +07:00
AlfandiMario
ae53d7faa3 support MRI custom overlay data for OHIF through fetchMeta because it couldn't retrieved from C-FIND / FINDSCU 2025-11-03 16:05:34 +07:00
mario
b316c5c7f6 add: studytime 00-23.59 filter and sort descending by studytime 2025-05-17 15:56:17 +07:00
mario
ab4604d4d8 add: dockerizing 2025-05-17 14:53:58 +07:00
mario
970f22cd4a fix: issue mario/dicom-proxy#3 dicom-dimse-native issue 2025-05-17 14:52:09 +07:00
mario
d349f3f8a1 fix: better studylist filter 2025-05-17 13:40:57 +07:00
24 changed files with 11847 additions and 693 deletions

1
.gitignore vendored
View File

@@ -114,3 +114,4 @@ dist
# TernJS port file
.tern-port
*.zip

45
DOCKER.md Normal file
View File

@@ -0,0 +1,45 @@
# Menjalankan proxy dengan Docker
## Build images
```sh
cd /path/to/cloned/dicomweb-proxy
docker build -t dicomweb-proxy:2.0 -f dicomweb.Dockerfile .
```
## Run Images
Cek `docker-compose.yml` lalu pastikan **image** sesuai dengan nama_image hasil build.
```Dockerfile
services:
dicomweb-proxy:
image: dicomweb-proxy:2.0
```
Lalu jalankan dengan:
```sh
docker-compose up -d
```
Jika berhenti, **jangan lupa**:
```sh
docker-compose down
```
## Memakai Image di Server PACS
1. Pull Images
```sh
docker pull devone.aplikasi.web.id/one/dicomweb-proxy:2.0
```
2. Unduh template `docker-compose.yml` dan `/config/default.js` disini:
[GDrive dicomweb-proxy starter template](https://drive.google.com/file/d/1pteS1l9vz50HhPpYfoE6hZkMofyE_WDD/view?usp=drive_link)
3. Jalankan dengan:
```sh
docker-compose up -d
```
Jika berhenti, **jangan lupa**:
```sh
docker-compose down
```

View File

@@ -23,20 +23,6 @@ Note: Since OHIF 3 is still beta you can also switch back to OHIF 2 version: jus
* nodejs 12 or newer
## Setup Instructions - npm
* install in empty directory:
```npm init -y```
```npm install dicomweb-proxy```
* update config file located in:
```./node_modules/dicomweb-proxy/config```
* or better: create config override, see: [config](https://www.npmjs.com/package/config)
* start proxy:
```npx dicomweb-proxy```
## Setup Instructions - source
* clone repository and install dependencies:

View File

@@ -1,13 +1,13 @@
{
"source": {
"aet": "DICOMWEB_PROXY",
"ip": "128.199.154.150",
"port": 8888
"aet": "MARIO",
"ip": "localhost",
"port": 21112
},
"peers": [
{
"aet": "ABPACS",
"ip": "128.199.154.150",
"ip": "152.42.173.210",
"port": 11112
}
],
@@ -18,7 +18,7 @@
"storagePath": "./data",
"cacheRetentionMinutes": 60,
"webserverPort": 5000,
"useCget": false,
"useCget": true,
"useFetchLevel": "SERIES",
"maxAssociations": 4,
"qidoMinChars": 0,

46
dicomweb.Dockerfile Normal file
View File

@@ -0,0 +1,46 @@
FROM node:18-bullseye
# Set working directory
WORKDIR /app
# Install DCMTK dan dependensi yang dibutuhkan
RUN apt-get update && apt-get install -y \
dcmtk \
unzip \
curl \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Membuat folder untuk DCMTK
RUN mkdir -p /usr/local/share/dcmtk-3.6.8
# Copy DCMTK files
COPY ./usr-dcmtk368/* /usr/local/share/dcmtk-3.6.8/
# Set environment variable untuk DCMTK
ENV DCMDICTPATH=/usr/local/share/dcmtk-3.6.8/dicom.dic
# Create app directory structure
RUN mkdir -p /app/dicomweb-proxy/config
# Copy only necessary files from your project
COPY ./bin /app/dicomweb-proxy/bin
COPY ./public /app/dicomweb-proxy/public
COPY ./src /app/dicomweb-proxy/src
COPY ./package.json /app/dicomweb-proxy/
COPY ./tsconfig.json /app/dicomweb-proxy/
# Masuk ke directory dicomweb-proxy
WORKDIR /app/dicomweb-proxy
# Install dependencies
RUN npm install
# Membuat volume untuk konfigurasi
VOLUME /app/dicomweb-proxy/config
# Expose port yang dibutuhkan (sesuai dengan konfigurasi dicomweb-proxy)
EXPOSE 5000
# Command untuk menjalankan aplikasi
CMD ["npm", "start"]

11
docker-compose.yml Normal file
View File

@@ -0,0 +1,11 @@
version: '3'
services:
dicomweb-proxy:
image: dicomweb-proxy:2.0
container_name: dicomweb-proxy
ports:
- "5000:5000"
volumes:
- "/home/mario/Works/dicomweb-proxy/config/:/app/dicomweb-proxy/config/"
restart: unless-stopped

1969
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -36,7 +36,7 @@
"close-with-grace": "^1.2.0",
"config": "^3.3.10",
"deepmerge": "^4.3.1",
"dicom-dimse-native": "2.4.5",
"dicom-dimse-native": "2.4.2",
"dicom-parser": "^1.8.21",
"fastify": "^4.26.0",
"shelljs": "^0.8.5",

View File

@@ -58,6 +58,44 @@ function parseFile(filename: string): Promise<ElementType> {
const sliceThickness = dataset.string('x00180050');
const sliceLocation = dataset.string('x00201041');
// TODO: buat ini dynamic berdasarkan includefields atau modality
// TODO: hapus tambahan di bawah ini yang tidak diperlukan
// MR-specific tags for overlay
const spacingBetweenSlices = dataset.string('x00180088');
const percentPhaseFieldOfView = dataset.string('x00180094');
const fovDimensionElement = dataset.elements.x00181149;
const fovDimension = fovDimensionElement
? [
dataset.uint16('x00181130', 0),
dataset.uint16('x00181130', 1),
]
: null;
const acquisitionMatrixElement = dataset.elements.x00181310;
const acquisitionMatrix = acquisitionMatrixElement
? [
dataset.uint16('x00181310', 0),
dataset.uint16('x00181310', 1),
dataset.uint16('x00181310', 2),
dataset.uint16('x00181310', 3),
]
: null;
const scanningSequence = dataset.string('x00180020');
const repetitionTime = dataset.string('x00180080');
const echoTime = dataset.string('x00180081');
const inversionTime = dataset.string('x00180082');
const receiveCoilName = dataset.string('x00181250');
const mrAcquisitionType = dataset.string('x00180023');
const phaseEncodingDirection = dataset.string('x00181312');
const numOfAverages = dataset.string('x00180083');
const echoTrainLength = dataset.string('x00180091');
const flipAngle = dataset.string('x00181314');
const pixelBandwidth = dataset.string('x00180095');
const acquisitionTime = dataset.string('x00080032');
const acquistionDurationTotal = dataset.string('x00189073'); // in seconds
const acquistionDurationPerFrame = dataset.string('x00189220'); // in ms
const parallelAcquisitionTechnique = dataset.string('x00181316');
// append to all results
const result: ElementType = {
'00100010': { Value: [{ Alphabetic: patientName }], vr: 'PN' },
@@ -88,7 +126,27 @@ function parseFile(filename: string): Promise<ElementType> {
'00200013': { Value: [instanceNumber], vr: 'IS' },
'00180050': { Value: [sliceThickness], vr: 'DS' },
'00201041': { Value: [sliceLocation], vr: 'DS' },
'00180088': { Value: [spacingBetweenSlices], vr: 'DS' },
'00180094': { Value: [percentPhaseFieldOfView], vr: 'DS' },
...(fovDimension && { '00181149': { Value: fovDimension, vr: 'IS' } }),
...(acquisitionMatrix && { '00181310': { Value: acquisitionMatrix, vr: 'US' } }),
'00180020': { Value: [scanningSequence], vr: 'CS' },
'00180080': { Value: [repetitionTime], vr: 'DS' },
'00180081': { Value: [echoTime], vr: 'DS' },
'00180082': { Value: [inversionTime], vr: 'DS' },
'00181250': { Value: [receiveCoilName], vr: 'SH' },
'00180023': { Value: [mrAcquisitionType], vr: 'CS' },
'00181312': { Value: [phaseEncodingDirection], vr: 'CS' },
'00180083': { Value: [numOfAverages], vr: 'DS' },
'00180091': { Value: [echoTrainLength], vr: 'IS' },
'00181314': { Value: [flipAngle], vr: 'DS' },
'00180095': { Value: [pixelBandwidth], vr: 'DS' },
'00080032': { Value: [acquisitionTime], vr: 'TM' },
'00189073': { Value: [acquistionDurationTotal], vr: 'DS' },
'00189220': { Value: [acquistionDurationPerFrame], vr: 'FD' },
'00181316': { Value: [parallelAcquisitionTechnique], vr: 'CS' },
};
resolve(result);
});
});
@@ -105,7 +163,7 @@ export function parseMeta(json: object, studyInstanceUID: string, seriesInstance
const sopInstanceUid = json[key]['00080018'].Value[0];
const pathname = path.join(storagePath, studyInstanceUID, sopInstanceUid);
parsing.push(parseFile(pathname));
}
return Promise.all(parsing);
}

View File

@@ -42,17 +42,40 @@ module.exports = function (server: FastifyInstance, opts: unknown, done: () => v
try {
var { query } = req;
// * Untuk Limit Study List Agar Tidak Query Semua Data DICOM (kasus overload di PANAM)
// Jika req url tidak ada:
// StudyInstanceUID, StudyDate, dan PatientID(00100020)
// maka tambahkan default StudyDate (yyyymmdd) kemarin dan hari ini
if (!query.StudyInstanceUID && !query.StudyDate && !query['00100020']) {
const startDate = moment().subtract(1, 'day').format('YYYYMMDD');
// Tambahkan filter StudyDate hanya ketika tidak ada: Medrec, AccessionNo, PatientName, StudyInstanceUID, dan StudyDate
// Params: &00100020=MRN, AccessionNumber=, PatientName=, StudyDate=
const hasMedicalRecord = query['00100020'] !== undefined; // Patient ID/Medical Record
const hasAccessionNumber = query.AccessionNumber !== undefined;
const hasPatientName = query.PatientName !== undefined;
const hasStudyInstanceUID = query.StudyInstanceUID !== undefined;
const hasStudyDate = query.StudyDate !== undefined;
if (!hasMedicalRecord && !hasAccessionNumber && !hasPatientName && !hasStudyInstanceUID && !hasStudyDate) {
// TODO: buat startDate tgl H-1 karena terkadang kena Bug beda timezone +-7 di file DICOM nya
const startDate = moment().format('YYYYMMDD');
const endDate = moment().format('YYYYMMDD');
query.StudyDate = `${startDate}-${endDate}`;
// Add time range filter (entire day)
const startTime = '000000';
const endTime = '235959';
query['00080030'] = `${startTime}-${endTime}`; // StudyTime (0008,0030)
logger.info(`Adding default date range filter: ${query.StudyDate}`);
logger.info(`Adding default time range filter: ${query['00080030']}`);
}
logger.info(`Querying studies with filters: ${JSON.stringify(query)}`);
const json = deepmerge.all(await doFind(QUERY_LEVEL.STUDY, query), options);
// Karena by default hasilnya urut StudyTime (ascending),
// Maka, jika butuh latest first (descending), maka dibalik urutannya
if (Array.isArray(json) && json.length > 0) {
logger.info(`Reversing order of ${json.length} studies to show latest first`);
json.reverse();
}
return reply.send(json);
} catch (error) {
logger.error(error);
@@ -388,6 +411,25 @@ module.exports = function (server: FastifyInstance, opts: unknown, done: () => v
}
});
server.get<{
Params: IParamsImage;
Querystring: QueryParams;
}>('/rs/studies/:studyInstanceUid/series/:seriesInstanceUid/instances/:sopInstanceUid/metadata', async (req, reply) => {
const { studyInstanceUid, seriesInstanceUid, sopInstanceUid } = req.params;
const { query } = req;
query.StudyInstanceUID = studyInstanceUid;
query.SeriesInstanceUID = seriesInstanceUid;
query.SOPInstanceUID = sopInstanceUid;
try {
const rsp = await fetchMeta(query, studyInstanceUid, seriesInstanceUid);
return reply.send(rsp);
} catch (error) {
logger.error(error);
return reply.send(500);
}
});
done();
};

200
usr-dcmtk368/acrnema.dic Normal file
View File

@@ -0,0 +1,200 @@
#
# Copyright (C) 1994-2014, OFFIS e.V.
# All rights reserved. See COPYRIGHT file for details.
#
# This software and supporting documentation were developed by
#
# OFFIS e.V.
# R&D Division Health
# Escherweg 2
# D-26121 Oldenburg, Germany
#
#
# Module: dcmdata
#
# Author: Andrew Hewett, Marco Eichelberg, Joerg Riesmeier
#
# Purpose: ACR/NEMA data dictionary for the DICOM toolkit DCMTK
#
# This file contains the complete data dictionary from the DICOM predecessor
# ACR/NEMA. Please note that the file "dicom.dic" contains more or less the
# same tag definitions since they are now officially part of the DICOM standard
# (introduced with CP-607), so there is usually no need to use this file. It
# is mainly provided for backward compatibility with previous versions of the
# DCMTK.
#
# Each line represents an entry in the data dictionary. Each line has 5 fields
# (Tag, VR, Name, VM, Version). Entries need not be in ascending tag order.
#
# Entries may override existing entries.
#
# Each field must be separated by a single tab. The tag values (gggg,eeee)
# must be in hexadecimal and must be surrounded by parentheses. Repeating
# groups are represented by indicating the range (gggg-gggg,eeee). By default
# the repeating notation only represents even numbers. A range where only
# odd numbers are valid is represented using the notation (gggg-o-gggg,eeee).
# A range can represent both even and odd numbers using the notation
# (gggg-u-gggg,eeee). The element part of the tag can also be a range.
#
# Comments have a '#' at the beginning of the line.
#
# Tag VR Name VM Version
#
#---------------------------------------------------------------------------
#
# Retired data elements from ACR/NEMA 2 (1988)
#
(0000,0001) UL ACR_NEMA_CommandGroupLengthToEnd 1 ACR/NEMA2
(0000,0010) CS ACR_NEMA_CommandRecognitionCode 1 ACR/NEMA2
(0000,0200) LO ACR_NEMA_Initiator 1 ACR/NEMA2
(0000,0300) LO ACR_NEMA_Receiver 1 ACR/NEMA2
(0000,0400) LO ACR_NEMA_FindLocation 1 ACR/NEMA2
(0000,0850) US ACR_NEMA_NumberOfMatches 1 ACR/NEMA2
(0000,0860) US ACR_NEMA_ResponseSequenceNumber 1 ACR/NEMA2
(0000,4000) LO ACR_NEMA_DialogReceiver 1 ACR/NEMA2
(0000,4010) LO ACR_NEMA_TerminalType 1 ACR/NEMA2
(0000,5010) LO ACR_NEMA_MessageSetID 1 ACR/NEMA2
(0000,5020) LO ACR_NEMA_EndMessageSet 1 ACR/NEMA2
(0000,5110) LO ACR_NEMA_DisplayFormat 1 ACR/NEMA2
(0000,5120) LO ACR_NEMA_PagePositionID 1 ACR/NEMA2
(0000,5130) LO ACR_NEMA_TextFormatID 1 ACR/NEMA2
(0000,5140) CS ACR_NEMA_NormalReverse 1 ACR/NEMA2
(0000,5150) CS ACR_NEMA_AddGrayScale 1 ACR/NEMA2
(0000,5160) CS ACR_NEMA_Borders 1 ACR/NEMA2
(0000,5170) IS ACR_NEMA_Copies 1 ACR/NEMA2
(0000,5180) LO ACR_NEMA_MagnificationType 1 ACR/NEMA2
(0000,5190) LO ACR_NEMA_Erase 1-n ACR/NEMA2
(0000,51A0) CS ACR_NEMA_Print 1 ACR/NEMA2
(0000,51B0) US ACR_NEMA_Overlays 1-n ACR/NEMA2
(0008,0001) UL ACR_NEMA_IdentifyingGroupLengthToEnd 1 ACR/NEMA2
(0008,0010) LO ACR_NEMA_RecognitionCode 1 ACR/NEMA2
(0008,0040) US ACR_NEMA_OldDataSetType 1 ACR/NEMA2
(0008,0041) LO ACR_NEMA_DataSetSubtype 1 ACR/NEMA2
(0008,1000) LO ACR_NEMA_NetworkID 1 ACR/NEMA2
(0008,4000) LT ACR_NEMA_IdentifyingComments 1-n ACR/NEMA2
(0010,1050) LT ACR_NEMA_InsurancePlanIdentification 1-n ACR/NEMA2
(0018,1240) IS ACR_NEMA_UpperLowerPixelValues 1-n ACR/NEMA2
(0018,4000) LT ACR_NEMA_AcquisitionComments 1-n ACR/NEMA2
(0018,5030) DS ACR_NEMA_DynamicRange 1 ACR/NEMA2
(0018,5040) DS ACR_NEMA_TotalGain 1 ACR/NEMA2
(0020,0030) DS ACR_NEMA_ImagePosition 3 ACR/NEMA2
(0020,0035) DS ACR_NEMA_ImageOrientation 6 ACR/NEMA2
(0020,0050) DS ACR_NEMA_Location 1 ACR/NEMA2
(0020,0070) LO ACR_NEMA_ImageGeometryType 1 ACR/NEMA2
(0020,0080) LO ACR_NEMA_MaskingImage 1-n ACR/NEMA2
(0020,1001) IS ACR_NEMA_AcquisitionsInSeries 1 ACR/NEMA2
(0020,1003) IS ACR_NEMA_ImagesInSeries 1 ACR/NEMA2
(0020,1005) IS ACR_NEMA_ImagesInStudy 1 ACR/NEMA2
(0020,1020) LO ACR_NEMA_Reference 1-n ACR/NEMA2
(0020,3100-31FF) LO ACR_NEMA_SourceImageID 1-n ACR/NEMA2
(0020,3401) LO ACR_NEMA_ModifyingDeviceID 1 ACR/NEMA2
(0020,3402) LO ACR_NEMA_ModifiedImageID 1 ACR/NEMA2
(0020,3403) DA ACR_NEMA_ModifiedImageDate 1 ACR/NEMA2
(0020,3404) LO ACR_NEMA_ModifyingDeviceManufacturer 1 ACR/NEMA2
(0020,3405) TM ACR_NEMA_ModifiedImageTime 1 ACR/NEMA2
(0020,3406) LO ACR_NEMA_ModifiedImageDescription 1 ACR/NEMA2
(0020,5000) AT ACR_NEMA_OriginalImageIdentification 1-n ACR/NEMA2
(0020,5002) LO ACR_NEMA_OriginalImageIdentificationNomenclature 1-n ACR/NEMA2
(0028,0005) US ACR_NEMA_ImageDimensions 1 ACR/NEMA2
(0028,0040) CS ACR_NEMA_ImageFormat 1 ACR/NEMA2
(0028,0050) LO ACR_NEMA_ManipulatedImage 1-n ACR/NEMA2
(0028,0060) CS ACR_NEMA_CompressionCode 1 ACR/NEMA2
(0028,0104) xs ACR_NEMA_SmallestValidPixelValue 1 ACR/NEMA2
(0028,0105) xs ACR_NEMA_LargestValidPixelValue 1 ACR/NEMA2
(0028,0200) US ACR_NEMA_ImageLocation 1 ACR/NEMA2
(0028,1080) CS ACR_NEMA_GrayScale 1 ACR/NEMA2
(0028,1100) xs ACR_NEMA_GrayLookupTableDescriptor 3 ACR/NEMA2
(0028,1200) xs ACR_NEMA_GrayLookupTableData 1-n ACR/NEMA2
(0028,4000) LT ACR_NEMA_ImagePresentationComments 1-n ACR/NEMA2
(4000,0000) UL ACR_NEMA_TextGroupLength 1 ACR/NEMA2
(4000,0010) LT ACR_NEMA_TextArbitrary 1-n ACR/NEMA2
(4000,4000) LT ACR_NEMA_TextComments 1-n ACR/NEMA2
(6000-60FF,0110) CS ACR_NEMA_OverlayFormat 1 ACR/NEMA2
(6000-60FF,0200) US ACR_NEMA_OverlayLocation 1 ACR/NEMA2
(6000-60FF,4000) LT ACR_NEMA_OverlayComments 1-n ACR/NEMA2
#
#---------------------------------------------------------------------------
#
# Retired data elements from the ACR/NEMA 2 compression enhancements
#
(0028,005F) CS ACR_NEMA_2C_CompressionRecognitionCode 1 ACR/NEMA2C
(0028,0061) SH ACR_NEMA_2C_CompressionOriginator 1 ACR/NEMA2C
(0028,0062) SH ACR_NEMA_2C_CompressionLabel 1 ACR/NEMA2C
(0028,0063) SH ACR_NEMA_2C_CompressionDescription 1 ACR/NEMA2C
(0028,0065) CS ACR_NEMA_2C_CompressionSequence 1-n ACR/NEMA2C
(0028,0066) AT ACR_NEMA_2C_CompressionStepPointers 1-n ACR/NEMA2C
(0028,0068) US ACR_NEMA_2C_RepeatInterval 1 ACR/NEMA2C
(0028,0069) US ACR_NEMA_2C_BitsGrouped 1 ACR/NEMA2C
(0028,0070) US ACR_NEMA_2C_PerimeterTable 1-n ACR/NEMA2C
(0028,0071) xs ACR_NEMA_2C_PerimeterValue 1 ACR/NEMA2C
(0028,0080) US ACR_NEMA_2C_PredictorRows 1 ACR/NEMA2C
(0028,0081) US ACR_NEMA_2C_PredictorColumns 1 ACR/NEMA2C
(0028,0082) US ACR_NEMA_2C_PredictorConstants 1-n ACR/NEMA2C
(0028,0090) CS ACR_NEMA_2C_BlockedPixels 1 ACR/NEMA2C
(0028,0091) US ACR_NEMA_2C_BlockRows 1 ACR/NEMA2C
(0028,0092) US ACR_NEMA_2C_BlockColumns 1 ACR/NEMA2C
(0028,0093) US ACR_NEMA_2C_RowOverlap 1 ACR/NEMA2C
(0028,0094) US ACR_NEMA_2C_ColumnOverlap 1 ACR/NEMA2C
(0028,0400) CS ACR_NEMA_2C_TransformLabel 1 ACR/NEMA2C
(0028,0401) CS ACR_NEMA_2C_TransformVersionNumber 1 ACR/NEMA2C
(0028,0402) US ACR_NEMA_2C_NumberOfTransformSteps 1 ACR/NEMA2C
(0028,0403) CS ACR_NEMA_2C_SequenceOfCompressedData 1-n ACR/NEMA2C
(0028,0404) AT ACR_NEMA_2C_DetailsOfCoefficients 1-n ACR/NEMA2C
# according to the DICOM standard, the following 4 attributes
# should have a tag in the range of (0028,04x1) to (0028,04x3)
(0028,0410) US ACR_NEMA_2C_RowsForNthOrderCoefficients 1 ACR/NEMA2C
(0028,0411) US ACR_NEMA_2C_ColumnsForNthOrderCoefficients 1 ACR/NEMA2C
(0028,0412) CS ACR_NEMA_2C_CoefficientCoding 1-n ACR/NEMA2C
(0028,0413) AT ACR_NEMA_2C_CoefficientCodingPointers 1-n ACR/NEMA2C
(0028,0700) CS ACR_NEMA_2C_DCTLabel 1 ACR/NEMA2C
(0028,0701) CS ACR_NEMA_2C_DataBlockDescription 1-n ACR/NEMA2C
(0028,0702) AT ACR_NEMA_2C_DataBlock 1-n ACR/NEMA2C
(0028,0710) US ACR_NEMA_2C_NormalizationFactorFormat 1 ACR/NEMA2C
(0028,0720) US ACR_NEMA_2C_ZonalMapNumberFormat 1 ACR/NEMA2C
(0028,0721) AT ACR_NEMA_2C_ZonalMapLocation 1-n ACR/NEMA2C
(0028,0722) US ACR_NEMA_2C_ZonalMapFormat 1 ACR/NEMA2C
(0028,0730) US ACR_NEMA_2C_AdaptiveMapFormat 1 ACR/NEMA2C
(0028,0740) US ACR_NEMA_2C_CodeNumberFormat 1 ACR/NEMA2C
# according to the DICOM standard, the following 5 attributes
# should have a tag in the range of (0028,08x0) to (0028,08x8)
(0028,0800) CS ACR_NEMA_2C_CodeLabel 1-n ACR/NEMA2C
(0028,0802) US ACR_NEMA_2C_NumberOfTables 1 ACR/NEMA2C
(0028,0803) AT ACR_NEMA_2C_CodeTableLocation 1-n ACR/NEMA2C
(0028,0804) US ACR_NEMA_2C_BitsForCodeWord 1 ACR/NEMA2C
(0028,0808) AT ACR_NEMA_2C_ImageDataLocation 1-n ACR/NEMA2C
(1000,0000) UL ACR_NEMA_2C_CodeTableGroupLength 1 ACR/NEMA2C
# according to the DICOM standard, the following 6 attributes
# should have a tag in the range of (1000,xxx0) to (1000,xxx5)
(1000,0010) US ACR_NEMA_2C_EscapeTriplet 3 ACR/NEMA2C
(1000,0011) US ACR_NEMA_2C_RunLengthTriplet 3 ACR/NEMA2C
(1000,0012) US ACR_NEMA_2C_HuffmanTableSize 1 ACR/NEMA2C
(1000,0013) US ACR_NEMA_2C_HuffmanTableTriplet 3 ACR/NEMA2C
(1000,0014) US ACR_NEMA_2C_ShiftTableSize 1 ACR/NEMA2C
(1000,0015) US ACR_NEMA_2C_ShiftTableTriplet 3 ACR/NEMA2C
(1010,0000) UL ACR_NEMA_2C_ZonalMapGroupLength 1 ACR/NEMA2C
# according to the DICOM standard, the following attribute
# should have the tag (1010,xxxx) where "x" is "0" to "F"
(1010,0004) US ACR_NEMA_2C_ZonalMap 1-n ACR/NEMA2C
(6000-60FF,0060) CS ACR_NEMA_2C_OverlayCompressionCode 1 ACR/NEMA2C
(6000-60FF,0061) SH ACR_NEMA_2C_OverlayCompressionOriginator 1 ACR/NEMA2C
(6000-60FF,0062) SH ACR_NEMA_2C_OverlayCompressionLabel 1 ACR/NEMA2C
(6000-60FF,0063) SH ACR_NEMA_2C_OverlayCompressionDescription 1 ACR/NEMA2C
(6000-60FF,0066) AT ACR_NEMA_2C_OverlayCompressionStepPointers 1-n ACR/NEMA2C
(6000-60FF,0068) US ACR_NEMA_2C_OverlayRepeatInterval 1 ACR/NEMA2C
(6000-60FF,0069) US ACR_NEMA_2C_OverlayBitsGrouped 1 ACR/NEMA2C
(6000-60FF,0800) CS ACR_NEMA_2C_OverlayCodeLabel 1-n ACR/NEMA2C
(6000-60FF,0802) US ACR_NEMA_2C_OverlayNumberOfTables 1 ACR/NEMA2C
(6000-60FF,0803) AT ACR_NEMA_2C_OverlayCodeTableLocation 1-n ACR/NEMA2C
(6000-60FF,0804) US ACR_NEMA_2C_OverlayBitsForCodeWord 1 ACR/NEMA2C
(7F00-7FFF,0000) UL ACR_NEMA_2C_VariablePixelDataGroupLength 1 ACR/NEMA2C
(7F00-7FFF,0010) ox ACR_NEMA_2C_VariablePixelData 1 ACR/NEMA2C
(7F00-7FFF,0011) AT ACR_NEMA_2C_VariableNextDataGroup 1 ACR/NEMA2C
(7F00-7FFF,0020) OW ACR_NEMA_2C_VariableCoefficientsSDVN 1-n ACR/NEMA2C
(7F00-7FFF,0030) OW ACR_NEMA_2C_VariableCoefficientsSDHN 1-n ACR/NEMA2C
(7F00-7FFF,0040) OW ACR_NEMA_2C_VariableCoefficientsSDDN 1-n ACR/NEMA2C
(7FE0,0020) OW ACR_NEMA_2C_CoefficientsSDVN 1-n ACR/NEMA2C
(7FE0,0030) OW ACR_NEMA_2C_CoefficientsSDHN 1-n ACR/NEMA2C
(7FE0,0040) OW ACR_NEMA_2C_CoefficientsSDDN 1-n ACR/NEMA2C
#
# end of acrnema.dic
#

26
usr-dcmtk368/camera.lut Normal file
View File

@@ -0,0 +1,26 @@
# Camera characteristic file
# maximum DDL value
max 4095
# DDL LumVal
0 11.588656
16 16.934737
32 23.521660
48 32.963072
96 46.394017
145 61.407916
241 82.615611
353 110.237447
514 151.589157
723 200.998517
996 261.785082
1461 357.560166
2023 489.766584
2794 657.187314
3758 863.159038
4095 1160.879875
# end of file

40
usr-dcmtk368/dcm2xml.dtd Normal file
View File

@@ -0,0 +1,40 @@
<!-- Document Type Definition for DCMTK tools dcm2xml and xml2dcm.
Copyright (C) 2002-2013, OFFIS e.V.
All rights reserved. See COPYRIGHT file for details. -->
<!ELEMENT file-format ( meta-header, data-set ) >
<!ATTLIST file-format xmlns CDATA #IMPLIED >
<!ELEMENT meta-header ( element+ ) >
<!ATTLIST meta-header xfer NMTOKEN #REQUIRED >
<!ATTLIST meta-header name CDATA #IMPLIED >
<!ELEMENT data-set ( element | sequence )* >
<!ATTLIST data-set xfer NMTOKEN #REQUIRED >
<!ATTLIST data-set name CDATA #IMPLIED >
<!ELEMENT element ( #PCDATA ) >
<!ATTLIST element binary ( yes | no | hidden | base64 | file ) "no" >
<!ATTLIST element len NMTOKEN #IMPLIED >
<!ATTLIST element loaded ( yes | no ) "yes" >
<!ATTLIST element name CDATA #IMPLIED >
<!ATTLIST element tag CDATA #REQUIRED >
<!ATTLIST element vm NMTOKEN #IMPLIED >
<!ATTLIST element vr NMTOKEN #REQUIRED >
<!ELEMENT sequence ( item* | pixel-item* ) >
<!ATTLIST sequence card NMTOKEN #IMPLIED >
<!ATTLIST sequence len NMTOKEN #IMPLIED >
<!ATTLIST sequence name CDATA #IMPLIED >
<!ATTLIST sequence tag CDATA #REQUIRED >
<!ATTLIST sequence vr NMTOKEN #REQUIRED >
<!ELEMENT item ( element | sequence )* >
<!ATTLIST item card NMTOKEN #IMPLIED >
<!ATTLIST item len NMTOKEN #IMPLIED >
<!ATTLIST item offset NMTOKEN #IMPLIED >
<!ELEMENT pixel-item ( #PCDATA ) >
<!ATTLIST pixel-item binary ( yes | hidden | base64 | file ) "yes" >
<!ATTLIST pixel-item len NMTOKEN #IMPLIED >
<!ATTLIST pixel-item loaded ( yes | no ) "yes" >

5006
usr-dcmtk368/dicom.dic Normal file

File diff suppressed because it is too large Load Diff

173
usr-dcmtk368/diconde.dic Normal file
View File

@@ -0,0 +1,173 @@
#
# Copyright (C) 2010-2014, OFFIS e.V.
# All rights reserved. See COPYRIGHT file for details.
#
# This software and supporting documentation were developed by
#
# OFFIS e.V.
# R&D Division Health
# Escherweg 2
# D-26121 Oldenburg, Germany
#
#
# Module: dcmdata
#
# Author: Joerg Riesmeier
#
# Purpose: DICONDE data dictionary for the DICOM toolkit DCMTK
#
#
# Dictionary of Digital Imaging and Communication in Nondestructive
# Evaluation (DICONDE) tags. Please note that the file "dicom.dic"
# contains the non-private DICONDE tag definitions since they are now
# official part of the DICOM standard (beginning with 2011 edition).
#
# Each line represents an entry in the data dictionary. Each line
# has 5 fields (Tag, VR, Name, VM, Version). Entries need not be
# in ascending tag order.
#
# Entries may override existing entries.
#
# Each field must be separated by a single tab.
# The tag value may take one of three forms:
# (gggg,eeee)
# (gggg,"CREATOR",ee)
# (gggg,"CREATOR",eeee) [eeee >= 1000]
# The first form represents a standard tag with group and element number.
# The second form describes a private tag that may be used with different
# element numbers as reserved by the private creator element. The third
# form describes a private tag that may only occur with a certain fixed
# element number. In all cases, the tag values must be in hexadecimal.
#
# Comments have a '#' at the beginning of the line.
#
# Tag VR Name VM Version
#
(0008,0080) LO CompanyName 1 DICONDE10
(0008,0081) ST CompanyAddress 1 DICONDE10
(0008,0090) PN ComponentOwnerName 1 DICONDE10
(0008,1040) LO DepartmentName 1 DICONDE10
(0008,1048) PN InspectingCompanyName 1-n DICONDE10
(0008,1050) PN InspectorName 1-n DICONDE10
(0008,1060) PN CertifyingInspectorName 1-n DICONDE10
(0010,0010) PN ComponentName 1 DICONDE10
(0010,0020) LO ComponentIDNumber 1 DICONDE10
(0010,0030) DA ComponentManufacturingDate 1 DICONDE10
(0010,1000) LO OtherComponentIDs 1-n DICONDE10
(0010,1001) PN OtherComponentNames 1-n DICONDE10
(0010,2160) SH MaterialName 1 DICONDE10
(0010,4000) LT ComponentNotes 1 DICONDE10
(0018,1008) LO ScannerID 1 DICONDE10
(0032,4000) LT ExaminationNotes 1 DICONDE10
(0009,"astm.org/diconde/iod/ComponentStudy",20) DA ExpiryDate 1 DICONDE10
(0009,"astm.org/diconde/iod/ComponentSeries",10) ST ActualEnvironmentalConditions 1 DICONDE10
(0009,"astm.org/diconde/iod/ComponentSeries",40) ST EnvironmentalConditions 1 DICONDE10
(0011,"astm.org/diconde/iod/Component",23) ST CADFileFormat 1-n DICONDE10
(0011,"astm.org/diconde/iod/Component",24) ST ComponentRefSystem 1-n DICONDE10
(0011,"astm.org/diconde/iod/Component",25) ST ComponentManufacturingProcedure 1-n DICONDE10
(0011,"astm.org/diconde/iod/Component",28) ST ComponentManufacturer 1-n DICONDE10
(0011,"astm.org/diconde/iod/Component",30) DS Thickness 1-n DICONDE10
(0011,"astm.org/diconde/iod/Component",32) DS MaterialPipeDiameter 1-n DICONDE10
(0011,"astm.org/diconde/iod/Component",34) DS MaterialIsolationDiameter 1-n DICONDE10
(0011,"astm.org/diconde/iod/Component",42) ST MaterialGrade 1-n DICONDE10
(0011,"astm.org/diconde/iod/Component",44) ST MaterialPropertiesFileID 1-n DICONDE10
(0011,"astm.org/diconde/iod/Component",45) ST MaterialPropertiesFileFormat 1-n DICONDE10
(0011,"astm.org/diconde/iod/Component",46) LT MaterialNotes 1 DICONDE10
(0011,"astm.org/diconde/iod/Component",50) CS Shape 1 DICONDE10
(0011,"astm.org/diconde/iod/Component",52) CS CurvatureType 1 DICONDE10
(0011,"astm.org/diconde/iod/Component",54) DS OuterDiameter 1 DICONDE10
(0011,"astm.org/diconde/iod/Component",56) DS InnerDiameter 1 DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",02) SQ EvaluatorSequence 1 DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",04) IS EvaluatorNumber 1 DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",06) PN EvaluatorName 1 DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",08) IS EvaluationAttempt 1 DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",12) SQ IndicationSequence 1 DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",14) IS IndicationNumber 1 DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",16) SH IndicationLabel 1 DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",18) ST IndicationDesription 1 DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",1A) CS IndicationType 1-n DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",1C) CS IndicationDisposition 1 DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",1E) SQ IndicationROISequence 1 DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",20) CS IndicationROIGeometricType 1 DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",22) IS NumberOfROIContourPoints 1 DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",24) DS IndicationROIContourData 3-3n DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",26) CS IndicationROIContourPointUnits 3 DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",28) IS IndicationROIDimensionality 1 DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",30) SQ IndicationPhysicalPropertySequence 1 DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",32) SH PropertyLabel 1 DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",34) DS PropertyValue 1 DICONDE10
(0021,"astm.org/diconde/iod/NdeIndication",36) CS PropertyUnits 1 DICONDE10
(0021,"astm.org/diconde/iod/NDEGeometry",02) IS NumberOfAxes 1 DICONDE10
(0021,"astm.org/diconde/iod/NDEGeometry",04) SQ AxesSequence 1 DICONDE10
(0021,"astm.org/diconde/iod/NDEGeometry",06) ST AxisDescription 1 DICONDE10
(0021,"astm.org/diconde/iod/NDEGeometry",08) CS DataSetMapping 1 DICONDE10
(0021,"astm.org/diconde/iod/NDEGeometry",0A) IS AxisNumber 1 DICONDE10
(0021,"astm.org/diconde/iod/NDEGeometry",0C) CS AxisType 1 DICONDE10
(0021,"astm.org/diconde/iod/NDEGeometry",0E) CS AxisUnits 1 DICONDE10
(0021,"astm.org/diconde/iod/NDEGeometry",10) OB AxisValues 1 DICONDE10
(0021,"astm.org/diconde/iod/NDEGeometry",20) SQ TransformSequence 1 DICONDE10
(0021,"astm.org/diconde/iod/NDEGeometry",22) ST TransformDescription 1 DICONDE10
(0021,"astm.org/diconde/iod/NDEGeometry",24) IS NumberOfAxes 1 DICONDE10
(0021,"astm.org/diconde/iod/NDEGeometry",26) IS OrderOfAxes 1-n DICONDE10
(0021,"astm.org/diconde/iod/NDEGeometry",28) CS TransformedAxisUnits 1 DICONDE10
(0021,"astm.org/diconde/iod/NDEGeometry",2A) DS RotationAndScaleMatrix 1-n DICONDE10
(0021,"astm.org/diconde/iod/NDEGeometry",2C) DS TranslationMatrix 11 DICONDE10
# X-ray Computed Tomography (CT)
(0009,"astm.org/diconde/iod/NdeCTImage",02) IS LINACEnergy 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCTImage",04) IS LINACOutput 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtDetector",11) DS InternalDetectorFrameTime 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtDetector",12) DS NumberOfFramesIntegrated 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtDetector",20) SQ DetectorTemperatureSequence 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtDetector",22) DS SensorName 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtDetector",24) DS HorizontalOffset 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtDetector",26) DS VerticalOffset 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtDetector",28) DS Temperature 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtCalibrationData",40) SQ DarkCurrentSequence 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtCalibrationData",50) ox DarkCurrentCounts 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtCalibrationData",60) SQ GainCorrectionReferenceSequence 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtCalibrationData",70) ox AirCounts 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtCalibrationData",71) DS KVUsedinGainCalibration 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtCalibrationData",72) DS MAsUsedInGainCalibration 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtCalibrationData",73) DS NumberOfFrames 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtCalibrationData",74) LO FilterMaterialUsedInGainCalibration 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtCalibrationData",75) DS FilterThicknessUsedInGainCalibration 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtCalibrationData",76) DA DateOfGainCalibration 1-n DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtCalibrationData",77) TM TimeOfGainCalibration 1-n DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtCalibrationData",80) OB BadPixelImage 1 DICONDE10_CT
(0009,"astm.org/diconde/iod/NdeCtCalibrationData",99) LT CalibrationNotes 1 DICONDE10_CT
# Digital Radiographic (DR)
(0009,"astm.org/diconde/iod/NdeDxDetector",11) DS InternalDetectorFrameTime 1 DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxDetector",12) DS NumberOfFramesIntegrated 1 DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxDetector",20) SQ DetectorTemperatureSequence 1 DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxDetector",22) DS SensorName 1 DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxDetector",24) DS HorizontalOffset 1 DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxDetector",26) DS VerticalOffset 1 DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxDetector",28) DS Temperature 1 DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxCalibrationData",40) SQ DarkCurrentSequence 1 DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxCalibrationData",50) ox DarkCurrentCounts 1 DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxCalibrationData",60) SQ GainCorrectionReferenceSequence 1 DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxCalibrationData",70) ox AirCounts 1 DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxCalibrationData",71) DS KVUsedinGainCalibration 1 DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxCalibrationData",72) DS MAsUsedInGainCalibration 1 DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxCalibrationData",73) DS NumberOfFrames 1 DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxCalibrationData",74) LO FilterMaterialUsedInGainCalibration 1 DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxCalibrationData",75) DS FilterThicknessUsedInGainCalibration 1 DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxCalibrationData",76) DA DateOfGainCalibration 1-n DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxCalibrationData",77) TM TimeOfGainCalibration 1-n DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxCalibrationData",80) OB BadPixelImage 1 DICONDE10_DR
(0009,"astm.org/diconde/iod/NdeDxCalibrationData",99) LT CalibrationNotes 1 DICONDE10_DR
#
# end of diconde.dic
#

1025
usr-dcmtk368/dsr2xml.xsd Normal file

File diff suppressed because it is too large Load Diff

4
usr-dcmtk368/dumppat.txt Normal file
View File

@@ -0,0 +1,4 @@
--search PatientName
--search PatientID
--search PatientBirthDate
--search PatientSex

270
usr-dcmtk368/monitor.lut Normal file
View File

@@ -0,0 +1,270 @@
# Monitor characteristic file
# maximum DDL value
max 255
# ambient light (optional)
amb 1.0
# DDL LumVal
0 0.186260
1 0.199540
2 0.213000
3 0.226850
4 0.241260
5 0.256440
6 0.272560
7 0.289820
8 0.308410
9 0.328520
10 0.350340
11 0.374050
12 0.399850
13 0.427930
14 0.458480
15 0.491690
16 0.527740
17 0.566800
18 0.608900
19 0.654050
20 0.702250
21 0.753510
22 0.807840
23 0.865250
24 0.925730
25 0.989300
26 1.055950
27 1.125710
28 1.198560
29 1.274530
30 1.353610
31 1.435800
32 1.521130
33 1.609590
34 1.701190
35 1.795960
36 1.893890
37 1.995020
38 2.099340
39 2.206880
40 2.317650
41 2.431660
42 2.548930
43 2.669460
44 2.793280
45 2.920390
46 3.050810
47 3.184560
48 3.321650
49 3.462090
50 3.605910
51 3.753140
52 3.903820
53 4.057970
54 4.215620
55 4.376800
56 4.541540
57 4.709880
58 4.881840
59 5.057460
60 5.236750
61 5.419770
62 5.606520
63 5.797050
64 5.991380
65 6.189550
66 6.391550
67 6.597390
68 6.807060
69 7.020590
70 7.237950
71 7.459160
72 7.684220
73 7.913130
74 8.145890
75 8.382510
76 8.622980
77 8.867310
78 9.115500
79 9.367550
80 9.623470
81 9.883250
82 10.146910
83 10.414440
84 10.685870
85 10.961190
86 11.240410
87 11.523550
88 11.810600
89 12.101570
90 12.396480
91 12.695330
92 12.998130
93 13.304880
94 13.615600
95 13.930280
96 14.248940
97 14.571590
98 14.898230
99 15.228890
100 15.563570
101 15.902290
102 16.245070
103 16.591910
104 16.942840
105 17.297860
106 17.656990
107 18.020250
108 18.387640
109 18.759180
110 19.134890
111 19.514770
112 19.898850
113 20.287130
114 20.679590
115 21.076230
116 21.477030
117 21.881960
118 22.291010
119 22.704160
120 23.121390
121 23.542700
122 23.968050
123 24.397430
124 24.830830
125 25.268230
126 25.709610
127 26.154950
128 26.604230
129 27.057450
130 27.514600
131 27.975710
132 28.440770
133 28.909800
134 29.382810
135 29.859810
136 30.340810
137 30.825820
138 31.314850
139 31.807910
140 32.305020
141 32.806170
142 33.311390
143 33.820680
144 34.334050
145 34.851510
146 35.373040
147 35.898610
148 36.428200
149 36.961790
150 37.499360
151 38.040870
152 38.586320
153 39.135660
154 39.688880
155 40.245950
156 40.806860
157 41.371570
158 41.940060
159 42.512310
160 43.088300
161 43.668010
162 44.251470
163 44.838720
164 45.429800
165 46.024740
166 46.623600
167 47.226410
168 47.833210
169 48.444030
170 49.058920
171 49.677930
172 50.301070
173 50.928410
174 51.559970
175 52.195800
176 52.835940
177 53.480410
178 54.129180
179 54.782210
180 55.439460
181 56.100870
182 56.766410
183 57.436030
184 58.109700
185 58.787350
186 59.468950
187 60.154460
188 60.843840
189 61.537030
190 62.233990
191 62.934680
192 63.639060
193 64.347100
194 65.058820
195 65.774270
196 66.493510
197 67.216560
198 67.943490
199 68.674330
200 69.409130
201 70.147940
202 70.890790
203 71.637750
204 72.388850
205 73.144130
206 73.903650
207 74.667450
208 75.435570
209 76.208050
210 76.984850
211 77.765920
212 78.551230
213 79.340710
214 80.134330
215 80.932040
216 81.733790
217 82.539530
218 83.349220
219 84.162800
220 84.980240
221 85.801480
222 86.626480
223 87.455180
224 88.287560
225 89.123560
226 89.963230
227 90.806620
228 91.653780
229 92.504770
230 93.359640
231 94.218430
232 95.081200
233 95.948010
234 96.818900
235 97.693920
236 98.573140
237 99.456590
238 100.344340
239 101.236440
240 102.132930
241 103.033820
242 103.938850
243 104.847740
244 105.760200
245 106.675910
246 107.594590
247 108.515940
248 109.439670
249 110.365470
250 111.293050
251 112.222110
252 113.152360
253 114.083500
254 115.015230
255 115.947260
# eof of file

274
usr-dcmtk368/philips.lut Normal file
View File

@@ -0,0 +1,274 @@
# Philips Medical Systems Presentation LUT
# Difference between GSDF and Philips Standard Display Curve
# y = 523.31018 * (1 - exp(-x * 0.0026257106)), with x = 0..255
# number of entries (x,y)
count 256
# maximum x value (optional)
#xMax 255
# maximum y value (optional)
#yMax 255
# table data
# x y
0 0
1 1.372258721
2 2.740919014
3 4.105990316
4 5.467482036
5 6.825403563
6 8.179764257
7 9.530573457
8 10.87784048
9 12.2215746
10 13.5617851
11 14.8984812
12 16.23167214
13 17.56136709
14 18.88757523
15 20.21030569
16 21.52956761
17 22.84537007
18 24.15772214
19 25.46663288
20 26.7721113
21 28.07416642
22 29.37280719
23 30.66804259
24 31.95988153
25 33.24833293
26 34.53340566
27 35.81510859
28 37.09345055
29 38.36844037
30 39.64008681
31 40.90839867
32 42.17338467
33 43.43505354
34 44.69341397
35 45.94847466
36 47.20024423
37 48.44873134
38 49.69394458
39 50.93589254
40 52.17458378
41 53.41002684
42 54.64223024
43 55.87120247
44 57.09695201
45 58.31948731
46 59.5388168
47 60.75494888
48 61.96789194
49 63.17765434
50 64.38424442
51 65.58767049
52 66.78794087
53 67.98506381
54 69.17904758
55 70.36990041
56 71.5576305
57 72.74224605
58 73.92375522
59 75.10216616
60 76.27748699
61 77.44972582
62 78.61889072
63 79.78498977
64 80.94803099
65 82.1080224
66 83.26497201
67 84.41888779
68 85.5697777
69 86.71764966
70 87.8625116
71 89.00437141
72 90.14323695
73 91.27911609
74 92.41201665
75 93.54194644
76 94.66891326
77 95.79292486
78 96.91398901
79 98.03211343
80 99.14730583
81 100.2595739
82 101.3689253
83 102.4753677
84 103.5789087
85 104.6795559
86 105.777317
87 106.8721994
88 107.9642107
89 109.0533585
90 110.1396503
91 111.2230935
92 112.3036956
93 113.3814641
94 114.4564064
95 115.52853
96 116.5978421
97 117.6643502
98 118.7280617
99 119.7889838
100 120.8471239
101 121.9024892
102 122.9550871
103 124.0049249
104 125.0520096
105 126.0963487
106 127.1379492
107 128.1768183
108 129.2129633
109 130.2463912
110 131.2771091
111 132.3051243
112 133.3304437
113 134.3530745
114 135.3730237
115 136.3902983
116 137.4049053
117 138.4168517
118 139.4261446
119 140.4327908
120 141.4367973
121 142.4381711
122 143.436919
123 144.4330479
124 145.4265647
125 146.4174762
126 147.4057893
127 148.3915107
128 149.3746474
129 150.355206
130 151.3331933
131 152.3086161
132 153.281481
133 154.2517949
134 155.2195643
135 156.1847959
136 157.1474965
137 158.1076726
138 159.0653309
139 160.0204779
140 160.9731203
141 161.9232646
142 162.8709174
143 163.8160852
144 164.7587745
145 165.6989918
146 166.6367436
147 167.5720364
148 168.5048766
149 169.4352707
150 170.363225
151 171.2887459
152 172.2118399
153 173.1325133
154 174.0507724
155 174.9666237
156 175.8800733
157 176.7911276
158 177.6997929
159 178.6060754
160 179.5099814
161 180.4115171
162 181.3106888
163 182.2075025
164 183.1019647
165 183.9940812
166 184.8838585
167 185.7713024
168 186.6564193
169 187.5392152
170 188.4196961
171 189.2978682
172 190.1737374
173 191.04731
174 191.9185917
175 192.7875888
176 193.6543071
177 194.5187526
178 195.3809313
179 196.2408492
180 197.0985121
181 197.953926
182 198.8070968
183 199.6580304
184 200.5067325
185 201.3532092
186 202.1974661
187 203.0395092
188 203.8793443
189 204.716977
190 205.5524133
191 206.3856588
192 207.2167193
193 208.0456006
194 208.8723083
195 209.6968482
196 210.5192259
197 211.3394471
198 212.1575175
199 212.9734427
200 213.7872283
201 214.59888
202 215.4084032
203 216.2158037
204 217.021087
205 217.8242586
206 218.6253241
207 219.424289
208 220.2211588
209 221.0159389
210 221.808635
211 222.5992523
212 223.3877965
213 224.1742729
214 224.958687
215 225.7410441
216 226.5213496
217 227.299609
218 228.0758276
219 228.8500107
220 229.6221638
221 230.392292
222 231.1604007
223 231.9264953
224 232.6905809
225 233.452663
226 234.2127466
227 234.9708371
228 235.7269397
229 236.4810596
230 237.2332019
231 237.983372
232 238.7315749
233 239.4778158
234 240.2220999
235 240.9644323
236 241.7048181
237 242.4432624
238 243.1797702
239 243.9143468
240 244.6469971
241 245.3777262
242 246.1065392
243 246.833441
244 247.5584367
245 248.2815312
246 249.0027296
247 249.7220368
248 250.4394578
249 251.1549976
250 251.868661
251 252.580453
252 253.2903784
253 253.9984423
254 254.7046494
255 255.4090047
# eof

38
usr-dcmtk368/printer.lut Normal file
View File

@@ -0,0 +1,38 @@
# Printer characteristic file
# maximum DDL value
max 255
# illumination (optional)
lum 2000
# reflected ambient light (optional)
amb 10
# order of the polynomial curve fitting algorithm (optional)
ord 5
# DDL OD Val
0 3.00
16 2.40
33 2.09
51 1.86
67 1.68
84 1.52
102 1.37
119 1.24
135 1.10
153 0.97
170 0.85
187 0.72
204 0.59
221 0.46
238 0.33
255 0.19
# eof of file

3043
usr-dcmtk368/private.dic Normal file

File diff suppressed because it is too large Load Diff

91
usr-dcmtk368/report.css Normal file
View File

@@ -0,0 +1,91 @@
/* Copyright (C) 2000-2010, OFFIS e.V.
All rights reserved. See COPYRIGHT file for details.
Sample CSS for HTML output of "dsr2html"
*/
body {
background-color: #dddddd;
font-family: sans-serif;
}
h1, h2, h3, h4, h5, h6 {
background-color: #000099;
color: white;
width: 100%;
}
h1 {
padding: 4px;
font-size: x-large;
font-weight: bold;
}
h2 {
padding: 3px;
font-size: large;
}
h3, h4, h5, h6 {
padding: 2px;
}
h4, h5, h6 {
font-size: medium;
}
h2 a[name] {
color: white;
text-decoration: none;
}
div {
background-color: white;
text-align: justify;
}
div small {
width: 100%;
color: black;
text-align: left;
}
td {
background-color: #ccccff;
font-family: sans-serif;
padding: 4px;
}
a[href] {
color: maroon;
}
a:hover {
color: red;
}
a[name]:hover {
text-decoration: underline;
}
div.footnote {
background-color: #dddddd;
color: gray;
}
div.footnote a, div.footnote small {
color: gray;
}
div.footnote a:hover {
color: black;
}
span.under {
text-decoration: underline;
}
hr {
color: silver;
background: transparent;
border: thin;
}

104
usr-dcmtk368/reportx.css Normal file
View File

@@ -0,0 +1,104 @@
/* Copyright (C) 2000-2010, OFFIS e.V.
All rights reserved. See COPYRIGHT file for details.
Sample CSS for XHTML output of "dsr2html"
*/
body {
background-color: #dddddd;
font-family: sans-serif;
}
h1, h2, h3, h4, h5, h6 {
background-color: #000099;
color: white;
width: 100%;
}
h1 {
padding: 4px;
font-size: x-large;
font-weight: bold;
}
h2 {
padding: 3px;
font-size: large;
}
h3, h4, h5, h6 {
padding: 2px;
}
h4, h5, h6 {
font-size: medium;
}
h2 a[id] {
color: white;
text-decoration: none;
}
td {
background-color: #ccccff;
font-family: sans-serif;
padding: 4px;
}
a[href] {
color: maroon;
}
a:hover {
color: red;
}
a[id]:hover {
text-decoration: underline;
}
div.para {
background-color: white;
text-align: justify;
margin-bottom: 1em;
}
div.small {
width: 100%;
color: black;
text-align: left;
font-size: small;
}
div.footnote {
background-color: #dddddd;
color: gray;
font-size: small;
}
div.footnote a {
color: gray;
}
div.footnote a:hover {
color: black;
}
span.under, span.relation, span.date, span.time, span.datetime, span.pname, span.num, span.code {
text-decoration: underline;
}
span.observe {
color: gray;
font-size: small;
}
span.super {
font-size: x-small;
vertical-align: super;
}
hr {
color: silver;
background: transparent;
border: thin;
}

34
usr-dcmtk368/scanner.lut Normal file
View File

@@ -0,0 +1,34 @@
# Scanner characteristic file
# maximum DDL value
max 4095
# illumination (optional)
lum 2000
# reflected ambient light (optional)
amb 10
# DDL OD Val
0 3.10
16 2.46
32 2.17
48 1.94
96 1.74
145 1.59
241 1.44
353 1.30
514 1.15
723 1.02
996 0.90
1461 0.76
2023 0.62
2794 0.49
3758 0.37
4095 0.24
# eof of file