Skip to main content

HS.IHE.XDSb.DocumentSource.Abstract

abstract class HS.IHE.XDSb.DocumentSource.Abstract extends HS.Util.BaseHost, HS.HC.Util.Trace.Helper, HS.Util.XSLTTransformer

Abstract functions common for XDSb Document Source and XDM Media Creator

Property Inventory

Method Inventory

Parameters

parameter DOMAIN = HS;

Properties

property AddNewPatients as %Boolean [ InitialExpression = 0 ];
True: If a ProvideAndRegisterRequest comes in with no patientId, and the sourceId doesn't match anyone in the registry, add them.
False: If a ProvideAndRegisterRequest comes in with no patientId, and the sourceId doesn't match anyone in the registry, throw an error.
Property methods: AddNewPatientsDisplayToLogical(), AddNewPatientsGet(), AddNewPatientsIsValid(), AddNewPatientsLogicalToDisplay(), AddNewPatientsNormalize(), AddNewPatientsSet()
property DocumentsInline as %Boolean [ InitialExpression = 0 ];
Send documents inline instead of as attachments
Property methods: DocumentsInlineDisplayToLogical(), DocumentsInlineGet(), DocumentsInlineIsValid(), DocumentsInlineLogicalToDisplay(), DocumentsInlineNormalize(), DocumentsInlineSet()
property MPIOperations as Ens.DataType.ConfigName [ InitialExpression = "HS.Hub.MPI.Manager" ];
Config Item where the Add/Update Operations will be sent
Property methods: MPIOperationsDisplayToLogical(), MPIOperationsGet(), MPIOperationsIsValid(), MPIOperationsLogicalToDisplay(), MPIOperationsLogicalToOdbc(), MPIOperationsNormalize(), MPIOperationsParseConfigNameSpec(), MPIOperationsSet()

Methods

