Skip to main content

EnsLib.HL7.SequenceManager

persistent class EnsLib.HL7.SequenceManager extends Ens.BusinessProcess

SQL Table Name: EnsLib_HL7.SequenceManager

Property Inventory

Method Inventory

Parameters

parameter SETTINGS = EnableDuplicatedMessageCheck,PerformSequenceNumberCheckOn,PerformOutputTransformationOn,OutputSequenceNumberIndexField,OutputTargetConfigNames::selector?multiSelect=1&context={Ens.ContextSearch/ProductionItems?targets=1&productionName=@productionId},MessageWaitTimeout,PassThroughMessageTypes,OutOfSequenceMessageNoticeType,OutOfSequenceMessageTarget::selector?context={Ens.ContextSearch/ProductionItems?targets=1&productionName=@productionId},DuplicatedMessageNoticeType,DuplicatedMessageTarget::selector?context={Ens.ContextSearch/ProductionItems?targets=1&productionName=@productionId},OutputFacilityApplication,MessageResendableTimeWindow,LargeGapSize,BypassCheckOnInternalResent,FirstSequenceNumber;
Inherited description: List of properties can be set as settings in the configuration file format is a comma separated list of property names
parameter SKIPMESSAGEHISTORY = 1;
If this parameter is TRUE, then arrays %MessagesSent and %MessagesReceived will not be populated.

Properties

property BypassCheckOnInternalResent as %Boolean [ InitialExpression = 1 ];
If this property is false, we will by-pass internal resent messages
Property methods: BypassCheckOnInternalResentDisplayToLogical(), BypassCheckOnInternalResentGet(), BypassCheckOnInternalResentGetStored(), BypassCheckOnInternalResentIsValid(), BypassCheckOnInternalResentLogicalToDisplay(), BypassCheckOnInternalResentNormalize(), BypassCheckOnInternalResentSet()
property DuplicatedMessageNoticeType as %String (VALUELIST = ",OriginalMessage,WorkflowRequest") [ InitialExpression = "WorkflowRequest" , Required ];
The message type of duplicated message notice
Property methods: DuplicatedMessageNoticeTypeDisplayToLogical(), DuplicatedMessageNoticeTypeGet(), DuplicatedMessageNoticeTypeGetStored(), DuplicatedMessageNoticeTypeIsValid(), DuplicatedMessageNoticeTypeLogicalToDisplay(), DuplicatedMessageNoticeTypeLogicalToOdbc(), DuplicatedMessageNoticeTypeNormalize(), DuplicatedMessageNoticeTypeSet()
property DuplicatedMessageTarget as %String;
ConfigItem name to where duplicated message notices are sent
Property methods: DuplicatedMessageTargetDisplayToLogical(), DuplicatedMessageTargetGet(), DuplicatedMessageTargetGetStored(), DuplicatedMessageTargetIsValid(), DuplicatedMessageTargetLogicalToDisplay(), DuplicatedMessageTargetLogicalToOdbc(), DuplicatedMessageTargetNormalize(), DuplicatedMessageTargetSet()
property EnableDuplicatedMessageCheck as %Boolean [ InitialExpression = 1 ];
If this property is checked, the message control Id is checked for duplication
Property methods: EnableDuplicatedMessageCheckDisplayToLogical(), EnableDuplicatedMessageCheckGet(), EnableDuplicatedMessageCheckGetStored(), EnableDuplicatedMessageCheckIsValid(), EnableDuplicatedMessageCheckLogicalToDisplay(), EnableDuplicatedMessageCheckNormalize(), EnableDuplicatedMessageCheckSet()
property FirstSequenceNumber as %Integer;
This is he first sequence number expected. Default is empty and maintains prior behavior.
Property methods: FirstSequenceNumberDisplayToLogical(), FirstSequenceNumberGet(), FirstSequenceNumberGetStored(), FirstSequenceNumberIsValid(), FirstSequenceNumberLogicalToDisplay(), FirstSequenceNumberNormalize(), FirstSequenceNumberSet()
property LargeGapSize as %Integer [ InitialExpression = 100 ];
The gap size above which it is considered a 'large gap'.
The behavior of a 'large gap' is different from a 'small gap'.
When there is a small gap, we will wait 'MessageWaitTimeout' number of seconds for each missing sequence number inside the gap.

