The object oriented programming technique as provided by C++ allows a very natural view on the HL7 data items. Any HL7 data element is a separate class in ProtoGen/HL7. Individual data types, segments or messages are special classes, which share common properties. We define the properties that are common to all HL7 classes as the class HL7Object. HL7Object is an abstract base class which still contains some methods and data instances including the flag that shows if an object is present or not.
Figure 1: The hierarchy of abstract HL7 classes
There is a hierarchy of classes as shown in figure 1. Basically there is the class "HL7Object", which defines properties that all HL7 classes have in common. The class "Type" includes the basic types (class "Basetype") as well as the composite types (class "Composite"). All types have in common that they may assume the null value. On the other hand there are the Structure elements which include segment, messages and groups. Groups are groups of segments that may occur repeatedly in one Message. Structure objects may not assume the null value.