Skip to main content

HS.SDA3.Result

serial class HS.SDA3.Result extends HS.SDA3.SuperClass

A Result can be a property of a LabOrder, RadOrder, or OtherOrder.
Results may be either text or atomic. Atomic results may have ResultItems.
Text results may have ResultText, FileType, DocumentName, Stream,
DocumentURL, and DocumentNumber. A LabOrder can contain either text or
atomic results, but not both. A RadOrder or OtherOrder can contain only
text results. In HL7ToSDA3, a result is determined to be atomic if
ORC-29.1="LAB" and either (a) at least one OBX-2 value for the result
is NOT "FT", "TX", or "ED", or (b) not all OBX segments are for the same
item (i.e. they don't all have the same OBX-3 value).
Otherwise, the result is text.

If HS.Gateway.HL7.InboundProcess has the compatibility setting
MultiLineOBXCompatibilityMode turned on, requirement (b) is dropped -
results are parsed as text even if their OBX-3 values differ, as long as
they all have an OBX-2 value of "FT", "TX", or "ED".

Property Inventory

Parameters

parameter CANOVERRIDEPROPLIST = ResultItems;
Inherited description: A comma separated list of properties where the calling streamlet can override the behavior of that property in the generated UpdateSDA method

Properties

property ActionCode as %String;
Not used.
Property methods: ActionCodeDisplayToLogical(), ActionCodeGet(), ActionCodeIsValid(), ActionCodeLogicalToDisplay(), ActionCodeLogicalToOdbc(), ActionCodeNormalize(), ActionCodeSet()
property ActionScope as %String;
Not used.
Property methods: ActionScopeDisplayToLogical(), ActionScopeGet(), ActionScopeIsValid(), ActionScopeLogicalToDisplay(), ActionScopeLogicalToOdbc(), ActionScopeNormalize(), ActionScopeSet()
property AuthorizationTime as HS.SDA3.TimeStamp;
Time the result was authenticated/verified
AuthorizationTime is meant to be used for text results only.

HL7ToSDA3:
OBR-22 is parsed to AuthorizationTime for text results only.

Viewer cache:
The OETextResult properties are set for text results only.

HL7: OBR-22.1 : ResultsRptStatusChngDateTime.Time
VIEWERLIB: User.HS.OETextResult(TRDateVerified) + User.HS.OETextResult(TRTimeVerified)
Property methods: AuthorizationTimeDisplayToLogical(), AuthorizationTimeGet(), AuthorizationTimeIsValid(), AuthorizationTimeLogicalToDisplay(), AuthorizationTimeLogicalToTimeStamp(), AuthorizationTimeLogicalToXSD(), AuthorizationTimeNormalize(), AuthorizationTimeOdbcToLogical(), AuthorizationTimeSet(), AuthorizationTimeXSDToLogical()
property Comments as %String);
Length subject to the total streamlet size limit - 3,000,000

HL7ToSDA3:
For atomic results, Comments is parsed from the NTE segments following the
OBR but before the first OBX. For text results, Result Comments cannot be
parsed from HL7. (NTEs in the same place in a text result are parsed as
Comments on the Order.)

Viewer cache:
OEORITestSetComments is set for both text and atomic results.
TRTestSetComments is set for text results only.

HL7: NTE-3 : Comment
VIEWERLIB: User.HS.OEOrdItem(OEORITestSetComments)
VIEWERLIB: User.HS.OETextResult(TRTestSetComments)
Property methods: CommentsDisplayToLogical(), CommentsGet(), CommentsIsValid(), CommentsLogicalToDisplay(), CommentsLogicalToOdbc(), CommentsNormalize(), CommentsSet()
property DocumentName as %String (MAXLEN = 220);
The name of the document
DocumentName is used for text results only.
The MAXLEN comes from the Trak property (TRDocumentName).

Streamlet cache:
For LabOrders, RadOrders, and OtherOrders, in the OnValidate method of the
Streamlet classes, if the Order has a text result and DocumentName is null,
it will be defaulted to DocumentURL. If still null and the Result has a
Stream of Size > 0, DocumentName will be defaulted to FileType.
If a stored text result of a LabOrder is updated to have atomic results (by
changing ResultType from "IM" to "AT"), a warning will be logged and
DocumentName (among other properties) set to null.

Viewer cache:
If the Result has a GUID that is not expired (GUIDExpDate in the future),
then TRDocumentName will be set to "View Image". Else TRDocumentName will
be set to the Result DocumentName. Note that TRDocumentName is used as the
text of the link to the document in the Clinical Viewer.