When there is a large gap, after sending an alert, we will immediately jump forward to the larger number without any wait.

Property methods: LargeGapSizeDisplayToLogical(), LargeGapSizeGet(), LargeGapSizeGetStored(), LargeGapSizeIsValid(), LargeGapSizeLogicalToDisplay(), LargeGapSizeNormalize(), LargeGapSizeSet()
property MessageResendableTimeWindow as %Integer [ InitialExpression = 300 ];
Number of seconds outside of which messages can be resent
Property methods: MessageResendableTimeWindowDisplayToLogical(), MessageResendableTimeWindowGet(), MessageResendableTimeWindowGetStored(), MessageResendableTimeWindowIsValid(), MessageResendableTimeWindowLogicalToDisplay(), MessageResendableTimeWindowNormalize(), MessageResendableTimeWindowSet()
property MessageWaitTimeout as %Integer [ InitialExpression = 60 ];
Number of seconds to wait for each late message
Property methods: MessageWaitTimeoutDisplayToLogical(), MessageWaitTimeoutGet(), MessageWaitTimeoutGetStored(), MessageWaitTimeoutIsValid(), MessageWaitTimeoutLogicalToDisplay(), MessageWaitTimeoutNormalize(), MessageWaitTimeoutSet()
property OutOfSequenceMessageNoticeType as %String (VALUELIST = ",OriginalMessage,WorkflowRequest") [ InitialExpression = "WorkflowRequest" , Required ];
The message type of out-of-sequence message notice
Property methods: OutOfSequenceMessageNoticeTypeDisplayToLogical(), OutOfSequenceMessageNoticeTypeGet(), OutOfSequenceMessageNoticeTypeGetStored(), OutOfSequenceMessageNoticeTypeIsValid(), OutOfSequenceMessageNoticeTypeLogicalToDisplay(), OutOfSequenceMessageNoticeTypeLogicalToOdbc(), OutOfSequenceMessageNoticeTypeNormalize(), OutOfSequenceMessageNoticeTypeSet()
property OutOfSequenceMessageTarget as %String;
ConfigItem name to where out-of-sequence message notices are sent
Property methods: OutOfSequenceMessageTargetDisplayToLogical(), OutOfSequenceMessageTargetGet(), OutOfSequenceMessageTargetGetStored(), OutOfSequenceMessageTargetIsValid(), OutOfSequenceMessageTargetLogicalToDisplay(), OutOfSequenceMessageTargetLogicalToOdbc(), OutOfSequenceMessageTargetNormalize(), OutOfSequenceMessageTargetSet()
property OutputFacilityApplication as %String;
The format of this property is Facility : Application

When PerformOutputTransformationOn is 'Sender', the output messages will be assigned new SendingFacility, SendingApplication using this property.
When PerformOutputTransformationOn is 'Receiver', the output messages will be assigned new ReceivingFacility, ReceivingApplication using this property.
When PerformOutputTransformationOn is 'SequenceNumberOnly', this property value is not used.

