HI Bukhtiar,

Iris has built in validation against a schema see: HL7 Schemas and Available Tools

But, is simple to iterate over all segments of a HL7 message  or any Virtual Document like this example:

#Dim hl7Msg   As EnsLib.HL7.Message = ##Class(EnsLib.HL7.Message).%OpenId(<changByAId>)
#Dim segIndex As %Integer           = 0
For segIndex = 1 : 1 : hl7Msg.SegCount
    #Dim segment As EnsLib.HL7.Segment = hl7Msg.getSegmentByIndex(segIndex)
    Write segment.Name, !

For more details se then documentation:




/// <p>
/// <b>2020-04-23 - Cristiano José da Silva</b><br/>
/// Conjunto de fuincões a serem utilizadas pelas regras , tranformações e process
/// <p>
Class HC.distribuicao.utils.FunctionSet Extends Ens.Rule.FunctionSet

ClassMethod HL7AtribuirValor(valor As %String, caminhoPropriedade As %String, mensagem As EnsLib.HL7.Message) As %Boolean [ Final ]
    If ('mensagem.IsMutable)
        Throw ##Class(%Exception.General).%New("ObjetoImutavel", 5001, $$$CurrentClass _ "." _ $$$CurrentMethod, "Impossível atribuir valor a mensagem imutável.")
    Do mensagem.SetValueAt(valor, caminhoPropriedade, "set", "")
    Return 1

Hi Bukhtiar,

Use the property "Document" instead HL7 or HL7.Source

Like this:

The Function HL7AtribuirValor assign the value "A08" int the field "MSH:MEssageType.triggerevent", in the Document that is the HL7 Message and returns a boolean value.

Hi John,

If I understood, you want to pass the code to a method and return the description.

All descriptions of HL7 code tables are stored in the global ^EnsHL7.Description.

The structure of global is ^EnsHL7.Description(<category>,"CT",<codeTableCode,valurKey>)=<descritpion>.

For HL7 Schema Category 2.3.1 the global have the content:

^EnsHL7.Description("2.3.1","CT",270)="Document type"
^EnsHL7.Description("2.3.1","CT",270,"AR")="Autopsy report"
                                     "DI")="Diagnostic imaging"
                                     "DS")="Discharge summary"
                                     "ED")="Emergency department report"
                                     "HP")="History and physical examination"
                                     "OP")="Operative report"
                                     "PC")="Psychiatric consultation"
                                     "PH")="Psychiatric history and physical examination"
                                     "PN")="Procedure note"
                                     "PR")="Progress note"
                                     "SP")="Surgical pathology"
                                     "TS")="Transfer summary"

A generic method would be like:

Hi Ahmad,

In the class Ens.Util.FunctionSet exists the methods In and NotIn, that's work if comma-delimited string.

To check if a value is not in a LookupTable test if the returns of method Lookup is empty.