method AddPatientRequest(pStream As %Stream, Output pSourcePatientID As %String, Output pGlobalIdentifier As %String) as %Status
method AttachDocuments(pUpdatedRequest As HS.Message.IHE.XDSb.ProvideAndRegisterRequest, pOutboundRequest As HS.Message.XMLMessage) as %Status
Attach binary or character documents to the outbound request
classmethod CMUpdateConfidentialityCode(ByRef pDocument, ByRef pXPathDoc) as %Status
Internal processing method for extracting the confidentiality code from the CDA document
classmethod CMUpdateCreationTime(ByRef pDocument, ByRef pXPathDoc) as %Status
Internal processing method for extracting the creation time from the CDA document
classmethod CMUpdateDocumentAuthor(ByRef pDocument, ByRef pXPathDoc) as %Status
Internal processing method for extracting the author from the CDA document
classmethod CMUpdateLanguageCode(ByRef pDocument, ByRef pXPathDoc) as %Status
Internal processing method for extracting the language code from the CDA document
classmethod CMUpdateNames(ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status
Internal processing method for extracting the name(title) from the CDA document
classmethod CMUpdateServiceTimes(ByRef pDocument, ByRef pXPathDoc) as %Status
Internal processing method for extracting the service times from the CDA document
classmethod CMUpdateSourcePatientId(ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status
Internal processing method for extracting SourcePatientId from the CDA document
classmethod CMUpdateSourcePatientInfo(ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status
Internal processing method for extracting SourcePatientInfo from the CDA document
method FindPatientID(pMRN, pAssigningAuthority, ByRef pSearchResponse) as %Status
classmethod GetAddPatientRequest(pCDAStream As %Stream, Output pAddRequest As HS.Message.AddUpdateHubRequest = "", Output pCDADocObject="") as %Status
method GetUpdatedAssociations(pRequest As HS.Message.IHE.XDSb.Metadata) as %Status
method GetUpdatedPatientId(pRequest As HS.Message.IHE.XDSb.ProvideAndRegisterRequest, Output pUpdatedRequest As HS.Message.IHE.XDSb.ProvideAndRegisterRequest) as %Status
HealthShare creates CCD's with MRN/AA as the source patient ID. We need to submit the document with the MPI ID
method GetUpdatedProvideRequest(pRequest As HS.Message.IHE.XDSb.ProvideAndRegisterRequest, Output pUpdatedRequest As HS.Message.IHE.XDSb.ProvideAndRegisterRequest) as %Status
if the request is CDA we may need to extract values from the document and update the request for this reason tUdpatedRequest is used so that the original transaction is not updated
method GetUpdatedRequest(ByRef pRequest As HS.Message.IHE.XDSb.Metadata, pHost As Ens.Host = ##this) as %Status
Use the content of the document (if CDA) to extract values for the metadata
pRequest - the will be updated with values where available
method UpdateAssociations(pRequest As HS.Message.IHE.XDSb.ProvideAndRegisterRequest) as %Status
method UpdateClassCode(pDocument, ByRef pXPathDoc) as %Status
Use the content of the CDA document to extract the "ClassCode"

Optionally define customization class by setting CustomProcessor to class name and define either method
Tracing in the methods with HSTRACECALLED, HSTRACECALLEDMIN, HSTRACECALLEDERROR
Call out to another Host Using pHost.SendRequestSync() or pHost.SendRequestAsync()
Assigning the ClassCode can be done in either the OnPre or OnPost code using the following
  • Set:pDocument.ClassCode.Code="" pDocument.ClassCode=##class(HS.Types.IHE.XDSb.SerialClassification).%New("34133-9","2.16.840.1.113883.6.1","Summarization of episode note")
  • or If pDocument.ClassCode.Code="" Set pDocument.ClassCode.Code="34133-9",pDocument.ClassCode.CodingScheme="2.16.840.1.113883.6.1" Do pDocument.ClassCode.Names.Insert("Summarization of episode note")

  • ClassMethod OnPreUpdateClassCode(pHost As Ens.Host , Output pStopProcessing as %Boolean, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • if pStopProcessing is true processing will terminate with tSC (returned from the method).
  • Updates can be done to the metadata object prior to any additional processing, such as providing necessary missing fields
  • ClassMethod OnPostUpdateTypeCode(pHost As Ens.Host, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • Additional processing can be done to the pDocument object
  • method UpdateConfidentialityCode(ByRef pDocument, ByRef pXPathDoc) as %Status
    Use the content of the CDA document to extract the "ConfidentialityCode"

    Optionally define customization class by setting CustomProcessor to class name and define either method
    Tracing in the methods with HSTRACECALLED, HSTRACECALLEDMIN, HSTRACECALLEDERROR
    Call out to another Host Using pHost.SendRequestSync() or pHost.SendRequestAsync()
    Assigning a Confidentiality code could be done in either the OnPre or OnPost code using the following
  • Do pDocument.ConfidentialityCode.Insert(##class(HS.Types.IHE.XDSb.CodedValue).Create(tCode,tScheme,tDescription))
  • ClassMethod OnPreUpdateConfidentialityCode(pHost As Ens.Host , Output pStopProcessing as %Boolean, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • if pStopProcessing is true processing will terminate with tSC (returned from the method).
  • Updates can be done to the metadata object prior to any additional processing.
  • ClassMethod OnPostUpdateConfidentialityCode(pHost As Ens.Host, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • Additional processing can be done to the pDocument object, such as defining the value
  • method UpdateCreationTime(ByRef pDocument, ByRef pXPathDoc) as %Status
    Use the content of the CDA document to extract the "CreationTime"

    Optionally define customization class by setting CustomProcessor to class name and define either method
    Tracing in the methods with HSTRACECALLED, HSTRACECALLEDMIN, HSTRACECALLEDERROR
    Call out to another Host Using pHost.SendRequestSync() or pHost.SendRequestAsync()
    Assigning the CreationTime can be done in either the OnPre or OnPost code using the following (YYYYMMDDHHMMSS as UTC)
  • Set:pDocument.CreationTime="" pDocument.CreationTime=##class(HS.Util.XSLTHelper).xmltimestampToUTC(##class(HS.Util.XSLTHelper).timestamp())

  • ClassMethod OnPreUpdateCreationTime(pHost As Ens.Host , Output pStopProcessing as %Boolean, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • if pStopProcessing is true processing will terminate with tSC (returned from the method).
  • Updates can be done to the metadata object prior to any additional processing, such as providing necessary missing fields
  • ClassMethod OnPostUpdateCreationTime(pHost As Ens.Host, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • Additional processing can be done to the pDocument object
  • method UpdateDocumentAuthor(ByRef pDocument, ByRef pXPathDoc) as %Status
    Use the content of the CDA document to extract the Document Author

    Optionally define customization class by setting CustomProcessor to class name and define either method
    Tracing in the methods with HSTRACECALLED, HSTRACECALLEDMIN, HSTRACECALLEDERROR
    Call out to another Host Using pHost.SendRequestSync() or pHost.SendRequestAsync()
    Assigning a document author could be done in either the OnPre or OnPost code using the following
    As suggested by ITI TF-3 section 4.2.3.1.4 example, the format is identifier^last^first^middle^suffix^prefix.
  • Quit:pDocument.Author.Count() $$$OK
  • Set tAuthor = ##class(HS.Types.IHE.XDSb.Author).%New()
    Set tAuthor.AuthorPerson=LastName_"^"_FirstName_"^"_MiddleName_"^"_Suffix_"^"_Prefix
  • Do tAuthor.AuthorInstitution.Insert(##class(HS.Types.IHE.XDSb.SlotValue).%New(SomeInstitutionName))
  • Do tDocument.Author.Insert(tAuthor)
  • ClassMethod OnPreUpdateDocumentAuthor(pHost As Ens.Host , Output pStopProcessing as %Boolean, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • if pStopProcessing is true processing will terminate with tSC (returned from the method).
  • Updates can be done to the pDocument object prior to any additional processing.
  • ClassMethod OnPostUpdateDocumentAuthor(pHost As Ens.Host, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • Additional processing can be done to the pDocument object, such as defining the value
  • method UpdateFormatCode(ByRef pDocument, ByRef pXPathDoc) as %Status
    Use the content of the CDA document to extract the "FormatCode"

    Optionally define customization class by setting CustomProcessor to class name and define either method
    Tracing in the methods with HSTRACECALLED, HSTRACECALLEDMIN, HSTRACECALLEDERROR
    Call out to another Host Using pHost.SendRequestSync() or pHost.SendRequestAsync()
    Assigning the FormatCode can be done in either the OnPre or OnPost code using the following
  • Set:pDocument.FormatCode.Code="" pDocument.FormatCode=##class(HS.Types.IHE.XDSb.SerialClassification).%New("2.16.840.1.113883.10.20.1","2.16.840.1.113883.3.88","HL7 CCD Document")
  • or If pDocument.FormatCode.Code="" Set pDocument.FormatCode.Code="2.16.840.1.113883.10.20.1",pDocument.FormatCode.CodingScheme="2.16.840.1.113883.3.88" Do pDocument.FormatCode.Names.Insert("HL7 CCD Document")

  • ClassMethod OnPreUpdateFormatCode(pHost As Ens.Host , Output pStopProcessing as %Boolean, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • if pStopProcessing is true processing will terminate with tSC (returned from the method).
  • Updates can be done to the metadata object prior to any additional processing, such as providing necessary missing fields
  • ClassMethod OnPostUpdateFormatCode(pHost As Ens.Host, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • Additional processing can be done to the pDocument object
  • method UpdateLanguageCode(ByRef pDocument, ByRef pXPathDoc) as %Status
    Use the content of the CDA document to extract the "LanguageCode"

    Optionally define customization class by setting CustomProcessor to class name and define either method
    Tracing in the methods with HSTRACECALLED, HSTRACECALLEDMIN, HSTRACECALLEDERROR
    Call out to another Host Using pHost.SendRequestSync() or pHost.SendRequestAsync()
    Assigning the LanguageCode can be done in either the OnPre or OnPost code using the following
  • Set pDocument.LanguageCode=tValue
  • ClassMethod OnPreUpdateLanguageCode(pHost As Ens.Host , Output pStopProcessing as %Boolean, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • if pStopProcessing is true processing will terminate with tSC (returned from the method).
  • Updates can be done to the metadata object prior to any additional processing, such as providing necessary missing fields
  • ClassMethod OnPostUpdateLanguageCode(pHost As Ens.Host, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • Additional processing can be done to the pDocument object
  • method UpdateNames(ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status
    Use the content of the CDA document to extract the "Names" also thought of as title

    Optionally define customization class by setting CustomProcessor to class name and define either method
    Tracing in the methods with HSTRACECALLED, HSTRACECALLEDMIN, HSTRACECALLEDERROR
    Call out to another Host Using pHost.SendRequestSync() or pHost.SendRequestAsync()
    Assigning the Name can be done in either the OnPre or OnPost code using the following
  • Do pDocument.Names.Insert(##class(HS.Types.IHE.XDSb.ValueType).%New(tValue))
  • ClassMethod OnPreUpdateNames(pHost As Ens.Host , Output pStopProcessing as %Boolean, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • if pStopProcessing is true processing will terminate with tSC (returned from the method).
  • Updates can be done to the metadata object prior to any additional processing, such as providing necessary missing fields
  • ClassMethod OnPostUpdateNames(pHost As Ens.Host, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • Additional processing can be done to the pDocument object
  • method UpdatePatientIdentifier(ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc, pRequired As %Boolean = 1) as %Status
    method UpdateServiceTimes(ByRef pDocument, ByRef pXPathDoc) as %Status
    Use the content of the CDA document to extract the ServiceStart and ServiceStop times

    Optionally define customization class by setting CustomProcessor to class name and define either method
    Tracing in the methods with HSTRACECALLED, HSTRACECALLEDMIN, HSTRACECALLEDERROR
    Assigning the service times can be done in either the OnPre or OnPost code using the following (YYYYMMDDHHMMSS as UTC)
  • Set pDocument.ServiceStartTime=##class(HS.Util.XSLTHelper).xmltimestampToUTC(##class(HS.Util.XSLTHelper).timestamp())
  • Set pDocument.ServiceStopTime=##class(HS.Util.XSLTHelper).xmltimestampToUTC(##class(HS.Util.XSLTHelper).timestamp())

  • ClassMethod OnPreUpdateServiceTimes(pHost As Ens.Host , Output pStopProcessing as %Boolean, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • if pStopProcessing is true processing will terminate with tSC (returned from the method).
  • Updates can be done to the pDocument object prior to any additional processing, such as extracting the service times from a different location in the CDA document
  • ClassMethod OnPostUpdateServiceTimes(pHost As Ens.Host, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • Additional processing can be done to the pDocument object, such as defaulting a value (Set pDocument.ServiceStartTime=$TR($zdt($h,8),": "),Document.ServiceStopTime=$TR($zdt($h,8),": ")) if the base code failed to locate a value
  • method UpdateSourcePatientId(ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status
    Use the content of the CDA document to extract the "SourcePatientId"

    Optionally define customization class by setting CustomProcessor to class name and define either method
    Tracing in the methods with HSTRACECALLED, HSTRACECALLEDMIN, HSTRACECALLEDERROR
    Call out to another Host Using pHost.SendRequestSync() or pHost.SendRequestAsync()
    ClassMethod OnPreUpdateSourcePatientId(pHost As Ens.Host , Output pStopProcessing as %Boolean, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • if pStopProcessing is true processing will terminate with tSC (returned from the method).
  • Updates can be done to the pDocument object prior to any additional processing, or the source patient id could be extracted from a different location in the document
  • ClassMethod OnPostUpdateSourcePatientId(pHost As Ens.Host, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • Additional processing can be done to the pDocument object, such as defaulting a value (Set pDocument.SourcePatientId="111^^^&1.2.3&ISO") if the base code failed to locate a value
  • method UpdateSourcePatientInfo(ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status
    Use the content of the CDA document to extract the "SourcePatientInfo"

    Optionally define customization class by setting CustomProcessor to class name and define either method
    Tracing in the methods with HSTRACECALLED, HSTRACECALLEDMIN, HSTRACECALLEDERROR
    Call out to another Host Using pHost.SendRequestSync() or pHost.SendRequestAsync()
    Assigning the SourcePatientInfo can be done in either the OnPre or OnPost code using the following
  • Do pDocument.SourcePatientInfo.Insert(##class(HS.Types.IHE.XDSb.SlotValue).%New("PID-3|"_pDocument.SourcePatientId))
  • Do pDocument.SourcePatientInfo.Insert(##class(HS.Types.IHE.XDSb.SlotValue).%New("PID-5|family^given^middle"))
  • Do pDocument.SourcePatientInfo.Insert(##class(HS.Types.IHE.XDSb.SlotValue).%New("PID-7|birthtime(yyyymmddhhmmss)"))
  • Do pDocument.SourcePatientInfo.Insert(##class(HS.Types.IHE.XDSb.SlotValue).%New("PID-8|gender"))
  • Do pDocument.SourcePatientInfo.Insert(##class(HS.Types.IHE.XDSb.SlotValue).%New("PID-11|addressline1;line2^additionallocator^city^state^postalcode"))
  • ClassMethod OnPreSourcePatientInfo(pHost As Ens.Host , Output pStopProcessing as %Boolean, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • if pStopProcessing is true processing will terminate with tSC (returned from the method).
  • Updates can be done to the metadata object prior to any additional processing, such as providing necessary missing fields
  • ClassMethod OnPostSourcePatientInfo(pHost As Ens.Host, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • Additional processing can be done to the pDocument object
  • method UpdateTypeCode(pDocument, ByRef pXPathDoc) as %Status
    Use the content of the CDA document to extract the "TypeCode"

    Optionally define customization class by setting CustomProcessor to class name and define either method
    Tracing in the methods with HSTRACECALLED, HSTRACECALLEDMIN, HSTRACECALLEDERROR
    Call out to another Host Using pHost.SendRequestSync() or pHost.SendRequestAsync()
    Assigning the TypeCode can be done in either the OnPre or OnPost code using the following
  • Set:pDocument.TypeCode.Code="" pDocument.TypeCode=##class(HS.Types.IHE.XDSb.SerialClassification).%New("34133-9","2.16.840.1.113883.6.1","Summarization of episode note")
  • or If pDocument.TypeCode.Code="" Set pDocument.TypeCode.Code="34133-9",pDocument.TypeCode.CodingScheme="2.16.840.1.113883.6.1" Do pDocument.TypeCode.Names.Insert("Summarization of episode note")

  • ClassMethod OnPreUpdateTypeCode(pHost As Ens.Host , Output pStopProcessing as %Boolean, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • if pStopProcessing is true processing will terminate with tSC (returned from the method).
  • Updates can be done to the metadata object prior to any additional processing, such as providing necessary missing fields
  • ClassMethod OnPostUpdateTypeCode(pHost As Ens.Host, ByRef pDocument As HS.Types.IHE.XDSb.Document, ByRef pXPathDoc) as %Status()
  • Additional processing can be done to the pDocument object
  • Inherited Members

    Inherited Properties

    Inherited Methods

    Subclasses

    FeedbackOpens in a new tab