VIEWERLIB: User.HS.OETextResult(TRDocumentName)
Property methods: DocumentNameDisplayToLogical(), DocumentNameGet(), DocumentNameIsValid(), DocumentNameLogicalToDisplay(), DocumentNameLogicalToOdbc(), DocumentNameNormalize(), DocumentNameSet()
property DocumentNumber as %String (MAXLEN = 220);
Used as an external reference ID
DocumentNumber is used for text results only.

Streamlet cache:
If a stored text result of a LabOrder is updated to have atomic results (by
changing ResultType from "IM" to "AT"), a warning will be logged and
DocumentNumber (among other properties) set to null.

VIEWERLIB: User.HS.OETextResult(TRDocumentExtId)
Property methods: DocumentNumberDisplayToLogical(), DocumentNumberGet(), DocumentNumberIsValid(), DocumentNumberLogicalToDisplay(), DocumentNumberLogicalToOdbc(), DocumentNumberNormalize(), DocumentNumberSet()
property DocumentURL as %String (MAXLEN = 32000);
The full URL where the document can be accessed
DocumentURL is used for text results only.

Streamlet cache:
For LabOrders, RadOrders, and OtherOrders, in the OnValidate method of the
Streamlet class, if the Order has a text result and DocumentName is null,
it will be defaulted to DocumentURL.
If a stored text result of a LabOrder is updated to have atomic results (by
changing ResultType from "IM" to "AT"), a warning will be logged and
DocumentURL (among other properties) set to null.

Viewer cache:
If the Result has a GUID that is not expired (GUIDExpDate in the future),
then TRDocumentURL will be set based on the GUID and whichever third-party
image viewing service HealthShare is integrated with. Else TRDocumentURL
will be set to the Result DocumentURL. In the Clinical Viewer, a link to
TRDocumentURL will appear with the Result.

VIEWERLIB: User.HS.OETextResult(TRDocumentURL)
Property methods: DocumentURLDisplayToLogical(), DocumentURLGet(), DocumentURLIsValid(), DocumentURLLogicalToDisplay(), DocumentURLLogicalToOdbc(), DocumentURLNormalize(), DocumentURLSet()
property EncounterNumber as %String (MAXLEN = 220);
Not used.
Property methods: EncounterNumberDisplayToLogical(), EncounterNumberGet(), EncounterNumberIsValid(), EncounterNumberLogicalToDisplay(), EncounterNumberLogicalToOdbc(), EncounterNumberNormalize(), EncounterNumberSet()
property EnteredAt as HS.SDA3.CodeTableDetail.Organization;
Viewer cache:
TRLastUpdateHospitalDR is set for text results only.

SDATableName=Organization, ViewerClass=User.HS.CTHospital
VIEWERLIB: User.HS.OEOrdItem(OEORIResultUpdateHospitalDR)
VIEWERLIB: User.HS.OETextResult(TRLastUpdateHospitalDR)
Property methods: EnteredAtGet(), EnteredAtGetObject(), EnteredAtGetObjectId(), EnteredAtGetSwizzled(), EnteredAtIsEmpty(), EnteredAtIsValid(), EnteredAtNewObject(), EnteredAtSet(), EnteredAtSetObject(), EnteredAtSetObjectId(), EnteredAtUnSwizzle()
property EnteredBy as HS.SDA3.CodeTableDetail.User;
Viewer cache:
The properties of OETextResult are set for text results only.

SDATableName=User, ViewerClass=User.HS.SSUser
VIEWERLIB: User.HS.OEOrdItem(OEORIResultUpdateUserDR)
VIEWERLIB: User.HS.OETextResult(TRUserVerified)
VIEWERLIB: User.HS.OETextResult(TRUserCreated)
Property methods: EnteredByGet(), EnteredByGetObject(), EnteredByGetObjectId(), EnteredByGetSwizzled(), EnteredByIsEmpty(), EnteredByIsValid(), EnteredByNewObject(), EnteredBySet(), EnteredBySetObject(), EnteredBySetObjectId(), EnteredByUnSwizzle()
property EnteredOn as HS.SDA3.TimeStamp;
Viewer cache:
The properties of OETextResult are set for text results only.

