dcmjs-dimse
Version:
DICOM DIMSE implementation for Node.js using dcmjs
1,847 lines (1,576 loc) • 43.4 kB
TypeScript
import AsyncEventEmitter from 'async-eventemitter';
import { Socket } from 'net';
import { SecureContext, TLSSocket } from 'tls';
import { Mixin } from 'ts-mixer';
import { Logger } from 'loglevel';
import { Writable } from 'stream';
declare namespace PresentationContextResult {
const Proposed: number;
const Accept: number;
const RejectUser: number;
const RejectNoReason: number;
const RejectAbstractSyntaxNotSupported: number;
const RejectTransferSyntaxesNotSupported: number;
}
declare namespace UserIdentityType {
const Username: number;
const UsernameAndPasscode: number;
const Kerberos: number;
const Saml: number;
const Jwt: number;
}
declare namespace AbortSource {
const ServiceUser: number;
const Unknown: number;
const ServiceProvider: number;
}
declare namespace AbortReason {
const NotSpecified: number;
const UnrecognizedPdu: number;
const UnexpectedPdu: number;
const UnrecognizedPduParameter: number;
const UnexpectedPduParameter: number;
const InvalidPduParameter: number;
}
declare namespace RejectResult {
const Permanent: number;
const Transient: number;
}
declare namespace RejectSource {
const ServiceUser: number;
const ServiceProviderAcse: number;
const ServiceProviderPresentation: number;
}
declare namespace RejectReason {
const NoReasonGiven: number;
const ApplicationContextNotSupported: number;
const CallingAeNotRecognized: number;
const CalledAeNotRecognized: number;
const ProtocolVersionNotSupported: number;
const TemporaryCongestion: number;
const LocalLimitExceeded: number;
}
declare namespace Priority {
const Low: number;
const Medium: number;
const High: number;
}
declare namespace Status {
const Success: number;
const Cancel: number;
const Pending: number;
const ClassInstanceConflict: number;
const DataSetSopClassMismatch: number;
const DuplicateSOPInstance: number;
const DuplicateInvocation: number;
const InvalidArgumentValue: number;
const InvalidAttributeValue: number;
const InvalidObjectInstance: number;
const MissingAttribute: number;
const MissingAttributeValue: number;
const MistypedArgument: number;
const MoveDestinationUnknown: number;
const NoSuchActionType: number;
const NoSuchArgument: number;
const NoSuchEventType: number;
const NoSuchObjectInstance: number;
const NoSuchSopClass: number;
const NotAuthorized: number;
const OutOfResourcesNumberOfMatches: number;
const OutOfResourcesSubOperations: number;
const ProcessingFailure: number;
const ResourceLimitation: number;
const SopClassNotSupported: number;
const UnrecognizedOperation: number;
}
declare namespace StorageClass {
const BasicTextSrStorage: string;
const BreastProjectionXRayImageStorageForPresentation: string;
const BreastProjectionXRayImageStorageForProcessing: string;
const BreastTomosynthesisImageStorage: string;
const ChestCadSrStorage: string;
const ComprehensiveSrStorage: string;
const ComputedRadiographyImageStorage: string;
const CtImageStorage: string;
const DigitalIntraOralXRayImageStorageForPresentation: string;
const DigitalIntraOralXRayImageStorageForProcessing: string;
const DigitalMammographyXRayImageStorageForPresentation: string;
const DigitalMammographyXRayImageStorageForProcessing: string;
const DigitalXRayImageStorageForPresentation: string;
const DigitalXRayImageStorageForProcessing: string;
const EncapsulatedCdaStorage: string;
const EncapsulatedPdfStorage: string;
const EnhancedCtImageStorage: string;
const EnhancedMrColorImageStorage: string;
const EnhancedMrImageStorage: string;
const EnhancedPetImageStorage: string;
const EnhancedSrStorage: string;
const EnhancedXaImageStorage: string;
const EnhancedXrfImageStorage: string;
const IntravascularOpticalCoherenceTomographyImageStorageForPresentation: string;
const IntravascularOpticalCoherenceTomographyImageStorageForProcessing: string;
const LegacyConvertedEnhancedCTImageStorage: string;
const LegacyConvertedEnhancedMRImageStorage: string;
const LegacyConvertedEnhancedPETImageStorage: string;
const MammographyCadSrStorage: string;
const MrImageStorage: string;
const MultiframeGrayscaleByteSecondaryCaptureImageStorage: string;
const MultiframeGrayscaleWordSecondaryCaptureImageStorage: string;
const MultiframeSingleBitSecondaryCaptureImageStorage: string;
const MultiframeTrueColorSecondaryCaptureImageStorage: string;
const NuclearMedicineImageStorage: string;
const OphthalmicOpticalCoherenceTomographyEnFaceImageStorage: string;
const OphthalmicPhotography16BitImageStorage: string;
const OphthalmicPhotography8BitImageStorage: string;
const OphthalmicTomographyImageStorage: string;
const PositronEmissionTomographyImageStorage: string;
const RtImageStorage: string;
const SecondaryCaptureImageStorage: string;
const UltrasoundImageStorage: string;
const UltrasoundMultiframeImageStorage: string;
const VideoEndoscopicImageStorage: string;
const VideoMicroscopicImageStorage: string;
const VideoPhotographicImageStorage: string;
const VlEndoscopicImageStorage: string;
const VlMicroscopicImageStorage: string;
const VlPhotographicImageStorage: string;
const VlSlideCoordinatesMicroscopicImageStorage: string;
const VlWholeSlideMicroscopyImageStorage: string;
const WideFieldOphthalmicPhotography3dCoordinatesImageStorage: string;
const WideFieldOphthalmicPhotographyStereographicProjectionImageStorage: string;
const XRay3dAngiographicImageStorage: string;
const XRay3dCraniofacialImageStorage: string;
const XRayAngiographicImageStorage: string;
const XRayRadiationDoseSRStorage: string;
const XRayRadiofluoroscopicImageStorage: string;
}
declare namespace SopClass {
const Verification: string;
const StudyRootQueryRetrieveInformationModelFind: string;
const ModalityWorklistInformationModelFind: string;
const ModalityPerformedProcedureStep: string;
const StudyRootQueryRetrieveInformationModelMove: string;
const StudyRootQueryRetrieveInformationModelGet: string;
const StorageCommitmentPushModel: string;
const BasicFilmSession: string;
const PrintJob: string;
const BasicAnnotationBox: string;
const Printer: string;
const PrinterConfigurationRetrieval: string;
const BasicGrayscalePrintManagementMeta: string;
const BasicColorPrintManagementMeta: string;
const BasicFilmBox: string;
const PresentationLut: string;
const BasicGrayscaleImageBox: string;
const BasicColorImageBox: string;
const InstanceAvailabilityNotification: string;
}
declare namespace TransferSyntax {
const ImplicitVRLittleEndian: string;
const ExplicitVRLittleEndian: string;
const DeflatedExplicitVRLittleEndian: string;
const ExplicitVRBigEndian: string;
const RleLossless: string;
const JpegBaseline: string;
const JpegLossless: string;
const JpegLsLossless: string;
const JpegLsLossy: string;
const Jpeg2000Lossless: string;
const Jpeg2000Lossy: string;
}
declare class Dataset {
/**
* Creates an instance of Dataset.
*/
constructor(
elementsOrBuffer?: Record<string, unknown> | Buffer,
transferSyntaxUid?: string,
readOptions?: Record<string, unknown>
);
/**
* Gets element value.
*/
getElement(tag: string): string | undefined;
/**
* Sets element value.
*/
setElement(tag: string, value: string): void;
/**
* Gets all elements.
*/
getElements(): Record<string, unknown>;
/**
* Gets DICOM transfer syntax UID.
*/
getTransferSyntaxUid(): string;
/**
* Sets DICOM transfer syntax UID.
*/
setTransferSyntaxUid(transferSyntaxUid: string): void;
/**
* Gets elements encoded in a DICOM dataset buffer.
*/
getDenaturalizedDataset(
writeOptions?: Record<string, unknown>,
nameMap?: Record<string, unknown>
): Buffer;
/**
* Gets command elements encoded in a DICOM dataset buffer.
*/
getDenaturalizedCommandDataset(writeOptions?: Record<string, unknown>): Buffer;
/**
* Loads a dataset from DICOM P10 file.
*/
static fromFile(
path: string,
callback?: (error: Error | undefined, dataset: Dataset | undefined) => void,
readOptions?: Record<string, unknown>
): Dataset | undefined;
/**
* Saves a dataset to DICOM P10 file.
*/
toFile(
path: string,
callback?: (error: Error | undefined) => void,
nameMap?: Record<string, unknown>,
writeOptions?: Record<string, unknown>
): void;
/**
* Generates a UUID-derived UID.
*/
static generateDerivedUid(): string;
/**
* Gets the dataset description.
*/
toString(): string;
}
declare class Implementation {
/**
* Gets implementation class UID.
*/
static getImplementationClassUid(): string;
/**
* Sets implementation class UID.
*/
static setImplementationClassUid(uid: string): void;
/**
* Gets implementation version.
*/
static getImplementationVersion(): string;
/**
* Sets implementation version.
*/
static setImplementationVersion(version: string): void;
/**
* Gets max PDU length.
*/
static getMaxPduLength(): number;
/**
* Sets max PDU length.
*/
static setMaxPduLength(maxLength: number): void;
}
declare class PresentationContext {
/**
* Creates an instance of PresentationContext.
*/
constructor(pcId: number, abstractSyntaxUid: string, transferSyntaxUid?: string, result?: number);
/**
* Gets presentation context ID.
*/
getPresentationContextId(): number;
/**
* Gets abstract syntax UID.
*/
getAbstractSyntaxUid(): string;
/**
* Gets transfer syntax UIDs.
*/
getTransferSyntaxUids(): Array<string>;
/**
* Add transfer syntax UID.
*/
addTransferSyntaxUid(transferSyntaxUid: string): void;
/**
* Removes transfer syntax UID.
*/
removeTransferSyntaxUid(transferSyntaxUid: string): void;
/**
* Checks whether transfer syntax UID is present.
*/
hasTransferSyntaxUid(transferSyntaxUid: string): boolean;
/**
* Gets the accepted transfer syntax UID.
*/
getAcceptedTransferSyntaxUid(): string | undefined;
/**
* Gets the presentation context result.
*/
getResult(): number;
/**
* Sets the presentation context result.
*/
setResult(result: number, acceptedTransferSyntaxUid?: string): void;
/**
* Gets the presentation context result description.
*/
getResultDescription(): string;
/**
* Gets the presentation context description.
*/
toString(): string;
}
declare class Association {
/**
* Creates an instance of Association.
*/
constructor(callingAeTitle: string, calledAeTitle: string);
/**
* Gets the calling AE title.
*/
getCallingAeTitle(): string;
/**
* Sets the calling AE title.
*/
setCallingAeTitle(aet: string): void;
/**
* Gets the called AE title.
*/
getCalledAeTitle(): string;
/**
* Sets the called AE title.
*/
setCalledAeTitle(aet: string): void;
/**
* Gets maximum PDU length.
*/
getMaxPduLength(): number;
/**
* Sets maximum PDU length.
*/
setMaxPduLength(maxPduLength: number): void;
/**
* Gets the application context name.
*/
getApplicationContextName(): string;
/**
* Gets the implementation class UID.
*/
getImplementationClassUid(): string;
/**
* Sets the implementation class UID.
*/
setImplementationClassUid(uid: string): void;
/**
* Gets the implementation version.
*/
getImplementationVersion(): string;
/**
* Sets the implementation version.
*/
setImplementationVersion(version: string): void;
/**
* Gets a flag indicating whether to negotiate asynchronous operations.
*/
getNegotiateAsyncOps(): boolean;
/**
* Sets a flag indicating whether to negotiate asynchronous operations.
*/
setNegotiateAsyncOps(negotiate: boolean): void;
/**
* Gets the supported maximum number of asynchronous operations invoked.
*/
getMaxAsyncOpsInvoked(): number;
/**
* Sets the supported maximum number of asynchronous operations invoked.
*/
setMaxAsyncOpsInvoked(ops: number): void;
/**
* Gets the supported maximum number of asynchronous operations performed.
*/
getMaxAsyncOpsPerformed(): number;
/**
* Sets the supported maximum number of asynchronous operations performed.
*/
setMaxAsyncOpsPerformed(ops: number): void;
/**
* Gets a flag indicating whether to negotiate user identity.
*/
getNegotiateUserIdentity(): boolean;
/**
* Sets a flag indicating whether to negotiate user identity.
*/
setNegotiateUserIdentity(negotiate: boolean): void;
/**
* Gets the user identity type.
*/
getUserIdentityType(): number;
/**
* Sets the user identity type.
*/
setUserIdentityType(type: number): void;
/**
* Gets a flag indicating whether a positive response requested.
*/
getUserIdentityPositiveResponseRequested(): boolean;
/**
* Sets a flag indicating whether a positive response requested.
*/
setUserIdentityPositiveResponseRequested(positiveResponseRequested: boolean): void;
/**
* Gets the user identity primary field.
* This field might contain the username, the Kerberos service ticket or the JWT.
*/
getUserIdentityPrimaryField(): string;
/**
* Sets the user identity primary field.
* This field might contain the username, the Kerberos service ticket or the JWT.
*/
setUserIdentityPrimaryField(primaryField: string): void;
/**
* Gets the user identity secondary field.
* This field might contain the passcode.
*/
getUserIdentitySecondaryField(): string;
/**
* Sets the user identity secondary field.
* This field might contain the passcode.
*/
setUserIdentitySecondaryField(secondaryField: string): void;
/**
* Gets a flag indicating whether to negotiate user identity server response.
*/
getNegotiateUserIdentityServerResponse(): boolean;
/**
* Sets a flag indicating whether to negotiate user identity server response.
*/
setNegotiateUserIdentityServerResponse(negotiate: boolean): void;
/**
* Gets the user identity server response.
* This field might contain the Kerberos server ticket if the user identity type value was 3,
* the SAML response if the user identity type value was 4, or it might be empty
* if the user identity type value was 1 or 2.
*/
getUserIdentityServerResponse(): string;
/**
* Sets the user identity server response.
* This field might contain the Kerberos server ticket if the user identity type value was 3,
* the SAML response if the user identity type value was 4, or it might be empty
* if the user identity type value was 1 or 2.
*/
setUserIdentityServerResponse(serverResponse: string): void;
/**
* Adds presentation context to association.
*/
addPresentationContext(abstractSyntaxUid: string, presentationContextId?: number): number;
/**
* Adds presentation context to association if not exists.
*/
addOrGetPresentationContext(abstractSyntaxUid: string): number;
/**
* Adds transfer syntax to presentation context.
*/
addTransferSyntaxToPresentationContext(pcId: number, transferSyntaxUid: string): void;
/**
* Finds presentation context.
*/
findPresentationContextByAbstractSyntaxAndTransferSyntax(
abstractSyntaxUid: string,
transferSyntaxUid: string
): number | undefined;
/**
* Gets presentation context.
*/
getPresentationContext(pcId: number): PresentationContext;
/**
* Gets presentation contexts.
*/
getPresentationContexts(): Array<{
id: number;
context: PresentationContext;
}>;
/**
* Clears all presentation contexts.
*/
clearPresentationContexts(): void;
/**
* Adds presentation context from request.
*/
addPresentationContextFromRequest(
request: Request,
transferSyntaxes?: string | Array<string>
): number;
/**
* Gets accepted presentation context from request.
*/
getAcceptedPresentationContextFromRequest(request: Request): PresentationContext | undefined;
/**
* Gets the association description.
*/
toString(): string;
}
declare class Command {
/**
* Creates an instance of Command.
*/
constructor(commandDataset?: Dataset, dataset?: Dataset);
/**
* Gets command dataset.
*/
getCommandDataset(): Dataset;
/**
* Sets command dataset.
*/
setCommandDataset(dataset: Dataset): void;
/**
* Gets dataset.
*/
getDataset(): Dataset | undefined;
/**
* Sets dataset and updates CommandDataSetType element.
*/
setDataset(dataset: Dataset): void;
/**
* Gets command field type.
*/
getCommandFieldType(): number;
/**
* Command has dataset.
*/
hasDataset(): boolean;
/**
* Gets the command description.
*/
toString(opts?: { includeCommandDataset?: boolean; includeDataset?: boolean }): string;
}
declare class Request extends Mixin(Command, AsyncEventEmitter) {
/**
* Creates an instance of Request.
*/
constructor(
type: number,
affectedOrRequestedClassUid: string,
hasDataset: boolean,
metaSopClassUid?: string
);
/**
* Gets affected SOP class UID.
*/
getAffectedSopClassUid(): string;
/**
* Sets affected SOP class UID.
*/
setAffectedSopClassUid(affectedSopClassUid: string): void;
/**
* Gets requested SOP class UID.
*/
getRequestedSopClassUid(): string;
/**
* Sets requested SOP class UID.
*/
setRequestedSopClassUid(requestedSopClassUid: string): void;
/**
* Gets meta SOP class UID.
*/
getMetaSopClassUid(): string | undefined;
/**
* Sets meta SOP class UID.
*/
setMetaSopClassUid(metaSopClassUid: string): void;
/**
* Gets affected SOP instance UID.
*/
getAffectedSopInstanceUid(): string;
/**
* Sets affected SOP instance UID.
*/
setAffectedSopInstanceUid(affectedSopInstanceUid: string): void;
/**
* Gets requested SOP instance UID.
*/
getRequestedSopInstanceUid(): string;
/**
* Sets requested SOP instance UID.
*/
setRequestedSopInstanceUid(requestedSopInstanceUid: string): void;
/**
* Gets request message ID.
*/
getMessageId(): number;
/**
* Sets request message ID.
*/
setMessageId(messageId: number): void;
/**
* Raise response event.
*/
raiseResponseEvent(response: Response): void;
/**
* Raise instance event.
*/
raiseInstanceEvent(dataset: Dataset): void;
/**
* Raise done event.
*/
raiseDoneEvent(): void;
/**
* Gets the request description.
*/
toString(opts?: { includeCommandDataset?: boolean; includeDataset?: boolean }): string;
}
declare class Response extends Command {
/**
* Creates an instance of Response.
*/
constructor(
type: number,
affectedOrRequestedClassUid: string,
hasDataset: boolean,
status: number,
errorComment: string
);
/**
* Gets affected SOP class UID.
*/
getAffectedSopClassUid(): string;
/**
* Sets affected SOP class UID.
*/
setAffectedSopClassUid(affectedSopClassUid: string): void;
/**
* Gets requested SOP class UID.
*/
getRequestedSopClassUid(): string;
/**
* Sets requested SOP class UID.
*/
setRequestedSopClassUid(requestedSopClassUid: string): void;
/**
* Gets affected SOP instance UID.
*/
getAffectedSopInstanceUid(): string;
/**
* Sets affected SOP instance UID.
*/
setAffectedSopInstanceUid(affectedSopInstanceUid: string): void;
/**
* Gets requested SOP instance UID.
*/
getRequestedSopInstanceUid(): string;
/**
* Sets requested SOP instance UID.
*/
setRequestedSopInstanceUid(requestedSopInstanceUid: string): void;
/**
* Gets status.
*/
getStatus(): number;
/**
* Sets status.
*/
setStatus(status: number): void;
/**
* Gets error comment.
*/
getErrorComment(): string;
/**
* Sets error comment.
*/
setErrorComment(errorComment: string): void;
/**
* Gets response message ID.
*/
getMessageIdBeingRespondedTo(): number;
/**
* Sets response message ID.
*/
setMessageIdBeingRespondedTo(messageId: number): void;
/**
* Gets the response description.
*/
toString(opts?: { includeCommandDataset?: boolean; includeDataset?: boolean }): string;
}
declare class CEchoRequest extends Request {
/**
* Creates an instance of CEchoRequest.
*/
constructor();
}
declare class CEchoResponse extends Response {
/**
* Creates an instance of CEchoResponse.
*/
constructor(status: number, errorComment: string);
/**
* Creates a C-ECHO response from a request.
*/
static fromRequest(request: CEchoRequest): CEchoResponse;
}
declare class CFindRequest extends Request {
/**
* Creates an instance of CFindRequest.
*/
constructor(priority?: number);
/**
* Gets request priority.
*/
getPriority(): number;
/**
* Sets request priority.
*/
setPriority(priority: number): void;
/**
* Creates study find request.
*/
static createStudyFindRequest(elements: Record<string, unknown>, priority?: number): CFindRequest;
/**
* Creates series find request.
*/
static createSeriesFindRequest(
elements: Record<string, unknown>,
priority?: number
): CFindRequest;
/**
* Creates image find request.
*/
static createImageFindRequest(elements: Record<string, unknown>, priority?: number): CFindRequest;
/**
* Creates worklist find request.
*/
static createWorklistFindRequest(
elements: Record<string, unknown>,
priority?: number
): CFindRequest;
}
declare class CFindResponse extends Response {
/**
* Creates an instance of CEchoResponse.
*/
constructor(status: number, errorComment: string);
/**
* Creates a C-FIND response from a request.
*/
static fromRequest(request: CFindRequest): CFindResponse;
}
declare class CStoreRequest extends Request {
/**
* Creates an instance of CStoreRequest.
*/
constructor(datasetOrFile: Dataset | string, priority?: number);
/**
* Gets request priority.
*/
getPriority(): number;
/**
* Sets request priority.
*/
setPriority(priority: number): void;
/**
* Gets additional transfer syntaxes to propose in the association request.
*/
getAdditionalTransferSyntaxes(): Array<string>;
/**
* Sets additional transfer syntaxes to propose in the association request.
* Dataset will be transcoded on the fly, if necessary.
*/
setAdditionalTransferSyntaxes(transferSyntaxUids: string | Array<string>): void;
}
declare class CStoreResponse extends Response {
/**
* Creates an instance of CStoreResponse.
*/
constructor(status: number, errorComment: string);
/**
* Creates a C-STORE response from a request.
*/
static fromRequest(request: CStoreRequest): CStoreResponse;
}
declare class CMoveRequest extends Request {
/**
* Creates an instance of CMoveRequest.
*/
constructor(priority?: number);
/**
* Gets request priority.
*/
getPriority(): number;
/**
* Sets request priority.
*/
setPriority(priority: number): void;
/**
* Creates study move request.
*/
static createStudyMoveRequest(
destinationAet: string,
studyInstanceUid: string,
priority?: number
): CMoveRequest;
/**
* Creates series move request.
*/
static createSeriesMoveRequest(
destinationAet: string,
studyInstanceUid: string,
seriesInstanceUid: string,
priority?: number
): CMoveRequest;
/**
* Creates image move request.
*/
static createImageMoveRequest(
destinationAet: string,
studyInstanceUid: string,
seriesInstanceUid: string,
sopInstanceUid: string,
priority?: number
): CMoveRequest;
}
declare class CMoveResponse extends Response {
/**
* Creates an instance of CMoveResponse.
*/
constructor(status: number, errorComment: string);
/**
* Gets remaining sub operations.
*/
getRemaining(): number;
/**
* Sets remaining sub operations.
*/
setRemaining(remaining: number): void;
/**
* Gets completed sub operations.
*/
getCompleted(): number;
/**
* Sets completed sub operations.
*/
setCompleted(completed: number): void;
/**
* Gets sub operations with warnings.
*/
getWarnings(): number;
/**
* Sets sub operations with warnings.
*/
setWarnings(warnings: number): void;
/**
* Gets failed sub operations.
*/
getFailures(): number;
/**
* Sets failed sub operations.
*/
setFailures(failures: number): void;
/**
* Gets the C-MOVE response description.
*/
toString(opts?: { includeCommandDataset?: boolean; includeDataset?: boolean }): string;
/**
* Creates a C-MOVE response from a request.
*/
static fromRequest(request: CMoveRequest): CMoveResponse;
}
declare class CGetRequest extends Request {
/**
* Creates an instance of CGetRequest.
*/
constructor(priority?: number);
/**
* Gets request priority.
*/
getPriority(): number;
/**
* Sets request priority.
*/
setPriority(priority: number): void;
/**
* Gets the flag indicating whether to add all known storage SOP
* classes, as presentation contexts, during the association.
*/
getAddStorageSopClassesToAssociation(): boolean;
/**
* Sets the flag indicating whether to add all known storage SOP
* classes, as presentation contexts, during the association.
*/
setAddStorageSopClassesToAssociation(add: boolean): void;
/**
* Creates study get request.
*/
static createStudyGetRequest(studyInstanceUid: string, priority?: number): CGetRequest;
/**
* Creates series get request.
*/
static createSeriesGetRequest(
studyInstanceUid: string,
seriesInstanceUid: string,
priority?: number
): CGetRequest;
/**
* Creates image get request.
*/
static createImageGetRequest(
studyInstanceUid: string,
seriesInstanceUid: string,
sopInstanceUid: string,
priority?: number
): CGetRequest;
}
declare class CGetResponse extends Response {
/**
* Creates an instance of CGetResponse.
*/
constructor(status: number, errorComment: string);
/**
* Gets remaining sub operations.
*/
getRemaining(): number;
/**
* Sets remaining sub operations.
*/
setRemaining(remaining: number): void;
/**
* Gets completed sub operations.
*/
getCompleted(): number;
/**
* Sets completed sub operations.
*/
setCompleted(completed: number): void;
/**
* Gets sub operations with warnings.
*/
getWarnings(): number;
/**
* Sets sub operations with warnings.
*/
setWarnings(warnings: number): void;
/**
* Gets failed sub operations.
*/
getFailures(): number;
/**
* Sets failed sub operations.
*/
setFailures(failures: number): void;
/**
* Gets the C-GET response description.
*/
toString(opts?: { includeCommandDataset?: boolean; includeDataset?: boolean }): string;
/**
* Creates a C-GET response from a request.
*/
static fromRequest(request: CGetRequest): CGetResponse;
}
declare class NCreateRequest extends Request {
/**
* Creates an instance of NCreateRequest.
*/
constructor(
affectedSopClassUid: string,
affectedSopInstanceUid: string,
metaSopClassUid?: string
);
}
declare class NCreateResponse extends Response {
/**
* Creates an instance of NCreateResponse.
*/
constructor(
affectedSopClassUid: string,
affectedSopInstanceUid: string,
status: number,
errorComment: string
);
/**
* Creates an N-CREATE response from a request.
*/
static fromRequest(request: NCreateRequest): NCreateResponse;
}
declare class NActionRequest extends Request {
/**
* Creates an instance of NActionRequest.
*/
constructor(
requestedSopClassUid: string,
requestedSopInstanceUid: string,
actionTypeId: number,
metaSopClassUid?: string
);
/**
* Gets action type ID.
*/
getActionTypeId(): number;
/**
* Sets action type ID.
*/
setActionTypeId(actionTypeId: number): void;
}
declare class NActionResponse extends Response {
/**
* Creates an instance of NActionResponse.
*/
constructor(
affectedSopClassUid: string,
affectedSopInstanceUid: string,
actionTypeId: number,
status: number,
errorComment: string
);
/**
* Gets action type ID.
*/
getActionTypeId(): number;
/**
* Sets action type ID.
*/
setActionTypeId(actionTypeId: number): void;
/**
* Creates an N-ACTION response from a request.
*/
static fromRequest(request: NActionRequest): NActionResponse;
}
declare class NDeleteRequest extends Request {
/**
* Creates an instance of NDeleteRequest.
*/
constructor(
requestedSopClassUid: string,
requestedSopInstanceUid: string,
metaSopClassUid?: string
);
}
declare class NDeleteResponse extends Response {
/**
* Creates an instance of NDeleteResponse.
*/
constructor(
affectedSopClassUid: string,
affectedSopInstanceUid: string,
status: number,
errorComment: string
);
/**
* Creates an N-DELETE response from a request.
*/
static fromRequest(request: NDeleteRequest): NDeleteResponse;
}
declare class NEventReportRequest extends Request {
/**
* Creates an instance of NEventReportRequest.
*/
constructor(
affectedSopClassUid: string,
affectedSopInstanceUid: string,
eventTypeID: number,
metaSopClassUid?: string
);
/**
* Gets event type ID.
*/
getEventTypeId(): number;
/**
* Sets event type ID.
*/
setEventTypeId(eventTypeId: number): void;
}
declare class NEventReportResponse extends Response {
/**
* Creates an instance of NEventReportResponse.
*/
constructor(
affectedSopClassUid: string,
affectedSopInstanceUid: string,
eventTypeID: number,
status: number,
errorComment: string
);
/**
* Gets event type ID.
*/
getEventTypeId(): number;
/**
* Sets event type ID.
*/
setEventTypeId(eventTypeId: number): void;
/**
* Creates an N-EVENT-REPORT response from a request.
*/
static fromRequest(request: NEventReportRequest): NEventReportResponse;
}
declare class NGetRequest extends Request {
/**
* Creates an instance of NGetRequest.
*/
constructor(
requestedSopClassUid: string,
requestedSopInstanceUid: string,
attributeIdentifierList: Array<string>,
metaSopClassUid?: string
);
/**
* Gets requested attributes identifier list.
*/
getAttributeIdentifierList(): Array<string>;
/**
* Sets requested attributes identifier list.
*/
setAttributeIdentifierList(attributeIdentifierList: Array<string>): void;
}
declare class NGetResponse extends Response {
/**
* Creates an instance of NGetResponse.
*/
constructor(
affectedSopClassUid: string,
affectedSopInstanceUid: string,
status: number,
errorComment: string
);
/**
* Creates an N-GET response from a request.
*/
static fromRequest(request: NGetRequest): NGetResponse;
}
declare class NSetRequest extends Request {
/**
* Creates an instance of NSetRequest.
*/
constructor(
requestedSopClassUid: string,
requestedSopInstanceUid: string,
metaSopClassUid?: string
);
}
declare class NSetResponse extends Response {
/**
* Creates an instance of NSetResponse.
*/
constructor(
affectedSopClassUid: string,
affectedSopInstanceUid: string,
status: number,
errorComment: string
);
/**
* Creates an N-SET response from a request.
*/
static fromRequest(request: NSetRequest): NSetResponse;
}
declare class CCancelRequest extends Request {
/**
* Creates an instance of CCancelRequest.
*/
constructor(affectedSopClassUid: string, messageId: number);
/**
* Gets message ID to cancel.
*/
getMessageIdBeingRespondedTo(): number;
/**
* Sets message ID to cancel.
*/
setMessageIdBeingRespondedTo(messageId: number): void;
/**
* Creates a C-CANCEL request from a C-FIND, C-MOVE or C-GET request.
*/
static fromRequest(request: CFindRequest | CMoveRequest | CGetRequest): CCancelRequest;
}
declare class Network extends AsyncEventEmitter<AsyncEventEmitter.EventMap> {
/**
* Creates an instance of Network.
*/
constructor(
socket: Socket | TLSSocket,
opts?: {
connectTimeout?: number;
associationTimeout?: number;
pduTimeout?: number;
logCommandDatasets?: boolean;
logDatasets?: boolean;
datasetReadOptions?: Record<string, unknown>;
datasetWriteOptions?: Record<string, unknown>;
datasetNameMap?: Record<string, unknown>;
datasetTranscodeOptions?: Record<string, unknown>;
}
);
/**
* Sends association request.
*/
sendAssociationRequest(association: Association): void;
/**
* Sends association accept.
*/
sendAssociationAccept(): void;
/**
* Sends association reject.
*/
sendAssociationReject(result?: number, source?: number, reason?: number): void;
/**
* Sends association release request.
*/
sendAssociationReleaseRequest(): void;
/**
* Sends association release response.
*/
sendAssociationReleaseResponse(): void;
/**
* Sends requests.
*/
sendRequests(requests: Array<Request> | Request): void;
/**
* Sends response for a specific request.
*/
sendResponse(request: Request, response: Response): void;
/**
* Sends cancel request.
*/
sendCancel(request: CFindRequest | CMoveRequest | CGetRequest): void;
/**
* Sends abort request.
*/
sendAbort(source?: number, reason?: number): void;
}
declare class Statistics {
/**
* Creates an instance of Statistics.
*/
constructor();
/**
* Gets the received bytes.
*/
getBytesReceived(): number;
/**
* Gets the sent bytes.
*/
getBytesSent(): number;
/**
* Adds bytes to the received bytes.
*/
addBytesReceived(bytes: number): void;
/**
* Adds bytes to the sent bytes.
*/
addBytesSent(bytes: number): void;
/**
* Adds values from other statistics.
*/
addFromOtherStatistics(statistics: Statistics): void;
/**
* Resets received and sent bytes.
*/
reset(): void;
/**
* Gets the statistics description.
*/
toString(): string;
}
declare class Scp extends Network {
/**
* Creates an instance of Scp.
*/
constructor(
socket: Socket | TLSSocket,
opts?: {
connectTimeout?: number;
associationTimeout?: number;
pduTimeout?: number;
logCommandDatasets?: boolean;
logDatasets?: boolean;
datasetReadOptions?: Record<string, unknown>;
datasetWriteOptions?: Record<string, unknown>;
datasetNameMap?: Record<string, unknown>;
datasetTranscodeOptions?: Record<string, unknown>;
securityOptions?: {
key?: string | Array<string> | Buffer | Array<Buffer>;
cert?: string | Array<string> | Buffer | Array<Buffer>;
ca?: string | Array<string> | Buffer | Array<Buffer>;
requestCert?: boolean;
rejectUnauthorized?: boolean;
minVersion?: string;
maxVersion?: string;
ciphers?: string;
SNICallback?:
| ((servername: string, cb: (err: Error | null, ctx?: SecureContext) => void) => void)
| undefined;
};
customOptions?: Record<string, unknown>;
}
);
/**
* Allows the caller to create a Writable stream to accumulate the C-STORE dataset.
* The default implementation creates a memory Writable stream that for, big instances,
* could cause out of memory situations.
*/
createStoreWritableStream(
acceptedPresentationContext: PresentationContext,
request: CStoreRequest
): Writable;
/**
* Allows the caller to create a Dataset from the Writable stream used to
* accumulate the C-STORE dataset. The created Dataset is passed to the
* Scp.cStoreRequest method for processing.
*/
createDatasetFromStoreWritableStream(
writable: Writable,
acceptedPresentationContext: PresentationContext,
callback: (dataset: Dataset) => void
): void;
/**
* Association request received.
*/
associationRequested(association: Association): void;
/**
* Association release request received.
*/
associationReleaseRequested(): void;
/**
* C-ECHO request received.
*/
cEchoRequest(request: CEchoRequest, callback: (response: CEchoResponse) => void): void;
/**
* C-FIND request received.
*/
cFindRequest(request: CFindRequest, callback: (responses: Array<CFindResponse>) => void): void;
/**
* C-STORE request received.
*/
cStoreRequest(request: CStoreRequest, callback: (response: CStoreResponse) => void): void;
/**
* C-MOVE request received.
*/
cMoveRequest(request: CMoveRequest, callback: (responses: Array<CMoveResponse>) => void): void;
/**
* C-GET request received.
*/
cGetRequest(request: CGetRequest, callback: (responses: Array<CGetResponse>) => void): void;
/**
* N-CREATE request received.
*/
nCreateRequest(request: NCreateRequest, callback: (response: NCreateResponse) => void): void;
/**
* N-ACTION request received.
*/
nActionRequest(request: NActionRequest, callback: (response: NActionResponse) => void): void;
/**
* N-DELETE request received.
*/
nDeleteRequest(request: NDeleteRequest, callback: (response: NDeleteResponse) => void): void;
/**
* N-EVENT-REPORT request received.
*/
nEventReportRequest(
request: NEventReportRequest,
callback: (response: NEventReportResponse) => void
): void;
/**
* N-GET request received.
*/
nGetRequest(request: NGetRequest, callback: (response: NGetResponse) => void): void;
/**
* N-SET request received.
*/
nSetRequest(request: NSetRequest, callback: (response: NSetResponse) => void): void;
/**
* C-CANCEL request received.
*/
cCancelRequest(request: CCancelRequest): void;
/**
* A-ABORT received.
*/
abort(source: number, reason: number): void;
}
declare class Server extends AsyncEventEmitter<AsyncEventEmitter.EventMap> {
/**
* Creates an instance of Server.
*/
constructor(scpClass: typeof Scp);
/**
* Listens for incoming connections.
*/
listen(
port: number,
opts?: {
connectTimeout?: number;
associationTimeout?: number;
pduTimeout?: number;
logCommandDatasets?: boolean;
logDatasets?: boolean;
datasetReadOptions?: Record<string, unknown>;
datasetWriteOptions?: Record<string, unknown>;
datasetNameMap?: Record<string, unknown>;
datasetTranscodeOptions?: Record<string, unknown>;
securityOptions?: {
key?: string | Array<string> | Buffer | Array<Buffer>;
cert?: string | Array<string> | Buffer | Array<Buffer>;
ca?: string | Array<string> | Buffer | Array<Buffer>;
requestCert?: boolean;
rejectUnauthorized?: boolean;
minVersion?: string;
maxVersion?: string;
ciphers?: string;
SNICallback?:
| ((servername: string, cb: (err: Error | null, ctx?: SecureContext) => void) => void)
| undefined;
};
customOptions?: Record<string, unknown>;
}
): void;
/**
* Gets network statistics.
*/
getStatistics(): Statistics;
/**
* Closes server.
*/
close(): void;
}
declare class Client extends AsyncEventEmitter<AsyncEventEmitter.EventMap> {
/**
* Creates an instance of Client.
*/
constructor();
/**
* Adds a request.
*/
addRequest(request: Request): void;
/**
* Clears all requests.
*/
clearRequests(): void;
/**
* Adds an additional presentation context.
*/
addAdditionalPresentationContext(context: PresentationContext, addAsNew?: boolean): void;
/**
* Sends requests to the remote host.
*/
send(
host: string,
port: number,
callingAeTitle: string,
calledAeTitle: string,
opts?: {
connectTimeout?: number;
associationTimeout?: number;
pduTimeout?: number;
associationLingerTimeout?: number;
logCommandDatasets?: boolean;
logDatasets?: boolean;
datasetReadOptions?: Record<string, unknown>;
datasetWriteOptions?: Record<string, unknown>;
datasetNameMap?: Record<string, unknown>;
datasetTranscodeOptions?: Record<string, unknown>;
asyncOps?: {
maxAsyncOpsInvoked?: number;
maxAsyncOpsPerformed?: number;
};
userIdentity?: {
type?: number;
positiveResponseRequested?: boolean;
primaryField?: string;
secondaryField?: string;
};
securityOptions?: {
key?: string | Array<string> | Buffer | Array<Buffer>;
cert?: string | Array<string> | Buffer | Array<Buffer>;
ca?: string | Array<string> | Buffer | Array<Buffer>;
requestCert?: boolean;
rejectUnauthorized?: boolean;
minVersion?: string;
maxVersion?: string;
ciphers?: string;
};
}
): void;
/**
* Gets network statistics.
*/
getStatistics(): Statistics;
/**
* Aborts the established association.
*/
abort(source?: number, reason?: number): void;
/**
* Cancels a C-FIND, C-MOVE or C-GET request.
*/
cancel(request: CFindRequest | CMoveRequest | CGetRequest): void;
}
declare class Transcoding {
/**
* Initializes transcoding using dcmjs-codecs native codecs webassembly.
*/
static initializeAsync(opts?: {
webAssemblyModulePathOrUrl?: string;
logCodecsInfo?: boolean;
logCodecsTrace?: boolean;
}): Promise<void>;
/**
* Releases dcmjs-codecs native codecs webassembly.
*/
static release(): void;
/**
* Transcodes a dataset to a different transfer syntax.
*/
static transcodeDataset(
dataset: Dataset,
transferSyntax: string,
opts?: Record<string, unknown>
): Dataset;
}
/**
* Logger.
*/
declare const log: Logger;
/**
* Version.
*/
declare const version: string;
export namespace constants {
export { PresentationContextResult };
export { UserIdentityType };
export { AbortSource };
export { AbortReason };
export { RejectResult };
export { RejectSource };
export { RejectReason };
export { Priority };
export { Status };
export { StorageClass };
export { SopClass };
export { TransferSyntax };
}
export namespace association {
export { PresentationContext };
export { Association };
}
export namespace requests {
export { Request };
export { CEchoRequest };
export { CFindRequest };
export { CStoreRequest };
export { CMoveRequest };
export { CGetRequest };
export { NCreateRequest };
export { NActionRequest };
export { NDeleteRequest };
export { NEventReportRequest };
export { NGetRequest };
export { NSetRequest };
export { CCancelRequest };
}
export namespace responses {
export { Response };
export { CEchoResponse };
export { CFindResponse };
export { CStoreResponse };
export { CMoveResponse };
export { CGetResponse };
export { NCreateResponse };
export { NActionResponse };
export { NDeleteResponse };
export { NEventReportResponse };
export { NGetResponse };
export { NSetResponse };
}
export { Dataset, Implementation, Client, Server, Scp, Statistics, Transcoding, log, version };