Skip to main content


serial class HS.SDA3.SuperClass extends HS.SDA3.DataType

Base for SDA objects

Property Inventory

Method Inventory


property ActionCode as %String;
Message action code
Supported values include:
D = Delete
E = Delete if empty (Encounters only)
I = Inactivate all
C = Clear/Delete all
R = Replace (Patient and Encounter only)
Any other value = Add or Update

ActionCode is only supported for SDA3 classes corresponding to Streamlet
types (Allergy, Diagnosis, etc.). Not all of the above codes are supported
for every class. Whether ActionCode is supported and what codes are
supported is documented in each individual subclass. For codes "C" and "I",
all streamlets of the given type belonging to the given Patient and in the
given Encounter (or Encounter-less if the inbound SDA object has no
EncounterNumber) will be cleared or inactivated. Otherwise (codes "D", "E",
"R") only the matching streamlet will be affected.
Property methods: ActionCodeDisplayToLogical(), ActionCodeGet(), ActionCodeIsValid(), ActionCodeLogicalToDisplay(), ActionCodeLogicalToOdbc(), ActionCodeNormalize(), ActionCodeSet()
property ActionScope as %String;
Optional ActionCode qualifier
For selected SDA classes, this qualifies ActionCodes "I" (if it is
supported) and "C" by giving them a scope. Ex: for Problems, ActionCode="C"
and ActionScope="PAST" will only delete past problems. (The meaning of
"past" is explained in HS.SDA3.Problem.) Whether ActionScope is supported
and what values are supported is documented in each individual subclass.
Property methods: ActionScopeDisplayToLogical(), ActionScopeGet(), ActionScopeIsValid(), ActionScopeLogicalToDisplay(), ActionScopeLogicalToOdbc(), ActionScopeNormalize(), ActionScopeSet()
property CustomPairs as list of HS.SDA3.NVPair;
The generic container to hold all sorts of data about this object

Viewer cache:
For every SDA3 type corresponding to a streamlet type except CustomObject,
the CustomPairs are inserted into the Viewer Cache as web.SDA3.NVPairs. In
addition to the Name and Value, web.SDA3.NVPair also stores the aggregation
key of the patient record, the info type of the containing streamlet, and
the ID of the corresponding object in the Viewer Cache.


VIEWERLIB: web.SDA3.NVPair(Name)
VIEWERLIB: web.SDA3.NVPair(Value)
Property methods: CustomPairsBuildValueArray(), CustomPairsCollectionToDisplay(), CustomPairsCollectionToOdbc(), CustomPairsDisplayToCollection(), CustomPairsGet(), CustomPairsGetObject(), CustomPairsGetObjectId(), CustomPairsGetSwizzled(), CustomPairsIsValid(), CustomPairsOdbcToCollection(), CustomPairsSet(), CustomPairsSetObject(), CustomPairsSetObjectId()
property EncounterNumber as %String (MAXLEN = 220);
A string that uniquely identifies an Encounter within a patient record.
In cases where HS attempts to generate an EncounterNumber, the logic is:
-If EncounterType is "G" or "S", generate EncounterNumber as "HSgenerated"
followed by an incremental number.
-Else if Patient MRN and Encounter FromTime are not null, generate
EncounterNumber as "[MRN]-[FromTime date]".
-Else no EncounterNumber can be generated.

If PV1-19.1 is null, HealthShare attempts to generate an EncounterNumber
using the above logic. If one cannot be generated, no Encounter is parsed
to the SDA and all the data parsed from the HL7 is Encounter-less. If one
can be parsed or generated, then Diagnoses, Observations, Orders,
Procedures, Problems, Appointments, and Documents, in addition to
Encounter, will be parsed with EncounterNumber.

Streamlet cache:
For Encounters, this is the only match property (besides AggregationKey).
See HS.SDA3.Encounter for more info on special processing of
EncounterNumber for that type. For Patient and classes that do not
correspond to streamlet types, EncounterNumber is not used. For classes
that do correspond to streamlet types, EncounterNumber is optionally used
to link an SDA object to an Encounter. Only objects linked to the same
Encounter can match, and Encounter-less data can only match Encounter-less
data. If an inbound SDA object contains an EncounterNumber for which no
Encounter exists for that Patient, then an error will be logged and the
streamlet will not be saved.

Viewer cache:
In the Viewer Cache, data is structured hierarchically. Some types are
stored "under" an Encounter, while others are not. If an SDA object has no
EncounterNumber but is Encounter-level in the Viewer Cache, then it will be
inserted into the Patient's silent Encounter in the Viewer Cache only. If
the Patient has no silent Encounter, one will be created in the Viewer
Cache only. If an SDA object is linked to an Encounter but is not
Encounter-level in the Viewer Cache, then that link is simply not reflected
in the Viewer Cache, except for Allergy and Illness History. Though not
Encounter-level, these types do have fields for EncounterNumber in the
Viewer Cache.

HL7: PV1-19.1 : VisitNumber.IDNumber
Property methods: EncounterNumberDisplayToLogical(), EncounterNumberGet(), EncounterNumberIsValid(), EncounterNumberLogicalToDisplay(), EncounterNumberLogicalToOdbc(), EncounterNumberNormalize(), EncounterNumberSet()
property EnteredAt as HS.SDA3.CodeTableDetail.Organization;
Source System name