Property methods: OutputFacilityApplicationDisplayToLogical(), OutputFacilityApplicationGet(), OutputFacilityApplicationGetStored(), OutputFacilityApplicationIsValid(), OutputFacilityApplicationLogicalToDisplay(), OutputFacilityApplicationLogicalToOdbc(), OutputFacilityApplicationNormalize(), OutputFacilityApplicationSet()
property OutputSequenceNumberIndexField as %String (VALUELIST = ",Sender,Receiver,SendingFacility,SendingApplication,ReceivingFacility,ReceivingApplication,Auto") [ InitialExpression = "Auto" , Required ];
This field determines based on what fields the output sequence number is incremented. Value Sender means the index fields are SendingFacility and SendingApplication Value is Receiver means index fields are ReceivingFacility and ReceivingApplication If the Value is Auto, then it is determined from the PerformOutputTransformationOn. For example, if PerformOutputTransformationOn is Sender, then OutputSequenceNumberIndexField will be Sender. If PerformOutputTransformationOn is Receiver, then OutputSequenceNumberIndexField will be Receiver. If PerformOutputTransformationOn is SequenceNumberOnly, then OutputSequenceNumberIndexField will be Sender.
Property methods: OutputSequenceNumberIndexFieldDisplayToLogical(), OutputSequenceNumberIndexFieldGet(), OutputSequenceNumberIndexFieldGetStored(), OutputSequenceNumberIndexFieldIsValid(), OutputSequenceNumberIndexFieldLogicalToDisplay(), OutputSequenceNumberIndexFieldLogicalToOdbc(), OutputSequenceNumberIndexFieldNormalize(), OutputSequenceNumberIndexFieldSet()
property OutputTargetConfigNames as %String;
The comma seperated list of the target configuration names to which a successful output message should be sent
Property methods: OutputTargetConfigNamesDisplayToLogical(), OutputTargetConfigNamesGet(), OutputTargetConfigNamesGetStored(), OutputTargetConfigNamesIsValid(), OutputTargetConfigNamesLogicalToDisplay(), OutputTargetConfigNamesLogicalToOdbc(), OutputTargetConfigNamesNormalize(), OutputTargetConfigNamesSet()
property PassThroughMessageTypes as %String [ InitialExpression = "QBP_Q21,QBP_Q22,RSP_K21,RSP_K22,ACK" ];
This is a comma seperated list of message types of which the messages should be sent through without sequence check and without output transformation If the value is set to "*", then all the messages are treated as pass-through
Property methods: PassThroughMessageTypesDisplayToLogical(), PassThroughMessageTypesGet(), PassThroughMessageTypesGetStored(), PassThroughMessageTypesIsValid(), PassThroughMessageTypesLogicalToDisplay(), PassThroughMessageTypesLogicalToOdbc(), PassThroughMessageTypesNormalize(), PassThroughMessageTypesSet()
property PerformOutputTransformationOn as %String (VALUELIST = ",Sender,Receiver,SequenceNumberOnly,None") [ InitialExpression = "Sender" , Required ];
If this property is checked, the output transformation is performed.

The output transformation includes setting the Facility, Application and SequenceNumber. The new facility and application values are set in OutputFacilityApplication property.

If the value is set to "Sender", then the SendingFacility, SendingApplication and SequenceNumber are modified.
If the value is set to "Receiver", then the ReceivingFacility, ReceivingApplication and SequenceNumber are modified.
If the value is set to "SequenceNumberOnly", then only the sequence number is changed.

Property methods: PerformOutputTransformationOnDisplayToLogical(), PerformOutputTransformationOnGet(), PerformOutputTransformationOnGetStored(), PerformOutputTransformationOnIsValid(), PerformOutputTransformationOnLogicalToDisplay(), PerformOutputTransformationOnLogicalToOdbc(), PerformOutputTransformationOnNormalize(), PerformOutputTransformationOnSet()
property PerformSequenceNumberCheckOn as %String (VALUELIST = ",Sender,Receiver,SendingFacility,SendingApplication,ReceivingFacility,ReceivingApplication,None") [ InitialExpression = "Sender" , Required ];
This property indicates which field or fields are used as the index base upon which the sequence number check is performed. If the value is set to "SendingFacility", then the SendingFacility is used to do sequence number checks.
If the value is set to "SendingApplication", then the SendingApplication is used to do sequence number checks.
If the value is set to "ReceivingFacility", then the ReceivingFacility is used to do sequence number checks.
If the value is set to "ReceivingApplication", then the ReceivingApplication is used to do sequence number checks.
If the value is set to "Sender", then the SendingFacility, SendingApplication are used to do sequence number checks.
If the value is set to "Receiver", then the ReceivingFacility, ReceivingApplication are used to do sequence number checks.
If the value is set to "None", then no sequence number check is performed.
Property methods: PerformSequenceNumberCheckOnDisplayToLogical(), PerformSequenceNumberCheckOnGet(), PerformSequenceNumberCheckOnGetStored(), PerformSequenceNumberCheckOnIsValid(), PerformSequenceNumberCheckOnLogicalToDisplay(), PerformSequenceNumberCheckOnLogicalToOdbc(), PerformSequenceNumberCheckOnNormalize(), PerformSequenceNumberCheckOnSet()

Methods

