docs: def start(self, tag, attrib):
          """On start of element tag"""
          if tag == E_CLINICAL_DATA:
              self.ref_state = AUDIT_REF_STATE
              self.context = Context(attrib[A_STUDY_OID],
                                     attrib[A_AUDIT_SUBCATEGORY_NAME],
                                     int(attrib[A_METADATA_VERSION_OID]))
  
          elif tag == E_SUBJECT_DATA:
              self.context.subject = Subject(
                  attrib.get(A_SUBJECT_KEY),
                  attrib.get(A_SUBJECT_NAME),
                  attrib.get(A_SUBJECT_STATUS),
                  attrib.get(A_TRANSACTION_TYPE, DEFAULT_TRANSACTION_TYPE),
              )
          elif tag == E_USER_REF:
              # Set the Signature or audit-record value depending on state
              self.get_parent_element().user_oid = attrib.get(A_USER_OID)
  
          elif tag == E_SOURCE_ID:
              self.state = STATE_SOURCE_ID
  
          elif tag == E_DATE_TIME_STAMP_:
              self.state = STATE_DATETIME
  
          elif tag == E_REASON_FOR_CHANGE:
              self.state = STATE_REASON_FOR_CHANGE
  
          elif tag == E_LOCATION_REF:
              # Set the Signature or audit-record value depending on state
              self.get_parent_element().location_oid = attrib.get(A_LOCATION_OID)
  
          elif tag == E_STUDY_EVENT_DATA:
              self.context.event = Event(
                  attrib.get(A_STUDYEVENT_OID),
                  attrib.get(A_STUDYEVENT_REPEAT_KEY),
                  attrib.get(A_TRANSACTION_TYPE),
                  attrib.get(A_INSTANCE_NAME),
                  attrib.get(A_INSTANCE_OVERDUE),
                  make_int(attrib.get(A_INSTANCE_ID), -1)
              )
  
          elif tag == E_FORM_DATA:
              self.context.form = Form(
                  attrib.get(A_FORM_OID),
                  int(attrib.get(A_FORM_REPEAT_KEY, 0)),
                  attrib.get(A_TRANSACTION_TYPE),
                  attrib.get(A_DATAPAGE_NAME),
                  make_int(attrib.get(A_DATAPAGE_ID, -1)),
              )
  
          elif tag == E_ITEM_GROUP_DATA:
              self.context.itemgroup = ItemGroup(
                  attrib.get(A_ITEMGROUP_OID),
                  int(attrib.get(A_ITEMGROUP_REPEAT_KEY, 0)),
                  attrib.get(A_TRANSACTION_TYPE),
                  make_int(attrib.get(A_RECORD_ID, -1)),
              )
  
          elif tag == E_ITEM_DATA:
              self.context.item = Item(
                  attrib.get(A_ITEM_OID),
                  attrib.get(A_VALUE),
                  yes_no_none(attrib.get(A_FREEZE)),
                  yes_no_none(attrib.get(A_VERIFY)),
                  yes_no_none(attrib.get(A_LOCK)),
                  attrib.get(A_TRANSACTION_TYPE)
              )
  
          elif tag == E_QUERY:
              self.context.query = Query(
                  make_int(attrib.get(A_QUERY_REPEAT_KEY, -1)),
                  attrib.get(A_STATUS),
                  attrib.get(A_RESPONSE),
                  attrib.get(A_RECIPIENT),
                  attrib.get(A_VALUE)  # Optional, depends on status
              )
  
          elif tag == E_PROTOCOL_DEVIATION:
              self.context.protocol_deviation = ProtocolDeviation(
                  make_int(attrib.get(A_PROTCOL_DEVIATION_REPEAT_KEY, -1)),
                  attrib.get(A_CODE),
                  attrib.get(A_CLASS),
                  attrib.get(A_STATUS),
                  attrib.get(A_VALUE),
                  attrib.get(A_TRANSACTION_TYPE)
              )
  
          elif tag == E_REVIEW:
              self.context.review = Review(
                  attrib.get(A_GROUP_NAME),
                  yes_no_none(attrib.get(A_REVIEWED)),
              )
          elif tag == E_COMMENT:
              self.context.comment = Comment(
                  attrib.get(A_COMMENT_REPEAT_KEY),
                  attrib.get(A_VALUE),
                  attrib.get(A_TRANSACTION_TYPE)
  
              )
          elif tag == E_SIGNATURE:
              self.ref_state = SIGNATURE_REF_STATE
  
          elif tag == E_SIGNATURE_REF:
              self.context.signature.oid = attrib.get(A_SIGNATURE_OID)