SDATableName=Organization, ViewerClass=User.HS.CTHospital
Property methods: EnteredAtGet(), EnteredAtGetObject(), EnteredAtGetObjectId(), EnteredAtGetSwizzled(), EnteredAtIsEmpty(), EnteredAtIsValid(), EnteredAtNewObject(), EnteredAtSet(), EnteredAtSetObject(), EnteredAtSetObjectId(), EnteredAtUnSwizzle()
property EnteredBy as HS.SDA3.CodeTableDetail.User;
User who updated source system

SDATableName=User, ViewerClass=User.HS.SSUser
Property methods: EnteredByGet(), EnteredByGetObject(), EnteredByGetObjectId(), EnteredByGetSwizzled(), EnteredByIsEmpty(), EnteredByIsValid(), EnteredByNewObject(), EnteredBySet(), EnteredBySetObject(), EnteredBySetObjectId(), EnteredByUnSwizzle()
property EnteredOn as HS.SDA3.TimeStamp;
Date/time updated or entered. For labs, this represents when the order was
Property methods: EnteredOnDisplayToLogical(), EnteredOnGet(), EnteredOnIsValid(), EnteredOnLogicalToDisplay(), EnteredOnLogicalToTimeStamp(), EnteredOnLogicalToXSD(), EnteredOnNormalize(), EnteredOnOdbcToLogical(), EnteredOnSet(), EnteredOnXSDToLogical()
property ExternalId as %String (MAXLEN = 220);
Identifier used by systems outside HealthShare.

Streamlet cache:
If present on any SDA object corresponding to a streamlet type, ExternalId
will be the only property used for matching (besides EncounterNumber and
aggregation key, which are always used). For example, if two
HS.SDA3.Allergy objects have the same EncounterNumber and ExternalId but
different Allergy.Code values, they will still be considered a match. A
null ExternalId will not match a non-null ExternalId. For example, if two
HS.SDA3.Allergy objects have the same EncounterNumber and Allergy.Code, but
one has an ExternalId and one does not, they will not match. Matching on
ExternalId is SQLUPPER collated.
Property methods: ExternalIdDisplayToLogical(), ExternalIdGet(), ExternalIdIsValid(), ExternalIdLogicalToDisplay(), ExternalIdLogicalToOdbc(), ExternalIdNormalize(), ExternalIdSet()
property FromTime as HS.SDA3.TimeStamp;
Start of time range
Property methods: FromTimeDisplayToLogical(), FromTimeGet(), FromTimeIsValid(), FromTimeLogicalToDisplay(), FromTimeLogicalToTimeStamp(), FromTimeLogicalToXSD(), FromTimeNormalize(), FromTimeOdbcToLogical(), FromTimeSet(), FromTimeXSDToLogical()
property SourceFormat as HS.SDA3.CodeTableDetail.SourceFormat;
Identifies the format of the source record for this data.
If the data has been updated, this property will represent
the format of the latest source record that contributed to the data.
Property methods: SourceFormatGet(), SourceFormatGetObject(), SourceFormatGetObjectId(), SourceFormatGetSwizzled(), SourceFormatIsEmpty(), SourceFormatIsValid(), SourceFormatNewObject(), SourceFormatSet(), SourceFormatSetObject(), SourceFormatSetObjectId(), SourceFormatUnSwizzle()
property ToTime as HS.SDA3.TimeStamp;
End of time range
Property methods: ToTimeDisplayToLogical(), ToTimeGet(), ToTimeIsValid(), ToTimeLogicalToDisplay(), ToTimeLogicalToTimeStamp(), ToTimeLogicalToXSD(), ToTimeNormalize(), ToTimeOdbcToLogical(), ToTimeSet(), ToTimeXSDToLogical()
property UpdatedOn as HS.SDA3.TimeStamp;
This optional property is only utilized as a tie-breaker when aggregating
at the Access Gateway. The system will only populate it for Encounter-less
data, and only if no EnteredOn is supplied. Data sources may populate
this if they have no EnteredOn, or if EnteredOn is used to represent
something other than how recent this record is. For Encounter-less data, if
there are two records from different sources, we first use the facility
tier, and if the same, we use the "most recent" record, as determined by
this, or EnteredOn if this isn't populated.
In addition to the above, we also populate this property when we process
inbound SDA with an ActionCode="I" - a mass inactivate. This is to allow
for some poorly behaved systems that are not able to tell us that something
(like a medication) has been discontinued - instead, they send in data
which only contains new meds, and custom pipeline code detects this and
inserts a mass inactivate first.
Property methods: UpdatedOnDisplayToLogical(), UpdatedOnGet(), UpdatedOnIsValid(), UpdatedOnLogicalToDisplay(), UpdatedOnLogicalToTimeStamp(), UpdatedOnLogicalToXSD(), UpdatedOnNormalize(), UpdatedOnOdbcToLogical(), UpdatedOnSet(), UpdatedOnXSDToLogical()


classmethod EndXMLList()
Utility Method used to when exporting to a container stream or string Subclasses may override if the container property isn't the simple plural (ex: Allergies)
classmethod GetStreamletClass(pType)
For standard and extended SDA classes, pType will be the short SDA classname For custom SDA classes, pType will be the full SDA classname
classmethod StartXMLList()
Utility Method used to when exporting to a container stream or string Subclasses may override if the container property isn't the simple plural (ex: Allergies)

Inherited Members

Inherited Methods


FeedbackOpens in a new tab