VIEWERLIB: User.HS.OEOrdItem(OEORIResultUpdateDate) + User.HS.OEOrdItem(OEORIResultUpdateTime)
VIEWERLIB: User.HS.OETextResult(TRDateCreated) + User.HS.OETextResult(TRTimeCreated)
Property methods: EnteredOnDisplayToLogical(), EnteredOnGet(), EnteredOnIsValid(), EnteredOnLogicalToDisplay(), EnteredOnLogicalToTimeStamp(), EnteredOnLogicalToXSD(), EnteredOnNormalize(), EnteredOnOdbcToLogical(), EnteredOnSet(), EnteredOnXSDToLogical()
property Extension as HS.Local.SDA3.ResultExtension;
Property methods: ExtensionGet(), ExtensionGetObject(), ExtensionGetObjectId(), ExtensionGetSwizzled(), ExtensionIsEmpty(), ExtensionIsValid(), ExtensionNewObject(), ExtensionSet(), ExtensionSetObject(), ExtensionSetObjectId(), ExtensionUnSwizzle()
property ExternalId as %String (MAXLEN = 220);
Streamlet cache:
For LabOrders, RadOrders, and OtherOrders, in the OnBeforeMatch method of
the Streamlet classes, if the Order FillerId is null, it is defaulted to
the Result ExternalId. FillerId undergoes other processing as well. See the
annotation on HS.SDA3.AbstractOrder:FillerId for more info.

VIEWERLIB: Not stored
Property methods: ExternalIdDisplayToLogical(), ExternalIdGet(), ExternalIdIsValid(), ExternalIdLogicalToDisplay(), ExternalIdLogicalToOdbc(), ExternalIdNormalize(), ExternalIdSet()
property FileType as %String;
The type of data e.g PDF, DOC, RTF, TXT
FileType is used for text results only.

HL7ToSDA3:
If the result is text, then if field 2 of the first OBX (Value Type) is
"ED" for "Encapsulated Data", then FileType will be parsed from field 5.3
of that OBX. Else if field 5.1 of that OBX starts with "{\rtf", FileType
will be set to "RTF". Else FileType is not set in the SDA.

Streamlet cache:
For LabOrders, RadOrders, and OtherOrders, in the OnValidate method of the
Streamlet classes, if the Order has a text result, and DocumentName and
DocumentURL are null, and the Result has a Stream of Size > 0, then
DocumentName will be defaulted to FileType.
If a stored text result of a LabOrder is updated to have atomic results (by
changing ResultType from "IM" to "AT"), a warning will be logged and
FileType (among other properties) set to null.

Viewer cache:
If the Result has a Stream of Size > 0, Stream will be stored in a
websys.Document[xxx], where [xxx] is determined by finding the entry in
websys.Document:ClassNames corresponding to the entry in
websys.Document:ValidTypes that matches FileType. For example, if
FileType="PDF", Stream will be stored in a websys.DocumentPDF. If
FileType="HTML", Stream will be stored in a websys.DocumentOTHER. If no
entry in ValidTypes matches FileType, Stream will be stored in a
websys.DocumentOTHER. FileType itself is stored as the docType of a
websys.Document.

HL7: OBX-5.3 : ObservationValue.DataSubtype
VIEWERLIB: websys.Document(docType)
Property methods: FileTypeDisplayToLogical(), FileTypeGet(), FileTypeIsValid(), FileTypeLogicalToDisplay(), FileTypeLogicalToOdbc(), FileTypeNormalize(), FileTypeSet()
property GUID as %String;
If HealthShare is integrated with a third-party image viewing service (such
as eHealth Technologies), and that service has an image for this Result,
then this GUID identifies that image. GUID is meant to come from the image
viewing service, not the data provider that submitted the Result. Therefore
GUID should not be included in an inbound SDA. See the HS Documentation for
more info on how HealthShare can be integrated with an image viewing
service.

Streamlet cache:
The way GUID gets set in the Streamlet Cache will depend on which image
viewing service HealthShare is integrated with. See the HS Documentation
for more info.

Viewer cache:
If GUID is not null and the current date/time is not after GUIDExpDate,
then a link to the image will appear with the Result in the Clinical
Viewer.

VIEWERLIB: Not stored
Property methods: GUIDDisplayToLogical(), GUIDExpDateDisplayToLogical(), GUIDExpDateGet(), GUIDExpDateIsValid(), GUIDExpDateLogicalToDisplay(), GUIDExpDateLogicalToTimeStamp(), GUIDExpDateLogicalToXSD(), GUIDExpDateNormalize(), GUIDExpDateOdbcToLogical(), GUIDExpDateSet(), GUIDExpDateXSDToLogical(), GUIDGet(), GUIDIsValid(), GUIDLogicalToDisplay(), GUIDLogicalToOdbc(), GUIDNormalize(), GUIDSet()
property GUIDExpDate as HS.SDA3.TimeStamp;
If HealthShare is integrated with a third-party image viewing service (such
as eHealth Technologies), and that service has an image for this Result,
then this is the date and time that the received GUID for the image
expires. Like GUID, GUIDExpDate is meant to come from the image viewing
service, not the data provider that submitted the Result. Therefore
GUIDExpDate should not be included in an inbound SDA. See the HS
Documentation for more info on how HealthShare can be integrated with an
image viewing service.

