HS.HC.MPI.Manager
class HS.HC.MPI.Manager extends HS.HC.Util.Trace.Helper, Ens.BusinessOperation
The default MPI Manager component.Determines how to handle MPI requests; sends messages to the MPI Operations component (which is different for different MPIs).
Property Inventory
- ConsentProcessor
- DemographicLinkMode
- DynamicAssignAuthorityRegistration
- DynamicFacilityRegistration
- IdentifierCompatibilityMode
- MPIOperations
- MPISecondaryOperations
- MPITimeout
- MatchMode
- MaxMatches
- PIXManager
- PostProcessor
- PreProcessor
- PushEvaluator
Method Inventory
- AAQBackground()
- AAResendQ()
- AAUpdateQ()
- AddPatient()
- AddUpdateHub()
- Audit()
- AuditSearchResponse()
- ConsentProcessing()
- CopyAndHandleQuotes()
- CreateAndSendPIXNotification()
- DelegateToMPI()
- DetermineMPIID()
- ExternalUpdateMPIIDRequest()
- GetMPIID()
- HasFeedableMRNs()
- InvokePostProcessor()
- InvokePreProcessor()
- LoadPatient()
- MRNtoMPIID()
- MergeLink()
- MergePatient()
- OnMPIUpdate()
- OnMRNDelete()
- OnMRNMerge()
- PrimarySearch()
- ProcessSecondaryMPISearch()
- ReturnMPIID()
- SearchMPI()
- UpdateAnalytics()
- UpdateMPIIDRequest()
- UpdateNotificationGetPriorIdentifiers()
- UpdatePatient()
Parameters
parameter DOMAIN = HS;
parameter HSDEPLOY = 1;
parameter INVOCATION = InProc;
Invoke InProc
parameter SETTINGS = DemographicLinkMode,MatchMode,DynamicFacilityRegistration, DynamicAssignAuthorityRegistration, , MaxMatches,PIXManager,IdentifierCompatibilityMode;
Settings for this Business Process
Properties
property ConsentProcessor as Ens.DataType.ConfigName;
Name of the Consent Manager component in this production that applies consent filtering
Property methods: ConsentProcessorDisplayToLogical(), ConsentProcessorGet(), ConsentProcessorIsValid(), ConsentProcessorLogicalToDisplay(), ConsentProcessorLogicalToOdbc(), ConsentProcessorNormalize(), ConsentProcessorParseConfigNameSpec(), ConsentProcessorSet()
property DemographicLinkMode as %String (DISPLAYLIST = ",Probable,Strict,Never", VALUELIST = ",Probable,Strict,Never") [ InitialExpression = "Probable" ];
This is only applicable if there's no external patient matching engine
Flag to control how/if the MPI should link record based on demographic match. Values are:
- Probable: Will match based on lastname+firstname+address+phone+fuzzy birthdate, OR
lastname+firstname+zip+birthdate, OR lastname+SSN, OR firstname+SSN+birthdate
- Strict: Will match based on lastname+firstname+address+phone+birthdate, OR
lastname+SSN+zip+birthdate, OR firstname+SSN+zip+birthdate
- Never: No linking of MRNs is done on demographics
Property methods: DemographicLinkModeDisplayToLogical(), DemographicLinkModeGet(), DemographicLinkModeIsValid(), DemographicLinkModeLogicalToDisplay(), DemographicLinkModeLogicalToOdbc(), DemographicLinkModeNormalize(), DemographicLinkModeSet()
property DynamicAssignAuthorityRegistration as %Boolean [ InitialExpression = 1 ];
Set this to false if you do not want to permit inbound update requests to cause new assign authorities
to be added to the assigning authority table for medical record numbers
And note that an assigning authority may also get created for a facility as part of dynamic facility registration
Property methods: DynamicAssignAuthorityRegistrationDisplayToLogical(), DynamicAssignAuthorityRegistrationGet(), DynamicAssignAuthorityRegistrationIsValid(), DynamicAssignAuthorityRegistrationLogicalToDisplay(), DynamicAssignAuthorityRegistrationNormalize(), DynamicAssignAuthorityRegistrationSet()
property DynamicFacilityRegistration as %Boolean [ InitialExpression = 0 ];
Set this to true if you want to permit inbound update requests to cause new facilities
to be added to the facility table.
Property methods: DynamicFacilityRegistrationDisplayToLogical(), DynamicFacilityRegistrationGet(), DynamicFacilityRegistrationIsValid(), DynamicFacilityRegistrationLogicalToDisplay(), DynamicFacilityRegistrationNormalize(), DynamicFacilityRegistrationSet()
property IdentifierCompatibilityMode as %Boolean [ InitialExpression = 1 ];
If IdentifierCompatibilityMode is true, then an incoming patient update with at least one identifier
will clear all existing identifiers (except use "SN", insurance IDs), regardless of whether any of the incoming identifiers has
the same type. Identifiers with use "SN" will only be replaced if one of the incoming identifiers also has use "SN".
If IdentifierCompatibilityMode is false, then any existing identifiers will only be removed if the incoming patient update has at least one identifier with the same use.
If IdentifierCompatibilityMode is false, then any existing identifiers will only be removed if the incoming patient update has at least one identifier with the same use.
Property methods: IdentifierCompatibilityModeDisplayToLogical(), IdentifierCompatibilityModeGet(), IdentifierCompatibilityModeIsValid(), IdentifierCompatibilityModeLogicalToDisplay(), IdentifierCompatibilityModeNormalize(), IdentifierCompatibilityModeSet()
property MPIOperations as Ens.DataType.ConfigName;
If there's an external patient matching engine, this should be the name of the business operation
that sends messages to the external patient matching engine
Property methods: MPIOperationsDisplayToLogical(), MPIOperationsGet(), MPIOperationsIsValid(), MPIOperationsLogicalToDisplay(), MPIOperationsLogicalToOdbc(), MPIOperationsNormalize(), MPIOperationsParseConfigNameSpec(), MPIOperationsSet()
property MPISecondaryOperations as Ens.DataType.ConfigName;
For secondary MPIs, which need to be queried only after getting the primary response
Property methods: MPISecondaryOperationsDisplayToLogical(), MPISecondaryOperationsGet(), MPISecondaryOperationsIsValid(), MPISecondaryOperationsLogicalToDisplay(), MPISecondaryOperationsLogicalToOdbc(), MPISecondaryOperationsNormalize(), MPISecondaryOperationsParseConfigNameSpec(), MPISecondaryOperationsSet()
property MPITimeout as %Integer [ InitialExpression = -1 ];
Timeout in seconds for MPI operations. -1 means no timeout
Property methods: MPITimeoutDisplayToLogical(), MPITimeoutGet(), MPITimeoutIsValid(), MPITimeoutLogicalToDisplay(), MPITimeoutNormalize(), MPITimeoutSet()
property MatchMode as %String (VALUELIST = ",Exact,Any") [ InitialExpression = "Any" ];
Exact match mode, value is one of:
Exact: The search results must match only one patient. This means only one MPIID should be returned
by the search (perhaps with several records), else it will be aborted (returning no results).
The abort will occur even if later conditions (consent, infotype filters, etc) would reduce the
number of patients to just 1.
Any: The search can match any results (more than one patient)
Property methods: MatchModeDisplayToLogical(), MatchModeGet(), MatchModeIsValid(), MatchModeLogicalToDisplay(), MatchModeLogicalToOdbc(), MatchModeNormalize(), MatchModeSet()
property MaxMatches as %Integer [ InitialExpression = 50 ];
Only applicable if there is no external patient matching engine, or
if we're doing a search that bypasses the external engine (by cohort, by relationship, etc.)
Maximum number of MPIID matches to return during a patient search
Property methods: MaxMatchesDisplayToLogical(), MaxMatchesGet(), MaxMatchesIsValid(), MaxMatchesLogicalToDisplay(), MaxMatchesNormalize(), MaxMatchesSet()
property PIXManager as Ens.DataType.ConfigName;
Which Host to send IDUpdateNotificationRequests
Property methods: PIXManagerDisplayToLogical(), PIXManagerGet(), PIXManagerIsValid(), PIXManagerLogicalToDisplay(), PIXManagerLogicalToOdbc(), PIXManagerNormalize(), PIXManagerParseConfigNameSpec(), PIXManagerSet()
property PostProcessor as Ens.DataType.ConfigName;
Name of a custom business host that defines a step for the MPI Manager to perform after it processes the search results, update, etc.
Property methods: PostProcessorDisplayToLogical(), PostProcessorGet(), PostProcessorIsValid(), PostProcessorLogicalToDisplay(), PostProcessorLogicalToOdbc(), PostProcessorNormalize(), PostProcessorParseConfigNameSpec(), PostProcessorSet()
property PreProcessor as Ens.DataType.ConfigName;
Name of a custom business host that defines a step for the MPI Manager to perform just before it communicates with the MPI Operations component.
Property methods: PreProcessorDisplayToLogical(), PreProcessorGet(), PreProcessorIsValid(), PreProcessorLogicalToDisplay(), PreProcessorLogicalToOdbc(), PreProcessorNormalize(), PreProcessorParseConfigNameSpec(), PreProcessorSet()
property PushEvaluator as Ens.DataType.ConfigName [ InitialExpression = "HS.Hub.Push.Evaluator" ];
Name of the Push Evaluation Operation component that performs ***
Property methods: PushEvaluatorDisplayToLogical(), PushEvaluatorGet(), PushEvaluatorIsValid(), PushEvaluatorLogicalToDisplay(), PushEvaluatorLogicalToOdbc(), PushEvaluatorNormalize(), PushEvaluatorParseConfigNameSpec(), PushEvaluatorSet()
Methods
classmethod AAQBackground(pGateway)
This is jobbed by the management operations when it receives a gateway registration request which changes a
gateway's FeedAnalytics property, and when we're globally set up to do analytics feeding
classmethod AAResendQ(pMPIID, pNoCheck=0)
pNoCheck avoids a redundant check to see if we're doing analytics feeding
classmethod AAUpdateQ(pRequest, pMPIID, pMRN) as %Status
method AddPatient(ByRef pRequest As HS.Message.AddPatientRequest, pAddUpRequest As HS.Message.AddUpdateHubRequest, pIsHomeFacility) as %Status
method AddUpdateHub(pRequest As HS.Message.AddUpdateHubRequest, Output pResponse As HS.Message.AddUpdateHubResponse) as %Status
classmethod Audit(pEventAction, pPatient As HS.Registry.Patient, pRequest As HS.Types.RequestInfo, pOldData As %String = "") as %Status
event action - C - create, U - Update, D - Delete
method AuditSearchResponse(pNewRequest, pResponse) as %Status
method ConsentProcessing(pNewRequest, Output pResponse, pProgramConsent) as %Status
classmethod CopyAndHandleQuotes(pOriginal As %RegisteredObject) as %RegisteredObject
Copies an object, replacing any properties equal to double quotes with an empty value
Recurses on object properties, and handles array and list collections of both objects and datatypes
Recurses on object properties, and handles array and list collections of both objects and datatypes
method CreateAndSendPIXNotification(pMPIID, pUpdateNotification As HS.Message.IDUpdateNotificationRequest = "") as %Status
method DelegateToMPI(pRequest As Ens.Request, ByRef pResponse As Ens.Response) as %Status
Delegate this message to the MPI
method DetermineMPIID(ByRef pRequest As HS.Message.AddPatientRequest) as %Status
If no external patient matching engine, determine this directly from the registry
method ExternalUpdateMPIIDRequest(pRequest As HS.Message.IDUpdateNotificationRequest, Output pResponse As HS.Message.AddUpdateHubResponse) as %Status
Invoke pre and postprocessors when an inbound request is received from an external MPI to update the MPI ID for one or many MRN's
classmethod GetMPIID(pRequest As HS.Message.PatientSearchRequest, ByRef pResponse As HS.Message.PatientSearchResponse, pFull As %Boolean = 1) as %Status
Utility method
Used to fetch a patient search response, based on an MPIID, or MRN+AA. For compatibility, this uses the more
generic search request, but ignores everything except for the MPIID, MRN, AA
Used to get the patient name or to get a list of MRN, for audit reports, etc.
pFull - if true, load the full patient. Otherwise, just return MRN, Facility, AA
classmethod HasFeedableMRNs(pMPIID) as %Boolean
Pass in an MPIID. Will determine if the MPIID has any MRNs which belong to facilities
which reside on a gateway that is configured to feed analytics
method InvokePostProcessor(pRequest As Ens.Request, ByRef pResponse As Ens.Response) as %Status
method InvokePreProcessor(ByRef pRequest As Ens.Request) as %Status
classmethod LoadPatient(pPatient As HS.Registry.Patient, ByRef pPatientInfo As HS.Types.PatientInfo) as %Status
classmethod MRNtoMPIID(pAA, pMRN) as %String
Utility method - pass in pAA, pMRN, and it will return either the corresponding MPIID if found, or "" if not
method MergeLink(pRequest As HS.Message.MergePatientRequest, Output pResponse As HS.Message.MergePatientResponse) as %Status
method MergePatient(pRequest As HS.Message.MergePatientRequest, Output pResponse As HS.Message.MergePatientResponse) as %Status
classmethod OnMPIUpdate(pIDUpdateRequest As HS.Message.IDUpdateNotificationRequest = "") as %Status
Updating the MPI ID from one value to another
Called when an MRN is deleted.
classmethod OnMRNMerge(pRequest As HS.Message.MergePatientRequest, pPriorMPIID As %String, pTargetMPIID As %String) as %Status
Called when one MRN is merged into another to update cohorts / consent
method PrimarySearch(pRequest As HS.Message.PatientSearchRequest, ByRef pResponse As HS.Message.PatientSearchResponse) as %Status
method ProcessSecondaryMPISearch(pRequest As HS.Message.PatientSecondarySearchRequest, ByRef pResponse As HS.Message.PatientSearchResponse, pSecondaryOps) as %Status
Run a patient search through multiple MPIs
Utility method, a bit simpler than GetMPIID, for those who will be fetching only by MPIID
method SearchMPI(pRequest As HS.Message.PatientSearchRequest, pResponse As HS.Message.PatientSearchResponse) as %Status
Search the MPI. pRequest.SearchMode: user - regular view-type search. Does consent & infotype filter, drops results whose facility has no gateway (i.e. mini-reg only)
Admin: administrative: no consent filter, no return of facility/MRN.
participation: special for RI participation gateway. Suppress Audit
clinician: special consent filter - also passes if there's a relationship
PIXPDQ: for PIX or PDQ
PIXPDQ_c: for PIX or PDQ, consent applied
AuditReport: deprecated
classmethod UpdateAnalytics(pMPIID)
method UpdateMPIIDRequest(pRequest As HS.Message.IDUpdateNotificationRequest, Output pResponse As HS.Message.AddUpdateHubResponse) as %Status
An inbound request from the MPI to update the MPI ID for one or many MRN's
classmethod UpdateNotificationGetPriorIdentifiers(pMPIID As %String) as HS.Message.IDUpdateNotificationRequest
method UpdatePatient(pPatient As HS.Registry.Patient, ByRef pRequest As HS.Message.AddPatientRequest, pAddUpRequest As HS.Message.AddUpdateHubRequest, pIsHomeFacility) as %Status
Inherited Members
Inherited Properties
- %AlertStartTime
- %ConfigName
- %ConfigQueueName
- %LastActionTime
- %LastHandledTime
- %LastReportedError
- %QuitTask
- %RequestHeader
- %SessionId
- %SuperSession
- %WarnedLatest
- %isShadow
- Adapter
- AlertGroups
- AlertOnError
- AlertRetryGracePeriod
- ArchiveIO
- BusinessPartner
- DeferResponse
- FailureTimeout
- IOLogEntry
- InactivityTimeout
- NoFailWhileDisconnected
- QueueCountAlert
- QueueWaitAlert
- ReplyCodeActions
- Retry
- RetryCount
- RetryInterval
- SendSuperSession
- SuspendMessage
- ThrottleDelay
- TraceOperations
Inherited Methods
- %AddToSaveSet()
- %ClassIsLatestVersion()
- %ClassName()
- %ConstructClone()
- %DispatchClassMethod()
- %DispatchGetModified()
- %DispatchGetProperty()
- %DispatchMethod()
- %DispatchSetModified()
- %DispatchSetMultidimProperty()
- %DispatchSetProperty()
- %Extends()
- %GetParameter()
- %IsA()
- %IsModified()
- %New()
- %NormalizeObject()
- %ObjectModified()
- %OnClose()
- %OnNew()
- %OriginalNamespace()
- %PackageName()
- %RemoveFromSaveSet()
- %SerializeObject()
- %SetModified()
- %SuperSessionSet()
- %ValidateObject()
- AdapterName()
- AssignOneSetting()
- BuildTraceRequest()
- CloseIOLogEntry()
- DeferResponse()
- EnumerateSettingsClose()
- EnumerateSettingsExecute()
- EnumerateSettingsFetch()
- GenerateSuperSession()
- GetDeferredResponseToken()
- GetMessageList()
- GetMsgHdrRequestKey()
- GetProductionSettingValue()
- GetProductionSettings()
- GetPropertyConnections()
- GetSettings()
- GetShadowInstance()
- HSTrace()
- IncludeSuperSession()
- NewIOLogEntry()
- OnError()
- OnFailureTimeout()
- OnGenerateSuperSession()
- OnGetConnections()
- OnGetReplyAction()
- OnInit()
- OnKeepalive()
- OnMessage()
- OnMonitor()
- OnProductionStart()
- OnProductionStop()
- OnTearDown()
- QueueName()
- SaveIOLogEntry()
- SendAlert()
- SendDeferredResponse()
- SendRequestAsync()
- SendRequestSync()