This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.

For information on migrating to InterSystems IRIS, see Why Migrate to InterSystems IRIS?

Demo.DICOM.Process.WorkList

persistent class Demo.DICOM.Process.WorkList extends EnsLib.DICOM.Process

SQL Table Name: Demo_DICOM_Process.WorkList

This class demonstrates how to handle DICOM C-FIND-RQ and respond with worklist entries

Property Inventory

Method Inventory

Parameters

parameter SETTINGS = NumberOfWorkListEntries;
This parameter influences the number of worklist entries returned by a C-FIND-RQ

Properties

property DocumentFromService as EnsLib.DICOM.Document;
This is the incoming document from the business Sservice
Property methods: DocumentFromServiceGet(), DocumentFromServiceGetObject(), DocumentFromServiceGetObjectId(), DocumentFromServiceGetStored(), DocumentFromServiceGetSwizzled(), DocumentFromServiceIsValid(), DocumentFromServiceNewObject(), DocumentFromServiceSet(), DocumentFromServiceSetObject(), DocumentFromServiceSetObjectId(), DocumentFromServiceUnSwizzle()
property NumberOfWorkListEntries as %Integer [ InitialExpression = 1 ];
Property methods: NumberOfWorkListEntriesDisplayToLogical(), NumberOfWorkListEntriesGet(), NumberOfWorkListEntriesGetStored(), NumberOfWorkListEntriesIsValid(), NumberOfWorkListEntriesLogicalToDisplay(), NumberOfWorkListEntriesNormalize(), NumberOfWorkListEntriesSet()
property OriginatingMessageID as %Integer;
This keeps track of the OriginatingMessageID
Property methods: OriginatingMessageIDDisplayToLogical(), OriginatingMessageIDGet(), OriginatingMessageIDGetStored(), OriginatingMessageIDIsValid(), OriginatingMessageIDLogicalToDisplay(), OriginatingMessageIDNormalize(), OriginatingMessageIDSet()
property ReplyCounter as %Integer;
This keeps track of the number of replies sent to the worklist request
Property methods: ReplyCounterDisplayToLogical(), ReplyCounterGet(), ReplyCounterGetStored(), ReplyCounterIsValid(), ReplyCounterLogicalToDisplay(), ReplyCounterNormalize(), ReplyCounterSet()
property StudyInstanceCounter as %Integer [ InitialExpression = 0 ];
This provides a unique counter to disambiguate StudyInstances
Property methods: StudyInstanceCounterDisplayToLogical(), StudyInstanceCounterGet(), StudyInstanceCounterGetStored(), StudyInstanceCounterIsValid(), StudyInstanceCounterLogicalToDisplay(), StudyInstanceCounterNormalize(), StudyInstanceCounterSet()

Methods

method CreateFinalFindResponse(pDocIn As EnsLib.DICOM.Document, Output pDocOut As EnsLib.DICOM.Document) as %Status
Create a Final Find Response
method CreateIntermediateFindResponse(pDocIn As EnsLib.DICOM.Document, Output pDocOut As EnsLib.DICOM.Document) as %Status
Create an Intermediate find response
method CreateNCreateResponse(pDocIn As EnsLib.DICOM.Document, Output pDocOut As EnsLib.DICOM.Document) as %Status
Create a response to N-CREATE-RQ
method OnError(request As %Library.Persistent, ByRef response As %Library.Persistent, callrequest As %Library.Persistent, pErrorStatus As %Status, pCompletionKey As %String) as %Status
This method is called when any error occurs. Returning the same error will cause the BusinessProcess to set its status to error and close down
method OnMessage(pSourceConfigName As %String, pInput As %Library.Persistent) as %Status
This method handles the C-FIND-RQ and C-CANCEL-RQ messages. The find request asks for a query to be performed using the criteria specified in the request's data-set. The query *may* take significant time and produce many results so individual matches are reported in one or more messages. The protocol requires that all messages bar the last one have their status set to 'Pending'. This indicates to the client that there is more data coming. The last message has a status of 'Success' which means that the query has finished. In this example, the selection criteria are ignored and 'dummy' patient records are returned. A production implementation would necessarily be more complex.

Inherited Members

Inherited Properties

Inherited Methods

Storage

Gray indicates storage defined by superclasses.

Storage Model: CacheStorage (Ens.BusinessProcess)

^Ens.BusinessProcessD(ID,"pending",n)
=
%MasterPendingResponses(n)

Storage Model: CacheStorage (Ens.BusinessProcess)

^Ens.BusinessProcessD(ID,"received",n)
=
%MessagesReceived(n)

Storage Model: CacheStorage (Ens.BusinessProcess)

^Ens.BusinessProcessD(ID,"sent",n)
=
%MessagesSent(n)

Storage Model: CacheStorage (Ens.BusinessProcess)

^Ens.BusinessProcessD(ID)
=
%%CLASSNAME
%ConfigQueueName
%IsCompleted
%MasterPendingResponsesOld
%PrimaryRequestHeader
%PrimaryResponseHeader
%RepliedStatus
%responseId
Adapter
%SessionId
%TimeCompleted
%TimeCreated
%ConfigName
%QuitTask
AlertOnError
%responseClassName
%IsTimerInterrupted
%IsTerminated
%StatusCode
%MessagesReceivedOld
%MessagesSentOld
ReplyCodeActions
RetryInterval
AlertRetryGracePeriod
FailureTimeout
Retry
SuspendMessage
QueueCountAlert
QueueWaitAlert
InactivityTimeout
BusinessPartner
AlertGroups
%SuperSession

Storage Model: CacheStorage (EnsLib.PrivateSession.Process)

^Ens.BusinessProcessD(ID,"Process")
=
ServiceDuplexName
%IsInPrivateSession

Storage Model: CacheStorage (Demo.DICOM.Process.WorkList)

^Ens.BusinessProcessD(ID,"WorkList")
=
NumberOfWorkListEntries
OriginatingMessageID
DocumentFromService
ReplyCounter
StudyInstanceCounter
Feedback