Streamlet cache:
The way GUIDExpDate gets set in the Streamlet Cache will depend on which
image viewing service HealthShare is integrated with. See the HS
Documentation for more info.

Viewer cache:
If GUID is not null and the current date/time is not after GUIDExpDate,
then a link to the image will appear with the Result in the Clinical
Viewer.

VIEWERLIB: Not stored
Property methods: GUIDExpDateDisplayToLogical(), GUIDExpDateGet(), GUIDExpDateIsValid(), GUIDExpDateLogicalToDisplay(), GUIDExpDateLogicalToTimeStamp(), GUIDExpDateLogicalToXSD(), GUIDExpDateNormalize(), GUIDExpDateOdbcToLogical(), GUIDExpDateSet(), GUIDExpDateXSDToLogical()
property PerformedAt as HS.SDA3.CodeTableDetail.Organization;
PerformedAt / ProducersID
This can be used to specify the external organization that actually did the
test.

HL7ToSDA3:
PerformedAt is only set at the result level for text results. For atomic
results, it is set at the item level. For text results, it is parsed from
the fields of the first OBX segment.
If subfield 1 or 10 of OBX-23 is not null, Code, Description, and
SDACodingStandard will be parsed from OBX-23. Else if subfield 1 or 2 of
OBX-15 is not null, Code, Description, and SDACodingStandard will be parsed
from OBX-15.

Viewer cache:
TRPerformedAtDR is set for text results only.

HL7: OBX-15 : ProducersReference
HL7: OBX-23 : PerformingOrganizationName
HL7: OBX-24 : PerformingOrganizationAddress
HL7: OBX-25 : PerformingOrganizationMedicalDirector
SDATableName=Organization, ViewerClass=User.HS.CTHospital
VIEWERLIB: User.HS.OETextResult(TRPerformedAtDR)

.Code
HL7ToSDA3:
If being parsed from OBX-23, subfield 10 will be used if not null, else
subfield 3 will be used.
HL7: OBX-23.10 : PerformingOrganizationName.OrganizationIdentifier
HL7: OBX-23.3 : PerformingOrganizationName.IDNumber
HL7: OBX-15.1 : ProducersReference.Identifier
VIEWERLIB: User.HS.CTHospital(HOSPCode)
.Description
HL7: OBX-23.10 : PerformingOrganizationName.OrganizationName
HL7: OBX-15.2 : ProducersReference.Text
VIEWERLIB: User.HS.CTHospital(HOSPDesc)
.SDACodingStandard
HL7: OBX-23.6 : PerformingOrganizationName.AssigningAuthority
HL7: OBX-15.3 : ProducersReference.NameofCodingSystem
VIEWERLIB: Not stored

.Address
HL7ToSDA3:
Address will only be parsed from OBX-24 is subfield 1 or 5 is not null. For
the City, State, Zip, Country, and County properties, the HL7 field will be
parsed to the Code. HL7ToSDA3 does not set the Description.
HL7: OBX-24 : PerformingOrganizationAddress
.Address.Street
HL7ToSDA3:
If OBX-24.2 is not null, Street will be parsed as "[.1]; [.2]". Otherwise
Street will simply be parsed from OBX-24.1.
HL7: OBX-24.1 : PerformingOrganizationAddress.Street
HL7: OBX-24.2 : PerformingOrganizationAddress.OtherDesignation
VIEWERLIB: User.HS.CTHospital(HOSPAddress)
.Address.City
HL7: OBX-24.3 : PerformingOrganizationAddress.City
VIEWERLIB: User.HS.CTHospital(HOSPCity)
.Address.State
HL7: OBX-24.4 : PerformingOrganizationAddress.StateorProvince
VIEWERLIB: User.HS.CTHospital(HOSPProvinceDR)
.Address.Zip
HL7: OBX-24.5 : PerformingOrganizationAddress.ZiporPostalCode
VIEWERLIB: User.HS.CTHospital(HOSPZipDR)
.Address.Country
HL7: OBX-24.6 : PerformingOrganizationAddress.Country
VIEWERLIB: User.HS.CTHospital(HOSPCountryDR)
.Address.County
HL7: OBX-24.9 : PerformingOrganizationAddress.CountyParishCode
VIEWERLIB: User.HS.CTHospital(HOSPCountyParishDR)

