@radicalimaging/static-wado-creator 1.6.10 → 1.6.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/index.js +84817 -54902
  2. package/lib/DeleteStudy.js +9 -14
  3. package/lib/RejectInstance.js +4 -15
  4. package/lib/StaticWado.js +92 -147
  5. package/lib/createMain.js +3 -3
  6. package/lib/createPart10.js +19 -23
  7. package/lib/createThumbnail.js +27 -45
  8. package/lib/deleteMain.js +2 -2
  9. package/lib/groupMain.js +2 -2
  10. package/lib/index.js +6 -6
  11. package/lib/indexMain.js +2 -2
  12. package/lib/instanceMain.js +2 -2
  13. package/lib/metadataMain.js +2 -2
  14. package/lib/mkdicomwebConfig.js +157 -165
  15. package/lib/model/TagLists.js +5 -17
  16. package/lib/model/uids.js +29 -29
  17. package/lib/operation/InstanceDeduplicate.js +14 -19
  18. package/lib/operation/ScanStudy.js +11 -18
  19. package/lib/operation/StudyData.js +87 -156
  20. package/lib/operation/ThumbnailService.js +29 -54
  21. package/lib/operation/adapter/decodeImage.js +2 -2
  22. package/lib/operation/adapter/getImageInfo.js +7 -8
  23. package/lib/operation/adapter/transcodeImage.js +95 -146
  24. package/lib/operation/extractImageFrames.js +13 -17
  25. package/lib/operation/getDataSet.js +9 -43
  26. package/lib/operation/getEncapsulatedImageFrame.js +7 -19
  27. package/lib/operation/getNumberOfFrames.js +2 -2
  28. package/lib/operation/getUncompressedImageFrame.js +2 -10
  29. package/lib/operation/getVR.js +5 -5
  30. package/lib/operation/getValue.js +42 -65
  31. package/lib/operation/validateMetadata.js +4 -4
  32. package/lib/program/index.js +2 -5
  33. package/lib/rejectMain.js +2 -2
  34. package/lib/serverMain.js +8 -14
  35. package/lib/util/IdCreator.js +8 -17
  36. package/lib/util/adaptProgramOpts.js +2 -2
  37. package/lib/util/compressionOptionParser.js +5 -14
  38. package/lib/util/resultsReport.ts +67 -68
  39. package/lib/writer/CompleteStudyWriter.js +24 -37
  40. package/lib/writer/DeduplicateWriter.js +7 -8
  41. package/lib/writer/ExpandUriPath.js +3 -5
  42. package/lib/writer/HashDataWriter.js +18 -18
  43. package/lib/writer/ImageFrameWriter.js +20 -33
  44. package/lib/writer/MultipartHeader.js +1 -1
  45. package/lib/writer/RawDicomWriter.js +12 -13
  46. package/lib/writer/ThumbnailWriter.js +2 -2
  47. package/lib/writer/VideoWriter.js +23 -34
  48. package/lib/writer/WriteMultipart.js +4 -6
  49. package/lib/writer/WriteStream.js +14 -20
  50. package/package.json +1 -1
  51. package/lib/writer/static-dicomweb.code-workspace +0 -8
@@ -1,16 +1,16 @@
1
- const ConfigPoint = require("config-point");
2
- const { staticWadoConfig } = require("@radicalimaging/static-wado-util");
3
- const createMain = require("./createMain");
4
- const createPart10 = require("./createPart10");
5
- const createThumbnail = require("./createThumbnail");
6
- const deleteMain = require("./deleteMain");
7
- const rejectMain = require("./rejectMain");
8
- const serverMain = require("./serverMain");
9
- const instanceMain = require("./instanceMain");
10
- const indexMain = require("./indexMain");
11
- const groupMain = require("./groupMain");
12
- const metadataMain = require("./metadataMain");
13
- const compressionOptionParser = require("./util/compressionOptionParser");
1
+ const ConfigPoint = require('config-point');
2
+ const { staticWadoConfig } = require('@radicalimaging/static-wado-util');
3
+ const createMain = require('./createMain');
4
+ const createPart10 = require('./createPart10');
5
+ const createThumbnail = require('./createThumbnail');
6
+ const deleteMain = require('./deleteMain');
7
+ const rejectMain = require('./rejectMain');
8
+ const serverMain = require('./serverMain');
9
+ const instanceMain = require('./instanceMain');
10
+ const indexMain = require('./indexMain');
11
+ const groupMain = require('./groupMain');
12
+ const metadataMain = require('./metadataMain');
13
+ const compressionOptionParser = require('./util/compressionOptionParser');
14
14
 
