RFC 3881 Compliant XML schema reference

The following section contains the RFC 3881 Compliant XML schema reference:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="AuditMessage">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="EventIdentification"
                    type="EventIdentificationType" />
                <xs:element name="ActiveParticipant"
                    maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:complexContent>
                            <xs:extension base="ActiveParticipantType" />
                        </xs:complexContent>
                    </xs:complexType>
                </xs:element>
                <xs:element name="AuditSourceIdentification"
                    type="AuditSourceIdentificationType" maxOccurs="unbounded" />
                <xs:element name="ParticipantObjectIdentification"
                    type="ParticipantObjectIdentificationType" minOccurs="0"
                    maxOccurs="unbounded" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="EventIdentificationType">
        <xs:sequence>
            <xs:element name="EventID" type="CodedValueType" />
            <xs:element name="EventTypeCode" type="CodedValueType"
                minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
        <xs:attribute name="EventActionCode" use="optional">
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="C">
                        <xs:annotation>
                            <xs:appinfo>Create</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="R">
                        <xs:annotation>
                            <xs:appinfo>Read</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="U">
                        <xs:annotation>
                            <xs:appinfo>Update</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="D">
                        <xs:annotation>
                            <xs:appinfo>Delete</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="E">
                        <xs:annotation>
                            <xs:documentation>Execute</xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="EventDateTime" type="xs:dateTime"
            use="required" />
        <xs:attribute name="EventOutcomeIndicator" use="required">
            <xs:simpleType>
                <xs:restriction base="xs:integer">
                    <xs:enumeration value="0">
                        <xs:annotation>
                            <xs:appinfo>Success</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="4">
                        <xs:annotation>
                            <xs:appinfo>Minor failure</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="8">
                        <xs:annotation>
                            <xs:appinfo>Serious failure</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="12">
                        <xs:annotation>
                            <xs:appinfo>
                                Major failure; action made unavailable
                            </xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="AuditSourceIdentificationType">
        <xs:sequence>
            <xs:element name="AuditSourceTypeCode" type="CodedValueType"
                minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
        <xs:attribute name="AuditEnterpriseSiteID" type="xs:string"
            use="optional" />
        <xs:attribute name="AuditSourceID" type="xs:string"
            use="required" />
    </xs:complexType>
    <xs:complexType name="ActiveParticipantType">
        <xs:sequence minOccurs="0">
            <xs:element name="RoleIDCode" type="CodedValueType"
                minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
        <xs:attribute name="UserID" type="xs:string" use="required" />
        <xs:attribute name="AlternativeUserID" type="xs:string"
            use="optional" />
        <xs:attribute name="UserName" type="xs:string" use="optional" />
        <xs:attribute name="UserIsRequestor" type="xs:boolean"
            use="optional" default="true" />
        <xs:attribute name="NetworkAccessPointID" type="xs:string"
            use="optional" />
        <xs:attribute name="NetworkAccessPointTypeCode"
            use="optional">
            <xs:simpleType>
                <xs:restriction base="xs:unsignedByte">
                    <xs:enumeration value="1">
                        <xs:annotation>
                            <xs:appinfo>
                                Machine Name, including DNS name
                            </xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="2">
                        <xs:annotation>
                            <xs:appinfo>IP Address</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="3">
                        <xs:annotation>
                            <xs:appinfo>Telephone Number</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="ParticipantObjectIdentificationType">
        <xs:sequence>
            <xs:element name="ParticipantObjectIDTypeCode"
                type="CodedValueType" />
            <xs:choice minOccurs="0">
                <xs:element name="ParticipantObjectName"
                    type="xs:string" minOccurs="0" />
                <xs:element name="ParticipantObjectQuery"
                    type="xs:base64Binary" minOccurs="0" />
            </xs:choice>
            <xs:element name="ParticipantObjectDetail"
                type="TypeValuePairType" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
        <xs:attribute name="ParticipantObjectID" type="xs:string"
            use="required" />
        <xs:attribute name="ParticipantObjectTypeCode" use="optional">
            <xs:simpleType>
                <xs:restriction base="xs:unsignedByte">
                    <xs:enumeration value="1">
                        <xs:annotation>
                            <xs:appinfo>Person</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="2">
                        <xs:annotation>
                            <xs:appinfo>System object</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="3">
                        <xs:annotation>
                            <xs:appinfo>Organization</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="4">
                        <xs:annotation>
                            <xs:appinfo>Other</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="ParticipantObjectTypeCodeRole"
            use="optional">
            <xs:simpleType>
                <xs:restriction base="xs:unsignedByte">
                    <xs:enumeration value="1">
                        <xs:annotation>
                            <xs:appinfo>Patient</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="2">
                        <xs:annotation>
                            <xs:appinfo>Location</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="3">
                        <xs:annotation>
                            <xs:appinfo>Report</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="4">
                        <xs:annotation>
                            <xs:appinfo>Resource</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="5">
                        <xs:annotation>
                            <xs:appinfo>Master file</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="6">
                        <xs:annotation>
                            <xs:appinfo>User</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="7">
                        <xs:annotation>
                            <xs:appinfo>List</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="8">
                        <xs:annotation>
                            <xs:appinfo>Doctor</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="9">
                        <xs:annotation>
                            <xs:appinfo>Subscriber</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="10">
                        <xs:annotation>
                            <xs:appinfo>Guarantor</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="11">
                        <xs:annotation>
                            <xs:appinfo>
                                Security User Entity
                            </xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="12">
                        <xs:annotation>
                            <xs:appinfo>Security User Group</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="13">
                        <xs:annotation>
                            <xs:appinfo>Security Resource</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="14">
                        <xs:annotation>
                            <xs:appinfo>
                                Security Granualarity Definition
                            </xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="15">
                        <xs:annotation>
                            <xs:appinfo>Provider</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="16">
                        <xs:annotation>
                            <xs:appinfo>Report Destination</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="17">
                        <xs:annotation>
                            <xs:appinfo>Report Library</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="18">
                        <xs:annotation>
                            <xs:appinfo>Schedule</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="19">
                        <xs:annotation>
                            <xs:appinfo>Customer</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="20">
                        <xs:annotation>
                            <xs:appinfo>Job</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="21">
                        <xs:annotation>
                            <xs:appinfo>Job Stream</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="22">
                        <xs:annotation>
                            <xs:appinfo>Table</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="23">
                        <xs:annotation>
                            <xs:appinfo>Routing Criteria</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="24">
                        <xs:annotation>
                            <xs:appinfo>Query</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="ParticipantObjectDataLifeCycle"
            use="optional">
            <xs:simpleType>
                <xs:restriction base="xs:unsignedByte">
                    <xs:enumeration value="1">
                        <xs:annotation>
                            <xs:appinfo>
                                Origination / Creation
                            </xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="2">
                        <xs:annotation>
                            <xs:appinfo>
                                Import / Copy from original
                            </xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="3">
                        <xs:annotation>
                            <xs:appinfo>Amendment</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="4">
                        <xs:annotation>
                            <xs:appinfo>Verification</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="5">
                        <xs:annotation>
                            <xs:appinfo>Translation</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="6">
                        <xs:annotation>
                            <xs:appinfo>Access / Use</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="7">
                        <xs:annotation>
                            <xs:appinfo>De-identification</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="8">
                        <xs:annotation>
                            <xs:appinfo>
                                Aggregation, summarization, derivation
                            </xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="9">
                        <xs:annotation>
                            <xs:appinfo>Report</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="10">
                        <xs:annotation>
                            <xs:appinfo>
                                Export / Copy to target
                            </xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="11">
                        <xs:annotation>
                            <xs:appinfo>Disclosure</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="12">
                        <xs:annotation>
                            <xs:appinfo>
                                Receipt of disclosure
                            </xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="13">
                        <xs:annotation>
                            <xs:appinfo>Archiving</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="14">
                        <xs:annotation>
                            <xs:appinfo>Logical deletion</xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="15">
                        <xs:annotation>
                            <xs:appinfo>
                                Permanent erasure / Physical destruction
                            </xs:appinfo>
                        </xs:annotation>
                    </xs:enumeration>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="ParticipantObjectSensitivity"
            type="xs:string" use="optional" />
    </xs:complexType>
    <xs:complexType name="CodedValueType">
        <xs:attribute name="code" type="xs:string" use="required" />
        <xs:attributeGroup ref="CodeSystem" />
        <xs:attribute name="displayName" type="xs:string"
            use="optional" />
        <xs:attribute name="originalText" type="xs:string"
            use="optional" />
    </xs:complexType>
    <xs:complexType name="TypeValuePairType">
        <xs:attribute name="type" type="xs:string" use="required" />
        <xs:attribute name="value" type="xs:base64Binary"
            use="required" />
    </xs:complexType>
    <xs:attributeGroup name="CodeSystem">
        <xs:attribute name="codeSystem" type="OID" use="optional" />
        <xs:attribute name="codeSystemName" type="xs:string"
            use="optional" />
    </xs:attributeGroup>
    <xs:simpleType name="OID">
        <xs:restriction base="xs:string">
            <xs:whiteSpace value="collapse" />
        </xs:restriction>
    </xs:simpleType>
</xs:schema> 

Example of RFC 3881 Schema Compliant Audit Message:
<AuditMessage>
    <EventIdentification EventActionCode="E" EventDateTime="2012-08-16T05:30:00.450-07:00" EventOutcomeIndicator="0">
        <EventID code="110100" codeSystemName="DCM" displayName="Application Activity"></EventID>
        <EventTypeCode code="110120" codeSystemName="DCM" displayName="Application Start"></EventTypeCode>
    </EventIdentification>
    <ActiveParticipant AlternativeUserID="19041@hiadev001" NetworkAccessPointID="10.145.240.60" NetworkAccessPointTypeCode="2" UserID="root" UserIsRequestor="false">
        <RoleIDCode code="110150" codeSystemName="DCM" displayName="Application"></RoleIDCode>
    </ActiveParticipant>
    <AuditSourceIdentification AuditSourceID="10.145.240.60@REGISTRY_ORACLE_HIM"></AuditSourceIdentification>
</AuditMessage>