.MedicalDirector
HL7ToSDA3:
MedicalDirector will only be parsed from OBX-25 if subfield 1, 2, or 9 is
not null.
HL7: OBX-25 : PerformingOrganizationMedicalDirector
VIEWERLIB: Not stored
.MedicalDirector.Code
HL7: OBX-25.1 : IDNumber
.MedicalDirector.Description
HL7ToSDA3:
The family and given names are concatenated together as "[Family], [Given]"
to make the Description.
HL7: OBX-25.2 : FamilyName
HL7: OBX-25.3 : GivenName
.MedicalDirector.SDACodingStandard
HL7: OBX-25.9 : AssigningAuthority
.MedicalDirector.Name.FamilyName
HL7: OBX-25.2 : FamilyName
.MedicalDirector.Name.GivenName
HL7: OBX-25.3 : GivenName
.MedicalDirector.Name.MiddleName
HL7: OBX-25.4 : SecondandFurtherGivenNamesorInitialsThereof
.MedicalDirector.Name.NamePrefix
HL7: OBX-25.6 : Prefix
.MedicalDirector.Name.NameSuffix
HL7: OBX-25.5 : Suffix
.MedicalDirector.Name.ProfessionalSuffix
HL7: OBX-25.21 : ProfessionalSuffix
Property methods: PerformedAtGet(), PerformedAtGetObject(), PerformedAtGetObjectId(), PerformedAtGetSwizzled(), PerformedAtIsEmpty(), PerformedAtIsValid(), PerformedAtNewObject(), PerformedAtSet(), PerformedAtSetObject(), PerformedAtSetObjectId(), PerformedAtUnSwizzle()
property ResultInterpretation as %String;
HL7ToSDA3:
For text results, if any instance of any OBX-8 value (OBX-8 is a repeating
field) is "A" for "Abnormal", ResultInterpretation will be set to "A".
HL7ToSDA3 does not set the ResultInterpretation at the result level for
atomic results.

Streamlet cache:
For RadOrders, OtherOrders, and LabOrders with text results, in the
OnBeforeMatch method of the Streamlet classes, if ResultInterpretation is
not null, "A", or two double quotes (the delete instruction), it is set to
null and a warning logged. For LabOrders with atomic results, in the
OnBeforeMatch method of the Streamlet class, if ResultInterpretation is not
null, it is set to null. In the OnValidate method, if a LabResultItem has
an abnormal ResultInterpretation (H, HH, L, LL, A, or AA) or if it has no
ResultInterpretation but ResultValue is numeric, the normalized
ResultNormalRange is one of the numeric forms (see the annotation on
HS.SDA3.LabResultItem:ResultNormalRange), and ResultValue is outside of
ResultNormalRange, then this ResultInterpretation will be set to "A".

Viewer cache:
For both text and atomic results, if ResultInterpretation="A",
OEORIAbnormal will be set to "Y". Else, OEORIAbnormal will be set to null.

HL7: OBX-8 : AbnormalFlags
VIEWERLIB: User.HS.OEOrdItem(OEORIAbnormal)
Property methods: ResultInterpretationDisplayToLogical(), ResultInterpretationGet(), ResultInterpretationIsValid(), ResultInterpretationLogicalToDisplay(), ResultInterpretationLogicalToOdbc(), ResultInterpretationNormalize(), ResultInterpretationSet()
property ResultItems as list of HS.SDA3.LabResultItem;
A list of the lab result's items, used for atomic results

HL7ToSDA3:
If an order in an ORU message is determined to contain atomic results
(ORC-29.1="LAB" and either (a) not all OBX-2 values for this result are "FT",
"TX", or "ED", or (b) not all OBX-3 values are the same), the OBXs will be
parsed to LabResultItems in ResultItems, and the NTEs among them parsed as
LabResultItem Comments. See HS.SDA3.LabResultItem for more info.

Streamlet cache:
A Result belonging to a LabOrder may have ResultItems or ResultText/Stream,
but not both. In the OnBeforeMatch method of the streamlet class, if the
Result has ResultItems and ResultText/Stream, then if ResultType="AT",
ResultText and Stream will be set to null and a warning logged. Else if
ResultType="IM", ResultItems will be set to null and a warning logged. Else
(ResultType is null or not recognized) an error will be logged and the
Order will not be processed. RadOrders and OtherOrders may not have
ResultItems. In the OnBeforeMatch method of the streamlet class, if a
RadOrder or OtherOrder Result has ResultItems, ResultItems will be set to
null and a warning logged. For LabOrders, rather than the standard logic to
update SDA lists, special logic exists to update ResultItems. See
HS.SDA3.LabResultItem for more info.