15
15
  /**
16
16
  * Defines the basic configuration values for the dicomwebserver component. See the README for more details.
@@ -24,318 +24,310 @@ const { mkdicomwebConfig } = ConfigPoint.register({
24
24
  isGroup: true,
25
25
  options: [
26
26
  {
27
- key: "-c <configFile.json5>",
28
- description: "Use an alternate configuration file",
29
- defaultValue: "~/static-wado.json5",
27
+ key: '-c <configFile.json5>',
28
+ description: 'Use an alternate configuration file',
29
+ defaultValue: '~/static-wado.json5',
30
30
  },
31
31
  {
32
- key: "--clean",
33
- description:
34
- "Clean the outputs before generating/starting to write new values.",
32
+ key: '--clean',
33
+ description: 'Clean the outputs before generating/starting to write new values.',
35
34
  defaultValue: false,
36
35
  },
37
36
  {
38
- key: "-d, --deployments <listvalue...>",
39
- description:
40
- "List of deployments from configuration to deploy to. Separated by space.",
37
+ key: '-d, --deployments <listvalue...>',
38
+ description: 'List of deployments from configuration to deploy to. Separated by space.',
41
39
  defaultValue: undefined,
42
40
  },
43
41
  {
44
- key: "--no-notifications",
45
- description: "Turns off notifications",
42
+ key: '--no-notifications',
43
+ description: 'Turns off notifications',
46
44
  },
47
45
  {
48
- key: "--delete",
49
- description: "Delete the imported instances",
46
+ key: '--delete',
47
+ description: 'Delete the imported instances',
50
48
  defaultValue: false,
51
49
  },
52
50
  {
53
- key: "--lossy",
54
- description: "Generate lossy instances instead of lossless",
51
+ key: '--lossy',
52
+ description: 'Generate lossy instances instead of lossless',
55
53
  defaultValue: false,
56
54
  },
57
55
  {
58
- key: "--alternate <type>",
56
+ key: '--alternate <type>',
59
57
  description:
60
- "Generates an alternate representaton of the image generally in the /lossy sub-directory",
61
- choices: ["jhc", "jls", "jhcLossless", "jlsLossless"],
58
+ 'Generates an alternate representaton of the image generally in the /lossy sub-directory',
59
+ choices: ['jhc', 'jls', 'jhcLossless', 'jlsLossless'],
62
60
  },
63
61
  {
64
- key: "--alternate-thumbnail",
65
- description: "Generates a thumbnail for the alternate representation",
62
+ key: '--alternate-thumbnail',
63
+ description: 'Generates a thumbnail for the alternate representation',
66
64
  },
67
65
  {
68
- key: "--alternate-name <dir>",
69
- description: "Uses a given sub directory name",
70
- defaultValue: "lossy",
66
+ key: '--alternate-name <dir>',
67
+ description: 'Uses a given sub directory name',
68
+ defaultValue: 'lossy',
71
69
  },
72
70
  {
73
- key: "-v, --verbose",
74
- description: "Write verbose output",
71
+ key: '-v, --verbose',
72
+ description: 'Write verbose output',
75
73
  defaultValue: false,
76
74
  },
77
75
  {
78
- key: "--show-progress",
79
- description: "Show progress during DICOM file processing",
76
+ key: '--show-progress',
77
+ description: 'Show progress during DICOM file processing',
80
78
  },
81
79
  {
82
- key: "-t, --content-type <type>",
80
+ key: '-t, --content-type <type>',
83
81
  description:
84
82
  'Destination type to compress to (choices: "jpeg", "jls", "lei", "jls-lossy", "jhc", "jxl" or DICOM Transfer Syntax UID - default: "jls")',
85
- defaultValue: "jls",
83
+ defaultValue: 'jls',
86
84
  customParser: compressionOptionParser,
87
85
  },
88
86
  {
89
- key: "--encapsulated-image",
87
+ key: '--encapsulated-image',
90
88
  description:
91
- "Avoid encapsulating the image frame. Writes with the extension and without multipart",
89
+ 'Avoid encapsulating the image frame. Writes with the extension and without multipart',
92
90
  },
93
91
  {
94
- key: "-e, --no-encapsulated-image",
92
+ key: '-e, --no-encapsulated-image',
95
93
  description:
96
- "Avoid encapsulating the image frame. Writes with the extension and without multipart",
94
+ 'Avoid encapsulating the image frame. Writes with the extension and without multipart',
97
95
  },
98
96
  {
99
- key: "--single-part-image",
100
- description: "Writes single part image data",
97
+ key: '--single-part-image',
98
+ description: 'Writes single part image data',
101
99
  },
102
100
  {
103
- key: "--no-single-part-image",
104
- description: "Writes single part image data",
101
+ key: '--no-single-part-image',
102
+ description: 'Writes single part image data',
105
103
  },
106
104
  {
107
- key: "-m, --maximum-inline-public-length <value>",
108
- description: "Maximum length of public binary data",
105
+ key: '-m, --maximum-inline-public-length <value>',
106
+ description: 'Maximum length of public binary data',
109
107
  defaultValue: 128 * 1024 + 2,
110
108
  },
111
109
  {
112
- key: "-M, --maximum-inline-private-length <value>",
113
- description: "Maximum length of private binary data",
110
+ key: '-M, --maximum-inline-private-length <value>',
111
+ description: 'Maximum length of private binary data',
114
112
  defaultValue: 64,
115
113
  },
116
114
  {
117
- key: "-r, --recompress <listvalue...>",
118
- description: "List of types to recompress separated by space",
119
- defaultValue: ["uncompressed", "jp2", "jls", "jll"],
115
+ key: '-r, --recompress <listvalue...>',
116
+ description: 'List of types to recompress separated by space',
117
+ defaultValue: ['uncompressed', 'jp2', 'jls', 'jll'],
120
118
  choices: [
121
- "uncompressed",
122
- "jp2",
123
- "jpeg",
124
- "jpeglossless",
125
- "rle",
126
- "jph",
127
- "jls",
128
- "true",
129
- "none",
119
+ 'uncompressed',
120
+ 'jp2',
121
+ 'jpeg',
122
+ 'jpeglossless',
123
+ 'rle',
124
+ 'jph',
125
+ 'jls',
126
+ 'true',
127
+ 'none',
130
128
  ],
131
129
  },
132
130
  {
133
- key: "--recompress-color <listvalue...>",
134
- description:
135
- "List of types to recompress for color images, separated by space",
136
- defaultValue: ["uncompressed"],
131
+ key: '--recompress-color <listvalue...>',
132
+ description: 'List of types to recompress for color images, separated by space',
133
+ defaultValue: ['uncompressed'],
137
134
  choices: [
138
- "uncompressed",
139
- "jpeg",
140
- "jp2",
141
- "jpeglossless",
142
- "rle",
143
- "jph",
144
- "jls",
145
- "true",
146
- "none",
135
+ 'uncompressed',
136
+ 'jpeg',
137
+ 'jp2',
138
+ 'jpeglossless',
139
+ 'rle',
140
+ 'jph',
141
+ 'jls',
142
+ 'true',
143
+ 'none',
147
144
  ],
148
145
  },
149
146
  {
150
- key: "-f, --force",
151
- description: "Force the update even if the SOP exists",
147
+ key: '-f, --force',
148
+ description: 'Force the update even if the SOP exists',
152
149
  defaultValue: false,
153
150
  },
154
151
  {
155
- key: "--delete-input",
156
- description: "Deletes successful input files",
152
+ key: '--delete-input',
153
+ description: 'Deletes successful input files',
157
154
  defaultValue: false,
158
155
  },
159
156
  {
160
- key: "--delete-failed",
161
- description: "Deletes unsuccessful input files",
157
+ key: '--delete-failed',
158
+ description: 'Deletes unsuccessful input files',
162
159
  defaultValue: false,
163
160
  },
164
161
  {
165
- key: "--recompress-thumb <listvalue...>",
166
- description: "List of types to recompress thumb separated by space",
167
- defaultValue: ["uncompressed", "jp2"],
168
- choices: ["uncompressed", "jp2", "jpeglossless", "rle", "none"],
162
+ key: '--recompress-thumb <listvalue...>',
163
+ description: 'List of types to recompress thumb separated by space',
164
+ defaultValue: ['uncompressed', 'jp2'],
165
+ choices: ['uncompressed', 'jp2', 'jpeglossless', 'rle', 'none'],
169
166
  },
170
167
  {
171
- key: "--no-recompress",
172
- description: "Force no recompression",
168
+ key: '--no-recompress',
169
+ description: 'Force no recompression',
173
170
  defaultValue: false,
174
171
  },
175
172
  {
176
- key: "--no-recompress-thumb",
177
- description: "Force no recompression thumbnail",
173
+ key: '--no-recompress-thumb',
174
+ description: 'Force no recompression thumbnail',
178
175
  defaultValue: false,
179
176
  },
180
177
  {
181
- key: "--no-thumb",
182
- description: "Skip generating thumbnails using CS3D internal render",
178
+ key: '--no-thumb',
179
+ description: 'Skip generating thumbnails using CS3D internal render',
183
180
  defaultValue: true,
184
181
  },
185
182
  {
186
- key: "--dcm2jpg",
187
- description: "Use dcm2jpg for thumbnail image generation",
183
+ key: '--dcm2jpg',
184
+ description: 'Use dcm2jpg for thumbnail image generation',
188
185
  defaultValue: false,
189
186
  },
190
187
  {
191
- key: "--rendered",
192
- description: "Use dcm2jpg to generate a rendered PNG image",
188
+ key: '--rendered',
189
+ description: 'Use dcm2jpg to generate a rendered PNG image',
193
190
  defaultValue: false,
194
191
  },
195
192
  {
196
- key: "-T, --color-content-type <value>",
197
- description: "Colour content type",
198
- defaultValue: "jpeg",
193
+ key: '-T, --color-content-type <value>',
194
+ description: 'Colour content type',
195
+ defaultValue: 'jpeg',
199
196
  },
200
197
  {
201
- key: "--path-deduplicated <path>",
202
- description:
203
- "Set the deduplicate data directory path (relative to dir)",
204
- defaultValue: "deduplicated",
198
+ key: '--path-deduplicated <path>',
199
+ description: 'Set the deduplicate data directory path (relative to dir)',
200
+ defaultValue: 'deduplicated',
205
201
  },
206
202
  {
207
- key: "--path-instances <path>",
208
- description: "Set the instances directory path (relative to dir)",
209
- defaultValue: "instances",
203
+ key: '--path-instances <path>',
204
+ description: 'Set the instances directory path (relative to dir)',
205
+ defaultValue: 'instances',
210
206
  },
211
207
  {
212
- key: "--store-multipart-bulk-data",
213
- description: "Use multipart encoding for non image frame bulkdata",
208
+ key: '--store-multipart-bulk-data',
209
+ description: 'Use multipart encoding for non image frame bulkdata',
214
210
  defaultValue: false,
215
211
  },
216
212
  {
217
- key: "--prepend-bulk-data-uri <value>",
213
+ key: '--prepend-bulk-data-uri <value>',
218
214
  description:
219
- "Prepend bulkdata uri (ex. to use absolute Uri like http://host:3000/dicomweb)",
220
- defaultValue: "",
215
+ 'Prepend bulkdata uri (ex. to use absolute Uri like http://host:3000/dicomweb)',
216
+ defaultValue: '',
221
217
  },
222
218
  {
223
- key: "--expand-bulk-data-uri",
219
+ key: '--expand-bulk-data-uri',
224
220
  description:
225
- "expand bulkdata relative uri to use full relative path (should also be set when using --prepend-bulk-data-uri)",
221
+ 'expand bulkdata relative uri to use full relative path (should also be set when using --prepend-bulk-data-uri)',
226
222
  defaultValue: false,
227
223
  },
228
224
  {
229
- key: "--quiet",
230
- description: "Run quietly, minimizing extraneous output",
225
+ key: '--quiet',
226
+ description: 'Run quietly, minimizing extraneous output',
231
227
  defaultValue: false,
232
228
  },
233
229
  {
234
- key: "--multipart",
235
- description: "Add a multipart result output",
230
+ key: '--multipart',
231
+ description: 'Add a multipart result output',
236
232
  defaultValue: false,
237
233
  },
238
234
  {
239
- key: "--no-verify",
240
- description: "Verify",
235
+ key: '--no-verify',
236
+ description: 'Verify',
241
237
  defaultValue: true,
242
238
  },
243
239
  {
244
- key: "-o, --dir <value>",
245
- description: "Set output directory",
240
+ key: '-o, --dir <value>',
241
+ description: 'Set output directory',
246
242
  defaultValue: {
247
- configOperation: "reference",
248
- source: "staticWadoConfig",
249
- reference: "rootDir",
243
+ configOperation: 'reference',
244
+ source: 'staticWadoConfig',
245
+ reference: 'rootDir',
250
246
  },
251
247
  },
252
248
  {
253
- key: "--sop-instance-uid <value>",
254
- description:
255
- "Choose sop instances to run against (only for instance runs)",
249
+ key: '--sop-instance-uid <value>',
250
+ description: 'Choose sop instances to run against (only for instance runs)',
256
251
  },
257
252
  {
258
- key: "--series-instance-uid <value>",
259
- description:
260
- "Choose series instances to run against (only for instance runs)",
253
+ key: '--series-instance-uid <value>',
254
+ description: 'Choose series instances to run against (only for instance runs)',
261
255
  },
262
256
 
263
257
  {
264
- key: "--hash-study-uid-path",
265
- description: "Enable hashing of studyUID folder structure",
258
+ key: '--hash-study-uid-path',
259
+ description: 'Enable hashing of studyUID folder structure',
266
260
  defaultValue: false,
267
261
  },
268
262
  ],
269
263
  programs: [
270
264
  {
271
- command: "create",
265
+ command: 'create',
272
266
  isDefault: true,
273
- arguments: ["input"],
267
+ arguments: ['input'],
274
268
  main: createMain,
275
269
  helpDescription:
276
- "Make DICOMweb query and metadata from binary Part 10 DICOM files. Does a full read\n" +
277
- "of deduplicated files each time a study instance UID is found, and only updates\n" +
278
- "those studies having at least one ",
270
+ 'Make DICOMweb query and metadata from binary Part 10 DICOM files. Does a full read\n' +
271
+ 'of deduplicated files each time a study instance UID is found, and only updates\n' +
272
+ 'those studies having at least one ',
279
273
  },
280
274
  {
281
- command: "server",
275
+ command: 'server',
282
276
  main: serverMain,
283
- helpDescription:
284
- "Run server deploy instances single threaded/separated exec process",
277
+ helpDescription: 'Run server deploy instances single threaded/separated exec process',
285
278
  },
286
279
  {
287
- command: "part10",
288
- arguments: ["studyUID"],
280
+ command: 'part10',
281
+ arguments: ['studyUID'],
289
282
  main: createPart10,
290
- helpDescription: "Store the specified study as part 10 data",
283
+ helpDescription: 'Store the specified study as part 10 data',
291
284
  },
292
285
  {
293
- command: "index",
286
+ command: 'index',
294
287
  main: indexMain,
295
- helpDescription: "Recreate the index for the DICOMweb data.",
288
+ helpDescription: 'Recreate the index for the DICOMweb data.',
296
289
  },
297
290
  {
298
- command: "thumbnail",
291
+ command: 'thumbnail',
299
292
  main: createThumbnail,
300
- helpDescription: "Create a thumbnail for the specified image",
293
+ helpDescription: 'Create a thumbnail for the specified image',
301
294
  options: [
302
295
  {
303
- key: "--series-thumbnail",
304
- description: "Generate a series thumbnail instead of instance",
296
+ key: '--series-thumbnail',
297
+ description: 'Generate a series thumbnail instead of instance',
305
298
  },
306
299
  ],
307
300
  },
308
301
  {
309
- command: "instance",
310
- arguments: ["input"],
302
+ command: 'instance',
303
+ arguments: ['input'],
311
304
  main: instanceMain,
312
305
  helpDescription:
313
306
  "Make instance level DICOMweb metadata and bulkdata, but don't group or write series metadata",
314
307
  },
315
308
  {
316
- command: "group",
317
- arguments: ["input"],
309
+ command: 'group',
310
+ arguments: ['input'],
318
311
  main: groupMain,
319
312
  helpDescription:
320
- "Group instance level metadata into deduplicated data.\nDeletes instance level deduplicated information once it is confirmed written.",
313
+ 'Group instance level metadata into deduplicated data.\nDeletes instance level deduplicated information once it is confirmed written.',
321
314
  },
322
315
  {
323
- command: "metadata",
324
- arguments: ["input"],
316
+ command: 'metadata',
317
+ arguments: ['input'],
325
318
  main: metadataMain,
326
319
  helpDescription:
327
- "Write the metadata object (series and study details) from the grouped deduplicated data.",
320
+ 'Write the metadata object (series and study details) from the grouped deduplicated data.',
328
321
  },
329
322
  {
330
- command: "delete",
323
+ command: 'delete',
331
324
  main: deleteMain,
332
- helpDescription:
333
- "Delete the given study, series or instance (not yet implemented)",
325
+ helpDescription: 'Delete the given study, series or instance (not yet implemented)',
334
326
  },
335
327
  {
336
- command: "reject <studyUID...>",
328
+ command: 'reject <studyUID...>',
337
329
  main: rejectMain,
338
- helpDescription: "Reject the specified series",
330
+ helpDescription: 'Reject the specified series',
339
331
  },
340
332
  ],
341
333
  },
@@ -1,25 +1,13 @@
1
- const hashFactory = require("node-object-hash");
2
- const { Tags } = require("@radicalimaging/static-wado-util");
1
+ const hashFactory = require('node-object-hash');
2
+ const { Tags } = require('@radicalimaging/static-wado-util');
3
3
 
4
4
  /* eslint "no-param-reassign": "off" */
