@ubercode/dcmtk 0.10.1 → 0.11.1

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.
package/dist/index.d.cts CHANGED
@@ -3,7 +3,7 @@ export { L as LineSource, P as ProcessLine, a as ResultValue, b as assertUnreach
3
3
  import { A as AETitle, D as DicomTag, a as DicomTagPath, P as Port, S as SOPClassUID, T as TransferSyntaxUID, b as DicomDataset } from './DicomInstance-CxLKC-oM.cjs';
4
4
  export { B as Brand, C as ChangeSet, c as DicomFilePath, d as DicomInstance, e as DicomOpenOptions, W as WalkTagEntry, f as WalkTagsOptions, g as createAETitle, h as createDicomFilePath, i as createDicomTag, j as createDicomTagPath, k as createPort, l as createSOPClassUID, m as createTransferSyntaxUID, t as tag, w as walkTags } from './DicomInstance-CxLKC-oM.cjs';
5
5
  import { z } from 'zod';
6
- export { A as AssociationAcknowledgedData, a as AssociationCompleteData, b as AssociationContext, c as AssociationReceivedData, d as AssociationSummary, e as AssociationTracker, C as CStoreRequestData, f as CannotStartListenerData, g as ConfigErrorData, D as DCMPRSCP_FATAL_EVENTS, h as DCMPRSCP_PATTERNS, i as DCMPSRCV_FATAL_EVENTS, j as DCMPSRCV_PATTERNS, k as DCMQRSCP_FATAL_EVENTS, l as DCMQRSCP_PATTERNS, m as DCMRECV_FATAL_EVENTS, n as DCMRECV_PATTERNS, o as DatabaseReadyData, p as DcmQRSCP, q as DcmQRSCPEventMap, r as DcmQRSCPOptions, s as DcmprsCP, t as DcmprsCPEventMap, u as DcmprsCPOptions, v as DcmprscpEvent, w as DcmprscpEventValue, x as Dcmpsrcv, y as DcmpsrcvEvent, z as DcmpsrcvEventMap, B as DcmpsrcvEventValue, E as DcmpsrcvOptions, F as DcmqrscpEvent, G as DcmqrscpEventValue, H as Dcmrecv, I as DcmrecvEvent, J as DcmrecvEventMap, K as DcmrecvEventValue, L as DcmrecvOptions, M as DcmtkProcess, N as DcmtkProcessConfig, O as DcmtkProcessEventMap, P as DicomReceiver, Q as DicomReceiverEventMap, R as DicomReceiverOptions, S as EventPattern, T as FileDeletedData, U as FileReceivedData, V as FilenameMode, W as FilenameModeValue, X as LineParser, Y as LineParserEventMap, Z as MultiLineConfig, _ as PoolAssociationReceivedData, $ as PoolCStoreRequestData, a0 as PoolEchoRequestData, a1 as PoolRefusingAssociationData, a2 as PoolStatus, a3 as PreferredTransferSyntax, a4 as PreferredTransferSyntaxValue, a5 as PrintAssociationAcknowledgedData, a6 as PrintAssociationReceivedData, a7 as PrintCannotStartListenerData, a8 as ProcessState, a9 as ProcessStateValue, aa as QRAssociationAcknowledgedData, ab as QRAssociationReceivedData, ac as QRCFindRequestData, ad as QRCGetRequestData, ae as QRCMoveRequestData, af as QRCStoreRequestData, ag as QRCannotStartListenerData, ah as QRListeningData, ai as ReceiverAssociationAcknowledgedData, aj as ReceiverAssociationData, ak as ReceiverAssociationReceivedData, al as ReceiverCStoreRequestData, am as ReceiverCannotStartListenerData, an as ReceiverConfigErrorData, ao as ReceiverDatabaseReadyData, ap as ReceiverEchoRequestData, aq as ReceiverErrorData, ar as ReceiverFileData, as as ReceiverListeningData, at as RefusingAssociationData, au as STORESCP_FATAL_EVENTS, av as STORESCP_PATTERNS, aw as StorageMode, ax as StorageModeValue, ay as StoreSCP, az as StoreSCPEventMap, aA as StoreSCPOptions, aB as StoreSCPPreset, aC as StoreSCPPresetName, aD as StoredFileData, aE as StorescpEvent, aF as StorescpEventValue, aG as StoringFileData, aH as SubdirectoryCreatedData, aI as SubdirectoryMode, aJ as SubdirectoryModeValue, aK as TrackedFile, aL as WLMSCPFS_FATAL_EVENTS, aM as WLMSCPFS_PATTERNS, aN as WlmAssociationAcknowledgedData, aO as WlmAssociationReceivedData, aP as WlmCFindRequestData, aQ as WlmCannotStartListenerData, aR as WlmListeningData, aS as Wlmscpfs, aT as WlmscpfsEvent, aU as WlmscpfsEventMap, aV as WlmscpfsEventValue, aW as WlmscpfsOptions } from './index-CEqwLKgE.cjs';
6
+ export { A as AssociationAcknowledgedData, a as AssociationCompleteData, b as AssociationContext, c as AssociationReceivedData, d as AssociationSummary, e as AssociationTracker, C as CStoreRequestData, f as CannotStartListenerData, g as ConfigErrorData, D as DCMPRSCP_FATAL_EVENTS, h as DCMPRSCP_PATTERNS, i as DCMPSRCV_FATAL_EVENTS, j as DCMPSRCV_PATTERNS, k as DCMQRSCP_FATAL_EVENTS, l as DCMQRSCP_PATTERNS, m as DCMRECV_FATAL_EVENTS, n as DCMRECV_PATTERNS, o as DatabaseReadyData, p as DcmQRSCP, q as DcmQRSCPEventMap, r as DcmQRSCPOptions, s as DcmprsCP, t as DcmprsCPEventMap, u as DcmprsCPOptions, v as DcmprscpEvent, w as DcmprscpEventValue, x as Dcmpsrcv, y as DcmpsrcvEvent, z as DcmpsrcvEventMap, B as DcmpsrcvEventValue, E as DcmpsrcvOptions, F as DcmqrscpEvent, G as DcmqrscpEventValue, H as Dcmrecv, I as DcmrecvEvent, J as DcmrecvEventMap, K as DcmrecvEventValue, L as DcmrecvOptions, M as DcmtkProcess, N as DcmtkProcessConfig, O as DcmtkProcessEventMap, P as DicomReceiver, Q as DicomReceiverEventMap, R as DicomReceiverOptions, S as EventPattern, T as FileDeletedData, U as FileReceivedData, V as FilenameMode, W as FilenameModeValue, X as LineParser, Y as LineParserEventMap, Z as MultiLineConfig, _ as PoolAssociationReceivedData, $ as PoolCStoreRequestData, a0 as PoolEchoRequestData, a1 as PoolRefusingAssociationData, a2 as PoolStatus, a3 as PreferredTransferSyntax, a4 as PreferredTransferSyntaxValue, a5 as PrintAssociationAcknowledgedData, a6 as PrintAssociationReceivedData, a7 as PrintCannotStartListenerData, a8 as ProcessState, a9 as ProcessStateValue, aa as QRAssociationAcknowledgedData, ab as QRAssociationReceivedData, ac as QRCFindRequestData, ad as QRCGetRequestData, ae as QRCMoveRequestData, af as QRCStoreRequestData, ag as QRCannotStartListenerData, ah as QRListeningData, ai as ReceiverAssociationAcknowledgedData, aj as ReceiverAssociationData, ak as ReceiverAssociationReceivedData, al as ReceiverCStoreRequestData, am as ReceiverCannotStartListenerData, an as ReceiverConfigErrorData, ao as ReceiverDatabaseReadyData, ap as ReceiverEchoRequestData, aq as ReceiverErrorData, ar as ReceiverFileData, as as ReceiverFileReceivedData, at as ReceiverFileStoredData, au as ReceiverInstanceData, av as ReceiverListeningData, aw as RefusingAssociationData, ax as STORESCP_FATAL_EVENTS, ay as STORESCP_PATTERNS, az as StorageMode, aA as StorageModeValue, aB as StoreSCP, aC as StoreSCPEventMap, aD as StoreSCPOptions, aE as StoreSCPPreset, aF as StoreSCPPresetName, aG as StoredFileData, aH as StorescpEvent, aI as StorescpEventValue, aJ as StoringFileData, aK as SubdirectoryCreatedData, aL as SubdirectoryMode, aM as SubdirectoryModeValue, aN as TrackedFile, aO as WLMSCPFS_FATAL_EVENTS, aP as WLMSCPFS_PATTERNS, aQ as WlmAssociationAcknowledgedData, aR as WlmAssociationReceivedData, aS as WlmCFindRequestData, aT as WlmCannotStartListenerData, aU as WlmListeningData, aV as Wlmscpfs, aW as WlmscpfsEvent, aX as WlmscpfsEventMap, aY as WlmscpfsEventValue, aZ as WlmscpfsOptions } from './index-CVDMaxd8.cjs';
7
7
  import { T as TagModification } from './dcmodify-Cf-RPHF3.cjs';
8
8
  export { b as DcmodifyOptions, c as DcmodifyResult, D as DicomJsonElement, a as DicomJsonModel, d as ToolBaseOptions, e as dcmodify, x as xmlToJson } from './dcmodify-Cf-RPHF3.cjs';
9
9
  export { DictionaryEntry, SOPClassName, SOP_CLASSES, TagSegment, VR, VRCategoryName, VRMetadata, VRValue, VR_CATEGORY, VR_CATEGORY_NAME, VR_META, getVRCategory, isBinaryVR, isNumericVR, isStringVR, lookupTag, lookupTagByKeyword, lookupTagByName, segmentsToModifyPath, segmentsToString, sopClassNameFromUID, tagPathToSegments } from './dicom.cjs';
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ export { L as LineSource, P as ProcessLine, a as ResultValue, b as assertUnreach
3
3
  import { A as AETitle, D as DicomTag, a as DicomTagPath, P as Port, S as SOPClassUID, T as TransferSyntaxUID, b as DicomDataset } from './DicomInstance-BKUiir0G.js';
4
4
  export { B as Brand, C as ChangeSet, c as DicomFilePath, d as DicomInstance, e as DicomOpenOptions, W as WalkTagEntry, f as WalkTagsOptions, g as createAETitle, h as createDicomFilePath, i as createDicomTag, j as createDicomTagPath, k as createPort, l as createSOPClassUID, m as createTransferSyntaxUID, t as tag, w as walkTags } from './DicomInstance-BKUiir0G.js';
5
5
  import { z } from 'zod';
6
- export { A as AssociationAcknowledgedData, a as AssociationCompleteData, b as AssociationContext, c as AssociationReceivedData, d as AssociationSummary, e as AssociationTracker, C as CStoreRequestData, f as CannotStartListenerData, g as ConfigErrorData, D as DCMPRSCP_FATAL_EVENTS, h as DCMPRSCP_PATTERNS, i as DCMPSRCV_FATAL_EVENTS, j as DCMPSRCV_PATTERNS, k as DCMQRSCP_FATAL_EVENTS, l as DCMQRSCP_PATTERNS, m as DCMRECV_FATAL_EVENTS, n as DCMRECV_PATTERNS, o as DatabaseReadyData, p as DcmQRSCP, q as DcmQRSCPEventMap, r as DcmQRSCPOptions, s as DcmprsCP, t as DcmprsCPEventMap, u as DcmprsCPOptions, v as DcmprscpEvent, w as DcmprscpEventValue, x as Dcmpsrcv, y as DcmpsrcvEvent, z as DcmpsrcvEventMap, B as DcmpsrcvEventValue, E as DcmpsrcvOptions, F as DcmqrscpEvent, G as DcmqrscpEventValue, H as Dcmrecv, I as DcmrecvEvent, J as DcmrecvEventMap, K as DcmrecvEventValue, L as DcmrecvOptions, M as DcmtkProcess, N as DcmtkProcessConfig, O as DcmtkProcessEventMap, P as DicomReceiver, Q as DicomReceiverEventMap, R as DicomReceiverOptions, S as EventPattern, T as FileDeletedData, U as FileReceivedData, V as FilenameMode, W as FilenameModeValue, X as LineParser, Y as LineParserEventMap, Z as MultiLineConfig, _ as PoolAssociationReceivedData, $ as PoolCStoreRequestData, a0 as PoolEchoRequestData, a1 as PoolRefusingAssociationData, a2 as PoolStatus, a3 as PreferredTransferSyntax, a4 as PreferredTransferSyntaxValue, a5 as PrintAssociationAcknowledgedData, a6 as PrintAssociationReceivedData, a7 as PrintCannotStartListenerData, a8 as ProcessState, a9 as ProcessStateValue, aa as QRAssociationAcknowledgedData, ab as QRAssociationReceivedData, ac as QRCFindRequestData, ad as QRCGetRequestData, ae as QRCMoveRequestData, af as QRCStoreRequestData, ag as QRCannotStartListenerData, ah as QRListeningData, ai as ReceiverAssociationAcknowledgedData, aj as ReceiverAssociationData, ak as ReceiverAssociationReceivedData, al as ReceiverCStoreRequestData, am as ReceiverCannotStartListenerData, an as ReceiverConfigErrorData, ao as ReceiverDatabaseReadyData, ap as ReceiverEchoRequestData, aq as ReceiverErrorData, ar as ReceiverFileData, as as ReceiverListeningData, at as RefusingAssociationData, au as STORESCP_FATAL_EVENTS, av as STORESCP_PATTERNS, aw as StorageMode, ax as StorageModeValue, ay as StoreSCP, az as StoreSCPEventMap, aA as StoreSCPOptions, aB as StoreSCPPreset, aC as StoreSCPPresetName, aD as StoredFileData, aE as StorescpEvent, aF as StorescpEventValue, aG as StoringFileData, aH as SubdirectoryCreatedData, aI as SubdirectoryMode, aJ as SubdirectoryModeValue, aK as TrackedFile, aL as WLMSCPFS_FATAL_EVENTS, aM as WLMSCPFS_PATTERNS, aN as WlmAssociationAcknowledgedData, aO as WlmAssociationReceivedData, aP as WlmCFindRequestData, aQ as WlmCannotStartListenerData, aR as WlmListeningData, aS as Wlmscpfs, aT as WlmscpfsEvent, aU as WlmscpfsEventMap, aV as WlmscpfsEventValue, aW as WlmscpfsOptions } from './index-Hp4Ri9y5.js';
6
+ export { A as AssociationAcknowledgedData, a as AssociationCompleteData, b as AssociationContext, c as AssociationReceivedData, d as AssociationSummary, e as AssociationTracker, C as CStoreRequestData, f as CannotStartListenerData, g as ConfigErrorData, D as DCMPRSCP_FATAL_EVENTS, h as DCMPRSCP_PATTERNS, i as DCMPSRCV_FATAL_EVENTS, j as DCMPSRCV_PATTERNS, k as DCMQRSCP_FATAL_EVENTS, l as DCMQRSCP_PATTERNS, m as DCMRECV_FATAL_EVENTS, n as DCMRECV_PATTERNS, o as DatabaseReadyData, p as DcmQRSCP, q as DcmQRSCPEventMap, r as DcmQRSCPOptions, s as DcmprsCP, t as DcmprsCPEventMap, u as DcmprsCPOptions, v as DcmprscpEvent, w as DcmprscpEventValue, x as Dcmpsrcv, y as DcmpsrcvEvent, z as DcmpsrcvEventMap, B as DcmpsrcvEventValue, E as DcmpsrcvOptions, F as DcmqrscpEvent, G as DcmqrscpEventValue, H as Dcmrecv, I as DcmrecvEvent, J as DcmrecvEventMap, K as DcmrecvEventValue, L as DcmrecvOptions, M as DcmtkProcess, N as DcmtkProcessConfig, O as DcmtkProcessEventMap, P as DicomReceiver, Q as DicomReceiverEventMap, R as DicomReceiverOptions, S as EventPattern, T as FileDeletedData, U as FileReceivedData, V as FilenameMode, W as FilenameModeValue, X as LineParser, Y as LineParserEventMap, Z as MultiLineConfig, _ as PoolAssociationReceivedData, $ as PoolCStoreRequestData, a0 as PoolEchoRequestData, a1 as PoolRefusingAssociationData, a2 as PoolStatus, a3 as PreferredTransferSyntax, a4 as PreferredTransferSyntaxValue, a5 as PrintAssociationAcknowledgedData, a6 as PrintAssociationReceivedData, a7 as PrintCannotStartListenerData, a8 as ProcessState, a9 as ProcessStateValue, aa as QRAssociationAcknowledgedData, ab as QRAssociationReceivedData, ac as QRCFindRequestData, ad as QRCGetRequestData, ae as QRCMoveRequestData, af as QRCStoreRequestData, ag as QRCannotStartListenerData, ah as QRListeningData, ai as ReceiverAssociationAcknowledgedData, aj as ReceiverAssociationData, ak as ReceiverAssociationReceivedData, al as ReceiverCStoreRequestData, am as ReceiverCannotStartListenerData, an as ReceiverConfigErrorData, ao as ReceiverDatabaseReadyData, ap as ReceiverEchoRequestData, aq as ReceiverErrorData, ar as ReceiverFileData, as as ReceiverFileReceivedData, at as ReceiverFileStoredData, au as ReceiverInstanceData, av as ReceiverListeningData, aw as RefusingAssociationData, ax as STORESCP_FATAL_EVENTS, ay as STORESCP_PATTERNS, az as StorageMode, aA as StorageModeValue, aB as StoreSCP, aC as StoreSCPEventMap, aD as StoreSCPOptions, aE as StoreSCPPreset, aF as StoreSCPPresetName, aG as StoredFileData, aH as StorescpEvent, aI as StorescpEventValue, aJ as StoringFileData, aK as SubdirectoryCreatedData, aL as SubdirectoryMode, aM as SubdirectoryModeValue, aN as TrackedFile, aO as WLMSCPFS_FATAL_EVENTS, aP as WLMSCPFS_PATTERNS, aQ as WlmAssociationAcknowledgedData, aR as WlmAssociationReceivedData, aS as WlmCFindRequestData, aT as WlmCannotStartListenerData, aU as WlmListeningData, aV as Wlmscpfs, aW as WlmscpfsEvent, aX as WlmscpfsEventMap, aY as WlmscpfsEventValue, aZ as WlmscpfsOptions } from './index--dDQfutR.js';
7
7
  import { T as TagModification } from './dcmodify-CHvwChFu.js';
8
8
  export { b as DcmodifyOptions, c as DcmodifyResult, D as DicomJsonElement, a as DicomJsonModel, d as ToolBaseOptions, e as dcmodify, x as xmlToJson } from './dcmodify-CHvwChFu.js';
9
9
  export { DictionaryEntry, SOPClassName, SOP_CLASSES, TagSegment, VR, VRCategoryName, VRMetadata, VRValue, VR_CATEGORY, VR_CATEGORY_NAME, VR_META, getVRCategory, isBinaryVR, isNumericVR, isStringVR, lookupTag, lookupTagByKeyword, lookupTagByName, segmentsToModifyPath, segmentsToString, sopClassNameFromUID, tagPathToSegments } from './dicom.js';
package/dist/index.js CHANGED
@@ -36659,14 +36659,32 @@ var DicomReceiver = class _DicomReceiver extends EventEmitter {
36659
36659
  return this.on(event, listener);
36660
36660
  }
36661
36661
  /**
36662
- * Registers a listener for received files.
36662
+ * Registers a listener for files received by dcmrecv (before move/parse).
36663
36663
  *
36664
- * @param listener - Callback receiving file data
36664
+ * @param listener - Callback receiving raw file data
36665
36665
  * @returns this for chaining
36666
36666
  */
36667
36667
  onFileReceived(listener) {
36668
36668
  return this.on("FILE_RECEIVED", listener);
36669
36669
  }
36670
+ /**
36671
+ * Registers a listener for files stored in the association directory.
36672
+ *
36673
+ * @param listener - Callback receiving stored file data with size
36674
+ * @returns this for chaining
36675
+ */
36676
+ onFileStored(listener) {
36677
+ return this.on("FILE_STORED", listener);
36678
+ }
36679
+ /**
36680
+ * Registers a listener for parsed DicomInstance availability.
36681
+ *
36682
+ * @param listener - Callback receiving instance data
36683
+ * @returns this for chaining
36684
+ */
36685
+ onInstanceReceived(listener) {
36686
+ return this.on("INSTANCE_RECEIVED", listener);
36687
+ }
36670
36688
  /**
36671
36689
  * Registers a listener for completed associations.
36672
36690
  *
@@ -36960,11 +36978,18 @@ var DicomReceiver = class _DicomReceiver extends EventEmitter {
36960
36978
  });
36961
36979
  return;
36962
36980
  }
36981
+ this.emit("FILE_RECEIVED", {
36982
+ filePath: data.filePath,
36983
+ associationId: ctx.associationId,
36984
+ callingAE: data.callingAE,
36985
+ calledAE: data.calledAE,
36986
+ source: data.source
36987
+ });
36963
36988
  const promise = this.handleFileReceived(worker, data, ctx);
36964
36989
  worker.trackFile(promise);
36965
36990
  });
36966
36991
  }
36967
- /** Moves a received file, opens it as DicomInstance, and emits FILE_RECEIVED. */
36992
+ /** Moves file to association dir, emits FILE_STORED, then parses instance. */
36968
36993
  async handleFileReceived(worker, data, ctx) {
36969
36994
  try {
36970
36995
  await this.moveAndEmitFile(worker, data, ctx);
@@ -36981,7 +37006,7 @@ var DicomReceiver = class _DicomReceiver extends EventEmitter {
36981
37006
  });
36982
37007
  }
36983
37008
  }
36984
- /** Inner handler: move file, parse DICOM, emit FILE_RECEIVED or error. */
37009
+ /** Inner handler: move file, emit FILE_STORED, parse DICOM, emit INSTANCE_RECEIVED. */
36985
37010
  async moveAndEmitFile(worker, data, ctx) {
36986
37011
  const srcPath = data.filePath;
36987
37012
  const destPath = path.join(ctx.associationDir, path.basename(srcPath));
@@ -36989,28 +37014,36 @@ var DicomReceiver = class _DicomReceiver extends EventEmitter {
36989
37014
  const finalPath = moveResult.ok ? destPath : srcPath;
36990
37015
  const fileSize = await statFileSafe(finalPath);
36991
37016
  worker.recordFile(finalPath, fileSize);
36992
- const openResult = await DicomInstance.open(finalPath);
36993
- if (!openResult.ok) {
36994
- this.emit("error", {
36995
- error: openResult.error,
36996
- filePath: finalPath,
36997
- associationId: ctx.associationId,
36998
- associationDir: ctx.associationDir,
36999
- callingAE: data.callingAE,
37000
- calledAE: data.calledAE,
37001
- source: data.source
37002
- });
37003
- return;
37004
- }
37005
- this.emit("FILE_RECEIVED", {
37017
+ this.emit("FILE_STORED", {
37006
37018
  filePath: finalPath,
37007
37019
  fileSize,
37008
37020
  associationId: ctx.associationId,
37009
37021
  associationDir: ctx.associationDir,
37010
37022
  callingAE: data.callingAE,
37011
37023
  calledAE: data.calledAE,
37012
- source: data.source,
37013
- instance: openResult.value
37024
+ source: data.source
37025
+ });
37026
+ this.emitInstanceReceived(finalPath, fileSize, data, ctx);
37027
+ }
37028
+ /** Parses a DICOM file and emits INSTANCE_RECEIVED or error. */
37029
+ emitInstanceReceived(filePath, fileSize, data, ctx) {
37030
+ const errorCtx = {
37031
+ filePath,
37032
+ associationId: ctx.associationId,
37033
+ associationDir: ctx.associationDir,
37034
+ callingAE: data.callingAE,
37035
+ calledAE: data.calledAE,
37036
+ source: data.source
37037
+ };
37038
+ void DicomInstance.open(filePath).then((openResult) => {
37039
+ if (!openResult.ok) {
37040
+ this.emit("error", { error: openResult.error, ...errorCtx });
37041
+ return;
37042
+ }
37043
+ this.emit("INSTANCE_RECEIVED", { ...errorCtx, fileSize, instance: openResult.value });
37044
+ }).catch((thrown) => {
37045
+ const error = thrown instanceof Error ? thrown : new Error(String(thrown));
37046
+ this.emit("error", { error, ...errorCtx });
37014
37047
  });
37015
37048
  }
37016
37049
  /** Returns worker to idle pool on association complete, emits summary. */