HL7: OBX,NTE
VIEWERLIB: see HS.SDA3.LabResultItem
Property methods: ResultItemsBuildValueArray(), ResultItemsCollectionToDisplay(), ResultItemsCollectionToOdbc(), ResultItemsDisplayToCollection(), ResultItemsGet(), ResultItemsGetObject(), ResultItemsGetObjectId(), ResultItemsGetSwizzled(), ResultItemsIsValid(), ResultItemsOdbcToCollection(), ResultItemsSet(), ResultItemsSetObject(), ResultItemsSetObjectId()
property ResultStatus as %String;
Streamlet cache:
For LabOrders, in the OnBeforeMatch method of the Streamlet class,
ResultStatus is ALPHAUP collated, then possibly mapped: FIN->F, COR->K,
C->K, ENT->R, [other]->unchanged. For RadOrders and OtherOrders, in the
OnBeforeMatch method of the Streamlet class, ResultStatus is also ALPHAUP
collated and possibly mapped, though the mappings are slightly different:
FIN->F, COR->C, ENT->R, [other]->unchanged. Then, for LabOrders, RadOrders,
and OtherOrders, ResultStatus is validated against the list of codes for
the Trak "ResultType" Standard Type: I, R, F, C, K, V, O, S, A, P, or X. If
ResultStatus is not one of these values or null, it is set to null and a
warning logged. In the OnValidate method of the Streamlet classes for
LabOrder, RadOrder, and OtherOrder, if the Order has a Result, but
ResultStatus is null, it is defaulted to "R" for "Entered". Then, if the
Result has ResultItems, and ResultStatus is "F" for "Final", and the
TestItemStatus of any LabResultItem in ResultItems is "K" for "Corrected",
ResultStatus will be set to "K" for "Corrected".

Viewer cache:
The VISTSStatusResult property is set for atomic results only, and is
simply set to the SDA ResultStatus value. TRResStatDR is set for text
results only and contains a reference to the User.HS.OECResultStatus with
RESSTCode=[ResultStatus]. Note that unlike other code tables in the Viewer
Cache, OECResultStatus is not populated dynamically as codes are processed.
OECResultStatus is only populated by the SITE- or
HS-Default-ResultStatus.txt file at the time the Access Gateway is reset.
See the HS documentation for more info on working with SITE-Default files.
TRExternalResultStatus is also set for text results only and is derived
from the ResultStatus value. It is set to "A" if ResultStatus is "F", "K"
if ResultStatus is "C", and "E" otherwise. OEORIResultFlag is set for both
text and atomic results, though with slightly different logic. For text
results, OEORIResultFlag is set to "C" if ResultStatus is "C", and "A"
otherwise. For atomic results, OEORIResultFlag is set to "C" if
ResultStatus is "K", and "A" otherwise.

HL7: OBR-25 : ResultStatus
VIEWERLIB: lab.HS.EPVisitTestSet(VISTSStatusResult)
VIEWERLIB: User.HS.OETextResult(TRResStatDR)
VIEWERLIB: User.HS.OETextResult(TRExternalResultStatus)
VIEWERLIB: User.HS.OEOrdItem(OEORIResultFlag)
Property methods: ResultStatusDisplayToLogical(), ResultStatusGet(), ResultStatusIsValid(), ResultStatusLogicalToDisplay(), ResultStatusLogicalToOdbc(), ResultStatusNormalize(), ResultStatusSet()
property ResultText as %String);
The actual text of the result
Length subject to the total streamlet size limit - 3,000,000

ResultText is used for text results only.

HL7ToSDA3:
If the Result is determined to be text, then any NTE segments immediately
following the OBR and before the first OBX will be parsed to the Order
Comments. Then, if subfield 2 of the first OBX (Value Type) is not "ED"
(for "Encapsulated Data") and subfield 5.1 does not start with "{\rtf",
then each OBX and NTE, starting from the first OBX, will be parsed to
ResultText. OBX-5 and NTE-3 are repeating fields, and each instance is
parsed as one line in the ResultText. ResultText will be HL7-unescaped
according to the annotation on HS.Gateway.HL7.HL7ToSDA3:unescape.

Streamlet cache:
If a stored text result of a LabOrder is updated to have atomic results (by
changing ResultType from "IM" to "AT"), a warning will be logged and
ResultText (among other properties) set to null.