classmethod CurrentRuntimeDataVersion() as %Integer
classmethod GetDuplicatedList(Output pArray As %String, Output pHandle As %String, pCount As %Integer) as %Status
classmethod GetExpiredList(Output pArray As %String, Output pHandle As %String, pCount As %Integer) as %Status
classmethod GetOutOfSequenceList(Output pArray As %String, Output pHandle As %String, pCount As %Integer) as %Status
classmethod MessageGetField(pMessage As %Persistent, pFieldCode As %Integer) as %String
Override this method in the subclass for messages other than EnsLib.HL7.Message Method requirements: 1) $$$eFieldSequenceNumber must return a numeric value 2) Facility and Application fields (4 fields) must return non-null values
classmethod MessageIsValid(pMessage As %Persistent) as %Boolean
Override this method in the subclass for messages other than EnsLib.HL7.Message
classmethod MessageSetField(pMessage As %Persistent, pFieldCode As %Integer, pValue As %String) as %Status
Override this method in the subclass for messages other than EnsLib.HL7.Message
classmethod OnGetConnections(Output pArray As %String, pItem As Ens.Config.Item)
Inherited description: This method is called when Ensemble Portal is drawing the production diagram pArray contains the config names the scanner found. Users can remove or add new names
method OnRequest(request As %Library.Persistent, Output response As Ens.Response) as %Status
Inherited description: Handle a 'Request'
method OnResponse(request As %Library.Persistent, ByRef response As %Library.Persistent, callrequest As %Library.Persistent, callresponse As %Library.Persistent, pCompletionKey As %String) as %Status
Handle a 'Response'
method checkMessageDuplication(pMessage As %Library.Persistent, Output pIsPassed As %Boolean) as %Status
method checkMessageSequenceNumber(pMessage As %Library.Persistent, Output pIsPassed As %Boolean, pThread As %String = "main") as %Status
method checkWaitingList() as %Status
classmethod getMetricsDetailList(pType As %String, Output pArray As %String, Output pHandle As %String, pCount As %Integer = 100) as %Status
method isBypassInternalResent() as %Boolean
method isPassThrough(pMessageType As %String) as %Boolean
method purgeIndex()
method recordIndex(pType, pFacility, pApplication, pSeqNumber, pSaveIndexCT=0, pSendingFacility="", pSendingApplication="", pControlId="", pMessageId="") as %Status
method recordIndexObj(pMessage As %Library.Persistent) as %Status
method sendDuplicated(pMessage As %Library.Persistent, pList As %String) as %Status
method sendOutOfSequence(pMessage As %Library.Persistent) as %Status
method sendOutputMessage(pMessage As %Library.Persistent, pSkipTransformation As %Boolean = 0) as %Status

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.HL7.SequenceManager)

^Ens.BusinessProcessD(ID,"SequenceManager")
=
SendingFacility
SendingApplication
TargetConfigName
NextSequenceNumber
WaitTimeout
WaitStarted
LateMessageConfigName
DuplicatedMessageConfigName
SequenceCheckExemptionTypes
OutputAction
OutputSendingApplication
OutputSendingFacility
PassThroughMessageTypes
OutOfSequenceMessageTarget
DuplicatedMessageTarget
OutputFacilityApplication
OutputTargetConfigNames
MessageWaitTimeout
PerformOutputTransformation
PerformControlIdCheck
PerformSequenceNumberCheck
EnableControlIdCheck
EnableSequenceNumberCheck
EnableOutputTransformation
EnableControlIdDuplicationCheck
EnableDuplicatedMessageCheck
PerformSequenceNumberCheckOn
PerformOutputTransformationOn
PerformDuplicatedMessageCheckOn
PerformDuplicatedMessageCheck
MessageResendableTimeWindow
LargeGapSize
OutputSequenceNumberIndexField
DuplicatedMessageNoticeType
OutOfSequenceMessageNoticeType
PerformSequenceCheckOnInternalResent
SkipSequenceNumberCheckOnInternalResent
BypassCheckOnInternalResent
FirstSequenceNumber

Storage Model: CacheStorage (EnsLib.HL7.SequenceManager)

^Ens.BusinessProcessD(ID,"WaitingList",n)
=
WaitingList(n)
FeedbackOpens in a new tab