Skip to main content


serial class HS.SDA3.Allergy extends HS.SDA3.SuperClass

HS.SDA3.Allergy corresponds to the CDA Allergies and Other Adverse Reactions section.

Property Inventory

Method Inventory


property ATCCode as HS.SDA3.CodeTableDetail.ATCCode;
Drug group to which patient is allergic

SDATableName=ATCCode, ViewerClass=User.HS.PHCSubCat
Property methods: ATCCodeGet(), ATCCodeGetObject(), ATCCodeGetObjectId(), ATCCodeGetSwizzled(), ATCCodeIsEmpty(), ATCCodeIsValid(), ATCCodeNewObject(), ATCCodeSet(), ATCCodeSetObject(), ATCCodeSetObjectId(), ATCCodeUnSwizzle()
property ActionCode as %String;
Supported values:
D = Delete
I = Inactivate All (set Status="I")
C = Clear All
Any other value = Add or Update
See the annotation on the superclass property for more information on how
ActionCode is used.

Two double quotes ("") in the Set ID field (AL1-1 or IAM-1) will be parsed
as ActionCode="I", and four double quotes ("""") as "C". In either case
the rest of the segment is ignored.
If IAM-6.1 is "D", HL7ToSDA3 will parse this as ActionCode="D". Any other value
is ignored.

HL7: AL1-1 : SetIDAL1
HL7: IAM-6.1 : AllergyActionCode.Identifier
VIEWERLIB: Not stored
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 Allergy as HS.SDA3.CodeTableDetail.Allergy;
Allergy code

Both AL1-3 and IAM-3 will only be parsed if subfield 1 or 2 is not null.

Streamlet cache:
If the HS.SDA3.Allergy does not have an Allergy CodeTableDetail,
then in the OnValidate method of the Streamlet class, an error will be
logged in the Ensemble Event Log and the streamlet will not be saved.

SDATableName=Allergy, ViewerClass=User.HS.PACAllergy
HL7: AL1-3 : AllergenCodeMnemonicDescription
HL7: IAM-3 : AllergenCodeMnemonicDescription

HL7: AL1-3.1 : AllergenCodeMnemonicDescription.Identifier
HL7: IAM-3.1 : AllergenCodeMnemonicDescription.Identifier
HL7: AL1-3.2 : AllergenCodeMnemonicDescription.Text
HL7: IAM-3.2 : AllergenCodeMnemonicDescription.Text
HL7: AL1-3.3 : AllergenCodeMnemonicDescription.NameofCodingSystem
HL7: IAM-3.3 : AllergenCodeMnemonicDescription.NameofCodingSystem
VIEWERLIB: Not stored
For both AL1-3 and IAM-3, if subfield 4 or 5 is not null, then a PriorCode
will be parsed to the SDA with Code coming from subfield 4, Description
from 5, and CodingSystem from 6. The Type will be parsed as "A".
HL7: AL1-3.4 : AllergenCodeMnemonicDescription.AlternateIdentifier
HL7: IAM-3.4 : AllergenCodeMnemonicDescription.AlternateIdentifier
HL7: AL1-3.5 : AllergenCodeMnemonicDescription.AlternateText
HL7: IAM-3.5 : AllergenCodeMnemonicDescription.AlternateText
HL7: AL1-3.6 : AllergenCodeMnemonicDescription.NameofAlternateCodingSystem
HL7: IAM-3.6 : AllergenCodeMnemonicDescription.NameofAlternateCodingSystem
VIEWERLIB: Not stored
HL7: AL1-3.9 : AllergenCodeMnemonicDescription.OriginalText
HL7: IAM-3.9 : AllergenCodeMnemonicDescription.OriginalText
VIEWERLIB: Not stored
Property methods: AllergyGet(), AllergyGetObject(), AllergyGetObjectId(), AllergyGetSwizzled(), AllergyIsEmpty(), AllergyIsValid(), AllergyNewObject(), AllergySet(), AllergySetObject(), AllergySetObjectId(), AllergyUnSwizzle()
property AllergyCategory as HS.SDA3.CodeTableDetail.AllergyCategory;
The category of the allergy (e.g. Food, Medication)

The HL7 field will only be parsed if subfield 1 is not null.

Streamlet cache:
If the Allergy contains no AllergyCategory, then in the OnValidate method
of the Streamlet class, one will be defaulted with Code and Description =

Viewer cache:
Note that the code table for this type is MRC_AllType, whereas the table
for Reaction is PAC_AllergyCategory.

HL7: AL1-2 : AllergenTypeCode
HL7: IAM-2 : AllergenTypeCode
SDATableName=AllergyCategory, ViewerClass=User.HS.MRCAllType

HL7: AL1-2.1 : AllergenTypeCode.Identifier
HL7: IAM-2.1 : AllergenTypeCode.Identifier
HL7: AL1-2.2 : AllergenTypeCode.Text
HL7: IAM-2.2 : AllergenTypeCode.Text
HL7: AL1-2.3 : AllergenTypeCode.NameofCodingSystem
HL7: IAM-2.3 : AllergenTypeCode.NameofCodingSystem
VIEWERLIB: Not stored
Property methods: AllergyCategoryGet(), AllergyCategoryGetObject(), AllergyCategoryGetObjectId(), AllergyCategoryGetSwizzled(), AllergyCategoryIsEmpty(), AllergyCategoryIsValid(), AllergyCategoryNewObject(), AllergyCategorySet(), AllergyCategorySetObject(), AllergyCategorySetObjectId(), AllergyCategoryUnSwizzle()
property AssociatedEncounter as %String (MAXLEN = 220);
Streamlet cache:
Unlike EncounterNumber, this property may be filled in or updated
after the Allergy is initially created, and is not used for matching.

Viewer cache:
The ALGEncounter field in the Viewer Cache is used for both EncounterNumber
and AssociatedEncounter, whichever is present. If both are present,
EncounterNumber is used.

VIEWERLIB: User.HS.PAAllergy(ALGEncounter)
Property methods: AssociatedEncounterDisplayToLogical(), AssociatedEncounterGet(), AssociatedEncounterIsValid(), AssociatedEncounterLogicalToDisplay(), AssociatedEncounterLogicalToOdbc(), AssociatedEncounterNormalize(), AssociatedEncounterSet()
property Certainty as HS.SDA3.CodeTableDetail.Certainty;
The certainty of the allergy (e.g. Suspected, Confirmed, Lab-tested)

SDATableName=Certainty, ViewerClass=User.HS.PACAllergyCertainty
VIEWERLIB: User.HS.PAAllergy(ALGCertaintyDR)
Property methods: CertaintyGet(), CertaintyGetObject(), CertaintyGetObjectId(), CertaintyGetSwizzled(), CertaintyIsEmpty(), CertaintyIsValid(), CertaintyNewObject(), CertaintySet(), CertaintySetObject(), CertaintySetObjectId(), CertaintyUnSwizzle()
property Clinician as HS.SDA3.CodeTableDetail.CareProvider;
Clinician who diagnosed/identified allergy

SDATableName=CareProvider, ViewerClass=User.HS.CTCareProv
Property methods: ClinicianGet(), ClinicianGetObject(), ClinicianGetObjectId(), ClinicianGetSwizzled(), ClinicianIsEmpty(), ClinicianIsValid(), ClinicianNewObject(), ClinicianSet(), ClinicianSetObject(), ClinicianSetObjectId(), ClinicianUnSwizzle()
property Comments as %String);
CRLF-delimited string

VIEWERLIB: User.HS.PAAllergy(ALGComments)
Property methods: CommentsDisplayToLogical(), CommentsGet(), CommentsIsValid(), CommentsLogicalToDisplay(), CommentsLogicalToOdbc(), CommentsNormalize(), CommentsSet()
property ConfirmedTime as HS.SDA3.TimeStamp;
When the allergy was confirmed.

Viewer cache:
Only the date part is saved to the Viewer Cache. (ALGConfirmedDate is

VIEWERLIB: User.HS.PAAllergy(ALGConfirmedDate)
Property methods: ConfirmedTimeDisplayToLogical(), ConfirmedTimeGet(), ConfirmedTimeIsValid(), ConfirmedTimeLogicalToDisplay(), ConfirmedTimeLogicalToTimeStamp(), ConfirmedTimeLogicalToXSD(), ConfirmedTimeNormalize(), ConfirmedTimeOdbcToLogical(), ConfirmedTimeSet(), ConfirmedTimeXSDToLogical()
property DiscoveryTime as HS.SDA3.TimeStamp;
When the allergy was discovered.

Though AL1-6 is technically date-only, HL7ToSDA3 will parse a
full date/time if one is given in this field.

HL7: AL1-6 : IdentificationDate
VIEWERLIB: User.HS.PAAllergy(ALGDate) + User.HS.PAAllergy(ALGTime)
Property methods: DiscoveryTimeDisplayToLogical(), DiscoveryTimeGet(), DiscoveryTimeIsValid(), DiscoveryTimeLogicalToDisplay(), DiscoveryTimeLogicalToTimeStamp(), DiscoveryTimeLogicalToXSD(), DiscoveryTimeNormalize(), DiscoveryTimeOdbcToLogical(), DiscoveryTimeSet(), DiscoveryTimeXSDToLogical()
property EncounterNumber as %String;
Viewer cache:
The ALGEncounter field in the viewer cache is used for both EncounterNumber
and AssociatedEncounter, whichever is present. If both are present,
EncounterNumber is used.

VIEWERLIB: User.HS.PAAllergy(ALGEncounter)
Property methods: EncounterNumberDisplayToLogical(), EncounterNumberGet(), EncounterNumberIsValid(), EncounterNumberLogicalToDisplay(), EncounterNumberLogicalToOdbc(), EncounterNumberNormalize(), EncounterNumberSet()
property EnteredAt as HS.SDA3.CodeTableDetail.Organization;
MSH-4.1 is parsed to the EnteredAt Code. HL7ToSDA3 does not set the

SDATableName=Organization, ViewerClass=User.HS.CTHospital
HL7: MSH-4.1 : SendingFacility.NamespaceID
VIEWERLIB: User.HS.PAAllergy(ALGLastUpdateHospitalDR)
Property methods: EnteredAtGet(), EnteredAtGetObject(), EnteredAtGetObjectId(), EnteredAtGetSwizzled(), EnteredAtIsEmpty(), EnteredAtIsValid(), EnteredAtNewObject(), EnteredAtSet(), EnteredAtSetObject(), EnteredAtSetObjectId(), EnteredAtUnSwizzle()
property EnteredBy as HS.SDA3.CodeTableDetail.User;
Only Description is parsed from IAM-14, not Code or SDACodingStandard.

HL7: IAM-14 : ReportedBy
SDATableName=User, ViewerClass=User.HS.SSUser
VIEWERLIB: User.HS.PAAllergy(ALGUpdateUserDR)
The name is formatted as "[Family], [Given]" to make the Description.
HL7: IAM-14.1.1 : FamilyName.Surname
HL7: IAM-14.2 : GivenName
Property methods: EnteredByGet(), EnteredByGetObject(), EnteredByGetObjectId(), EnteredByGetSwizzled(), EnteredByIsEmpty(), EnteredByIsValid(), EnteredByNewObject(), EnteredBySet(), EnteredBySetObject(), EnteredBySetObjectId(), EnteredByUnSwizzle()
property EnteredOn as HS.SDA3.TimeStamp;
HL7: IAM-13 : ReportedDateTime
VIEWERLIB: User.HS.PAAllergy(ALGLastUpdateDate) + User.HS.PAAllergy(ALGLastUpdateTime)
Property methods: EnteredOnDisplayToLogical(), EnteredOnGet(), EnteredOnIsValid(), EnteredOnLogicalToDisplay(), EnteredOnLogicalToTimeStamp(), EnteredOnLogicalToXSD(), EnteredOnNormalize(), EnteredOnOdbcToLogical(), EnteredOnSet(), EnteredOnXSDToLogical()
property Extension as HS.Local.SDA3.AllergyExtension;
Property methods: ExtensionGet(), ExtensionGetObject(), ExtensionGetObjectId(), ExtensionGetSwizzled(), ExtensionIsEmpty(), ExtensionIsValid(), ExtensionNewObject(), ExtensionSet(), ExtensionSetObject(), ExtensionSetObjectId(), ExtensionUnSwizzle()
property ExternalId as %String (MAXLEN = 220);
HL7: IAM-7.1 : AllergyUniqueIdentifier.EntityIdentifier
VIEWERLIB: User.HS.PAAllergy(ALGExternalId)
Property methods: ExternalIdDisplayToLogical(), ExternalIdGet(), ExternalIdIsValid(), ExternalIdLogicalToDisplay(), ExternalIdLogicalToOdbc(), ExternalIdNormalize(), ExternalIdSet()
property FreeTextAllergy as %String (MAXLEN = 5000);
Allergy description if it can't be typed/coded

VIEWERLIB: User.HS.PAAllergy(ALGFreeTextAllergy)
Property methods: FreeTextAllergyDisplayToLogical(), FreeTextAllergyGet(), FreeTextAllergyIsValid(), FreeTextAllergyLogicalToDisplay(), FreeTextAllergyLogicalToOdbc(), FreeTextAllergyNormalize(), FreeTextAllergySet()
property FromTime as HS.SDA3.TimeStamp;
The time of the onset of the allergy.

Viewer cache:
Only the date part is stored in the Viewer Cache. (ALGOnsetDate is

HL7: AL1-6 : IdentificationDate
HL7: IAM-11 : OnsetDate
VIEWERLIB: User.HS.PAAllergy(ALGOnsetDate)
Property methods: FromTimeDisplayToLogical(), FromTimeGet(), FromTimeIsValid(), FromTimeLogicalToDisplay(), FromTimeLogicalToTimeStamp(), FromTimeLogicalToXSD(), FromTimeNormalize(), FromTimeOdbcToLogical(), FromTimeSet(), FromTimeXSDToLogical()
property InactiveComments as %String);
Why the allergy is considered inactive.
CRLF-delimited string.

HL7: IAM-8 : ActionReason
VIEWERLIB: User.HS.PAAllergy(ALGInActiveFreeText)
Property methods: InactiveCommentsDisplayToLogical(), InactiveCommentsGet(), InactiveCommentsIsValid(), InactiveCommentsLogicalToDisplay(), InactiveCommentsLogicalToOdbc(), InactiveCommentsNormalize(), InactiveCommentsSet()
property InactiveTime as HS.SDA3.TimeStamp;
When the allergy was no longer active.

Note that while the HL7 standard describes IAM-20 as the time of any status
change, HealthShare will always interpret this field as the time the
allergy is declared inactive.

Streamlet cache:
In the OnBeforeMatch method of the Streamlet class,
if InactiveTime is not null, then Status will be
set to "I" for "Inactive".

Viewer cache:
Only the date part is saved to the Viewer Cache. (ALGInActiveDate is

HL7: IAM-20 : StatusedatDateTime
VIEWERLIB: User.HS.PAAllergy(ALGInActiveDate)
Property methods: InactiveTimeDisplayToLogical(), InactiveTimeGet(), InactiveTimeIsValid(), InactiveTimeLogicalToDisplay(), InactiveTimeLogicalToTimeStamp(), InactiveTimeLogicalToXSD(), InactiveTimeNormalize(), InactiveTimeOdbcToLogical(), InactiveTimeSet(), InactiveTimeXSDToLogical()
property QualifyingDetails as %String (MAXLEN = 32000);
CRLF-delimited string

Property methods: QualifyingDetailsDisplayToLogical(), QualifyingDetailsGet(), QualifyingDetailsIsValid(), QualifyingDetailsLogicalToDisplay(), QualifyingDetailsLogicalToOdbc(), QualifyingDetailsNormalize(), QualifyingDetailsSet()
property Reaction as HS.SDA3.CodeTableDetail.Reaction;
The reaction to the allergen

Though the HL7 fields are repeating, HL7ToSDA3 will only use the first
instance of each. And although the HL7 field is not a coded element,
HL7ToSDA3 will use the first piece with respect to the Component Separator
(usually "^") as the Reaction Code.

Viewer cache:
Note that the code table for this type is PAC_AllergyCategory,
whereas the table for AllergyCategory is MRC_AllType.

HL7: AL1-5 : AllergyReaction
HL7: IAM-5 : AllergyReaction
SDATableName=Reaction, ViewerClass=User.HS.PACAllergyCategory
VIEWERLIB: User.HS.PAAllergy(ALGCategoryDR)
Property methods: ReactionGet(), ReactionGetObject(), ReactionGetObjectId(), ReactionGetSwizzled(), ReactionIsEmpty(), ReactionIsValid(), ReactionNewObject(), ReactionSet(), ReactionSetObject(), ReactionSetObjectId(), ReactionUnSwizzle()
property ReasonNotCoded as %String);
Why allergy can't be coded (e.g. too imprecise).
CRLF-delimited string.

VIEWERLIB: User.HS.PAAllergy(ALGReasonNotCoded)
Property methods: ReasonNotCodedDisplayToLogical(), ReasonNotCodedGet(), ReasonNotCodedIsValid(), ReasonNotCodedLogicalToDisplay(), ReasonNotCodedLogicalToOdbc(), ReasonNotCodedNormalize(), ReasonNotCodedSet()
property Severity as HS.SDA3.CodeTableDetail.Severity;
The severity of the allergy (e.g. Mild, Severe, Life-threatening)

Both AL1-4 and IAM-4 will only be parsed if subfield 1 or 2 is not null.

HL7: AL1-4 : AllergySeverityCode
HL7: IAM-4 : AllergySeverityCode
SDATableName=Severity, ViewerClass=User.HS.PACAllergySeverity
VIEWERLIB: User.HS.PAAllergy(ALGSeverityDR)

HL7: AL1-4.1 : AllergySeverityCode.Identifier
HL7: IAM-4.1 : AllergySeverityCode.Identifier
VIEWERLIB: User.HS.PACAllergySeverity(ALRGSEVCode)
HL7: AL1-4.2 : AllergySeverityCode.Text
HL7: IAM-4.2 : AllergySeverityCode.Text
VIEWERLIB: User.HS.PACAllergySeverity(ALRGSEVDesc)
HL7: AL1-4.3 : AllergySeverityCode.NameofCodingSystem
HL7: IAM-4.3 : AllergySeverityCode.NameofCodingSystem
VIEWERLIB: Not stored
Property methods: SeverityGet(), SeverityGetObject(), SeverityGetObjectId(), SeverityGetSwizzled(), SeverityIsEmpty(), SeverityIsValid(), SeverityNewObject(), SeveritySet(), SeveritySetObject(), SeveritySetObjectId(), SeverityUnSwizzle()
property Status as %String;
Though IAM-17 is coded, HL7ToSDA3 will only parse the Identifier
(subfield 1).

Streamlet cache:
In the OnBeforeMatch method of the Streamlet class, if Status is not "A",
"I", "R", "C", or "E" ("Active", "Inactive", "Resolved", "To Be Confirmed",
or "Error", respectively) or null or the delete instruction, it will be set
to null. Also, no matter what value is passed in for Status, if the Allergy
has an InactiveTime, Status will be set to "I". In the OnValidate method of
the Streamlet class, if Status is null, it will be defaulted to "A".

Viewer cache:
The value that appears in the Viewer does not come from the DISPLAYLIST of
the ALGStatus property, but rather the Description for the corresponding
AllergyStatus Standard Type Item. See the HS documentation for guidance on
configuring this.

HL7: IAM-17.1 : AllergyClinicalStatusCode.Identifier
VIEWERLIB: User.HS.PAAllergy(ALGStatus)
Property methods: StatusDisplayToLogical(), StatusGet(), StatusIsValid(), StatusLogicalToDisplay(), StatusLogicalToOdbc(), StatusNormalize(), StatusSet()
property ToTime as HS.SDA3.TimeStamp;
The time the allergy is no longer present

Viewer cache:
Only the date part is saved to the Viewer Cache. (ALGExpiryDate is

VIEWERLIB: User.HS.PAAllergy(ALGExpiryDate)
Property methods: ToTimeDisplayToLogical(), ToTimeGet(), ToTimeIsValid(), ToTimeLogicalToDisplay(), ToTimeLogicalToTimeStamp(), ToTimeLogicalToXSD(), ToTimeNormalize(), ToTimeOdbcToLogical(), ToTimeSet(), ToTimeXSDToLogical()
property VerifiedTime as HS.SDA3.TimeStamp;
When the allergy was verified

Viewer cache:
Only the date part is saved to the Viewer Cache. (ALGVerifiedDate is

VIEWERLIB: User.HS.PAAllergy(ALGVerifiedDate)
Property methods: VerifiedTimeDisplayToLogical(), VerifiedTimeGet(), VerifiedTimeIsValid(), VerifiedTimeLogicalToDisplay(), VerifiedTimeLogicalToTimeStamp(), VerifiedTimeLogicalToXSD(), VerifiedTimeNormalize(), VerifiedTimeOdbcToLogical(), VerifiedTimeSet(), VerifiedTimeXSDToLogical()


classmethod EndXMLList()
Inherited description: 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 StartXMLList()
Inherited description: 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 Properties

Inherited Methods

FeedbackOpens in a new tab