5
5
 
6
6
  const hasher = hashFactory.hasher();
7
7
 
8
8
  const { PatientID, PatientName, IssuerOfPatientID } = Tags;
9
- const {
10
- StudyDescription,
11
- AccessionNumber,
12
- StudyInstanceUID,
13
- StudyDate,
14
- StudyTime,
15
- } = Tags;
16
- const {
17
- SeriesDescription,
18
- SeriesNumber,
19
- SeriesInstanceUID,
20
- SeriesDate,
21
- SeriesTime,
22
- } = Tags;
9
+ const { StudyDescription, AccessionNumber, StudyInstanceUID, StudyDate, StudyTime } = Tags;
10
+ const { SeriesDescription, SeriesNumber, SeriesInstanceUID, SeriesDate, SeriesTime } = Tags;
23
11
 
24
12
  const { DeduppedHash, DeduppedRef, DeduppedType } = Tags;
25
13
 
@@ -153,7 +141,7 @@ const TagSets = {
153
141
  extract: (data, type, tagSet, options) => {
154
142
  const ret = {};
155
143
  const { remove, hashRef } = options || {};
156
- tagSet.forEach((tag) => {
144
+ tagSet.forEach(tag => {
157
145
  const value = data[tag];
158
146
  if (value) {
159
147
  ret[tag] = value;
package/lib/model/uids.js CHANGED
@@ -1,4 +1,4 @@
1
- const octetStream = "application/octet-stream";
1
+ const octetStream = 'application/octet-stream';
2
2
  const uncompressed = {
3
3
  uncompressed: true,
4
4
  gzip: true,
@@ -8,41 +8,41 @@ const uncompressed = {
8
8
  /**
9
9
  * @see {@link https://dicom.nema.org/medical/dicom/current/output/chtml/part18/sect_8.7.3.3.2.html}
10
10
  */
11
- const jpeg = "image/jpeg";
12
- const jls = "image/jls";
13
- const jll = "image/jll";
14
- const jxl = "image/x-jxl";
15
- const htj2k = "image/jphc";
16
- const jp2 = "image/jp2";
17
- const rle = "image/dicom-rle";
11
+ const jpeg = 'image/jpeg';
12
+ const jls = 'image/jls';
13
+ const jll = 'image/jll';
14
+ const jxl = 'image/x-jxl';
15
+ const htj2k = 'image/jphc';
16
+ const jp2 = 'image/jp2';
17
+ const rle = 'image/dicom-rle';
18
18
 
19
19
  const uids = {
20
- "1.2.840.10008.1.2": uncompressed,
21
- "1.2.840.10008.1.2.1": uncompressed,
22
- "1.2.840.10008.1.2.1.99": uncompressed,
23
- "1.2.840.10008.1.2.2": uncompressed,
24
- "1.2.840.10008.1.2.4.50": {
20
+ '1.2.840.10008.1.2': uncompressed,
21
+ '1.2.840.10008.1.2.1': uncompressed,
22
+ '1.2.840.10008.1.2.1.99': uncompressed,
23
+ '1.2.840.10008.1.2.2': uncompressed,
24
+ '1.2.840.10008.1.2.4.50': {
25
25
  contentType: jpeg,
26
26
  lossy: true,
27
- extension: ".jpeg",
27
+ extension: '.jpeg',
28
28
  },
29
- "1.2.840.10008.1.2.4.51": { contentType: jpeg, lossy: true },
30
- "1.2.840.10008.1.2.4.57": { contentType: jpeg },
31
- "1.2.840.10008.1.2.4.70": { contentType: jll, extension: ".jll" },
32
- "1.2.840.10008.1.2.4.140": { contentType: jxl, extension: ".jxl" },
29
+ '1.2.840.10008.1.2.4.51': { contentType: jpeg, lossy: true },
30
+ '1.2.840.10008.1.2.4.57': { contentType: jpeg },
31
+ '1.2.840.10008.1.2.4.70': { contentType: jll, extension: '.jll' },
32
+ '1.2.840.10008.1.2.4.140': { contentType: jxl, extension: '.jxl' },
33
33
  // Lossy, original JPEG reconstruction mode
34
- "1.2.840.10008.1.2.4.141": { contentType: jxl, lossy: true },
35
- "1.2.840.10008.1.2.4.142": { contentType: jxl, lossy: true },
36
- "1.2.840.10008.1.2.4.80": { contentType: jls, extension: ".jls" },
37
- "1.2.840.10008.1.2.4.81": { contentType: jls, lossy: true },
38
- "1.2.840.10008.1.2.4.90": { contentType: jp2, extension: ".jp2" },
39
- "1.2.840.10008.1.2.4.91": { contentType: jp2 },
34
+ '1.2.840.10008.1.2.4.141': { contentType: jxl, lossy: true },
35
+ '1.2.840.10008.1.2.4.142': { contentType: jxl, lossy: true },
36
+ '1.2.840.10008.1.2.4.80': { contentType: jls, extension: '.jls' },
37
+ '1.2.840.10008.1.2.4.81': { contentType: jls, lossy: true },
38
+ '1.2.840.10008.1.2.4.90': { contentType: jp2, extension: '.jp2' },
39
+ '1.2.840.10008.1.2.4.91': { contentType: jp2 },
40
40
  // Private/test transfer syntax for HTJ2K
41
- "3.2.840.10008.1.2.4.96": { contentType: htj2k },
42
- "1.2.840.10008.1.2.4.201": { contentType: htj2k },
43
- "1.2.840.10008.1.2.4.202": { contentType: htj2k, extension: ".jhc" },
44
- "1.2.840.10008.1.2.4.203": { contentType: htj2k, lossy: true },
45
- "1.2.840.10008.1.2.5": { contentType: rle },
41
+ '3.2.840.10008.1.2.4.96': { contentType: htj2k },
42
+ '1.2.840.10008.1.2.4.201': { contentType: htj2k },
43
+ '1.2.840.10008.1.2.4.202': { contentType: htj2k, extension: '.jhc' },
44
+ '1.2.840.10008.1.2.4.203': { contentType: htj2k, lossy: true },
45
+ '1.2.840.10008.1.2.5': { contentType: rle },
46
46
  default: {},
47
47
  };
48
48