HL7: OBX-5 : ObservationValue
HL7: NTE-3 : Comment
VIEWERLIB: User.HS.OETextResult(ChildOETextResultSection)->User.HS.OETextResultSection(SECText)
Property methods: ResultTextDisplayToLogical(), ResultTextGet(), ResultTextIsValid(), ResultTextLogicalToDisplay(), ResultTextLogicalToOdbc(), ResultTextNormalize(), ResultTextSet()
property ResultTime as HS.SDA3.TimeStamp;
Time of result

Streamlet cache:
For LabOrder, RadOrder, and OtherOrder, in the OnBeforeMatch method of the
streamlet class, Result.EnteredOn and Result.AuthorizationTime default to
Result.ResultTime. In the OnValidate method, if the Order FromTime is null,
it is defaulted to the Order EnteredOn. If the Order has a Result and
FromTime is still null, it is defaulted to Result.ResultTime. If the Order
has a Result and FromTime is still null, then an error will be logged and
the Order will not be saved.

Viewer cache:
The EPVisitTestSet properties are set for atomic results only, and the
OETextResult properties are set for text results only. Note that while
OEORIHL7ResultTime and TRTimeUpdated are %Time values stored in $H format,
VISTSDateOfAuthorisation is a %Float value containing the time as a number
of minutes since midnight.

HL7: OBR-22.1 : ResultsRptStatusChngDateTime.Time
VIEWERLIB: User.HS.OEOrdItem(OEORIHL7ResultDate) + User.HS.OEOrdItem(OEORIHL7ResultTime)
VIEWERLIB: lab.HS.EPVisitTestSet(VISTSDateOfAuthorisation) + lab.HS.EPVisitTestSet(VISTSDateOfAuthorisation)
VIEWERLIB: User.HS.OETextResult(TRDateUpdated) + User.HS.OETextResult(TRTimeUpdated)
Property methods: ResultTimeDisplayToLogical(), ResultTimeGet(), ResultTimeIsValid(), ResultTimeLogicalToDisplay(), ResultTimeLogicalToTimeStamp(), ResultTimeLogicalToXSD(), ResultTimeNormalize(), ResultTimeOdbcToLogical(), ResultTimeSet(), ResultTimeXSDToLogical()
property ResultType as %String;
Describes the type of result
Can be either "IM" for "Image" (text result, containing ResultText and/or
Stream) or "AT" for "Atomic" (atomic result, containing ResultItems)

HL7ToSDA3:
If an order in an ORU message is determined to contain atomic results
(ORC-29.1="LAB" and either (a) not all OBX-2 values for this result are "FT",
"TX", or "ED", or (b) not all OBX-3 values are the same), then ResultType
will be parsed as "AT".
If the setting MultiLineOBXCompatibilityMode is turned on in
HS.Gateway.HL7.InboundProcess, requirement (b) is dropped - results are
parsed as text even if their OBX-3 values differ, as long as they all have
an OBX-2 value of "FT", "TX", or "ED".

Streamlet cache:
RadOrders and OtherOrders can only have text results, so in the
OnBeforeMatch method of the streamlet class, if ResultType is not "IM", it
is set to "IM". If it was not initially null, a warning will be logged in
the Ensemble Event Log.
LabOrders can have text results (ResultText or Stream) or atomic results
(ResultItems), but not both. In the OnBeforeMatch method of the streamlet
class, if the Result is found to contain both text and atomic results, then
ResultType is used to determine which to discard and which to save. If
ResultType is "IM", atomic results are discarded, and if ResultType is
"AT", text results are discarded. In either case a warning is logged. If
the Result has both text and atomic results but ResultType is not "IM" or
"AT", then an error will be logged and the streamlet will not be processed.
If the Result contains only atomic results, ResultType is set to "AT", and
if it contains only text results, "IM". If the Result contains no actual
results, ResultType is set to null. Note that it is possible for a Result
to go from having text results to atomic or vice versa. In the
OnUpdateSDAResult method of the streamlet class (which is invoked instead
the standard, generated SDA update code for a Result), if the ResultType of
the inbound Result is "IM" and the existing ResultType is "AT", a warning
is logged and the existing ResultItems set to null before proceeding with
the update. If the inbound ResultType is "AT" and the existing is "IM", a
warning is logged and the ResultText, FileType, DocumentName, Stream,
DocumentURL, and DocumentNumber are all set to null before proceeding with
the update.

Viewer cache:
For LabOrders only, if FillerId is null and Result.ResultType = "AT", then
FillerId will be defaulted to PlacerId.

HL7: ORC-29 : OrderType
HL7: OBX-2 : ValueType
VIEWERLIB: Not stored
Property methods: ResultTypeDisplayToLogical(), ResultTypeGet(), ResultTypeIsValid(), ResultTypeLogicalToDisplay(), ResultTypeLogicalToOdbc(), ResultTypeNormalize(), ResultTypeSet()
property Stream as %GlobalBinaryStream [ Transient ];
An alternative to ResultText, this property may contain the result as a
stream of either plaintext or binary data (e.g. DOC, PDF, JPG), with the
type of data given by FileType. Stream is used for text results only,
never atomic.

Length subject to the total streamlet size limit - 3,000,000

Note that because of the type of this property (%GlobalBinaryStream),
character data written to it must be single-width, ie, no double-wide
Unicode characters. On export, the content will be Base64 encoded, and on
import, Base64 decoded.

HL7ToSDA3:
If the result is determined to be text, then if field 2 of the first OBX
(Value Type) is "ED" for "Encapsulated Data", or if field 5.1 of that OBX
starts with "{\rtf", then the result will be parsed to Stream. Starting
with the first OBX following the OBR, each OBX-5 and NTE-3 value will be
parsed to Stream. OBX-5 and NTE-3 are repeating fields, and each instance
of both will be parsed as its own line in Stream. For each OBX, if field 2
is "ED", the value will be parsed from field 5.5, else the value will be
parsed from field 5 in its entirety. Note that the maximum amount of data
that can parsed this way is about 3.6 million characters. If the result is
longer than this, it will be truncated. If no OBX-2 value in the result is
"ED", then entire body of parsed text will be HL7-unescaped according to
the annotation on HS.Gateway.HL7.HL7ToSDA3:unescape. If field 5.4 of the
first OBX is not "BASE64" (case-insensitive), then the parsed text will be
base-64 encoded before being inserted into the SDA.

Streamlet cache:
If a stored text result of a LabOrder is updated to have atomic results (by
changing ResultType from "IM" to "AT"), a warning will be logged and
Stream (among other properties) set to null.

Viewer cache:
OETextResult references a websys.Document, which references a
websys.Document[xxx] (where [xxx] is derived from FileType, see the
annotation on that property), which is where Stream is actually stored in
the Viewer Cache. Note that the websys.Document does not contain an actual
reference to the Document[xxx], but rather stores its ID in the DataId
property.
If the value of the Configuration Registry key
"\Viewer\SDA3ResultStreamEncoded" is "1", then the content of Stream will
be converted from UTF-8 output format (ie, $ZCVT(,"I","UTF8")) before being
inserted into the Viewer Cache. This is useful in cases where the original
document data contained double-wide Unicode characters that had to be
converted to UTF-8 output format before being written to the stream, since
it cannot contain double-wide characters.

HL7: OBX-5 : ObservationValue
HL7: NTE-3 : Comments
VIEWERLIB: User.HS.OETextResult(TRDocumentDR)->websys.Document
VIEWERLIB: websys.Document[xxx](docData)
Property methods: StreamDelete(), StreamGet(), StreamGetObject(), StreamGetObjectId(), StreamGetSwizzled(), StreamIsValid(), StreamNewObject(), StreamOid(), StreamOpen(), StreamSet(), StreamSetObject(), StreamSetObjectId(), StreamUnSwizzle()
property UpdatedOn as HS.SDA3.TimeStamp;
Not used.
Property methods: UpdatedOnDisplayToLogical(), UpdatedOnGet(), UpdatedOnIsValid(), UpdatedOnLogicalToDisplay(), UpdatedOnLogicalToTimeStamp(), UpdatedOnLogicalToXSD(), UpdatedOnNormalize(), UpdatedOnOdbcToLogical(), UpdatedOnSet(), UpdatedOnXSDToLogical()
property VerifiedBy as HS.SDA3.CodeTableDetail.CareProvider;
Care provider who verified the Result

Viewer cache:
VerifiedBy is stored in the VISTSPathologistIDDR property for atomic
results and in the TRCTCPDR property for text results.

SDATableName=CareProvider, ViewerClass=User.HS.CTCareProv
VIEWERLIB: User.HS.EPVisitTestSet(VISTSPathologistIDDR)
VIEWERLIB: User.HS.OETextResult(TRCTCPDR)
Property methods: VerifiedByGet(), VerifiedByGetObject(), VerifiedByGetObjectId(), VerifiedByGetSwizzled(), VerifiedByIsEmpty(), VerifiedByIsValid(), VerifiedByNewObject(), VerifiedBySet(), VerifiedBySetObject(), VerifiedBySetObjectId(), VerifiedByUnSwizzle()

Inherited Members

Inherited Properties

Inherited Methods

FeedbackOpens in a new tab