code: def parse_data_line(self, sline):
          
          # if there are less values founded than headers, it's an error
          if len(sline) != len(self._columns):
              self.err("One data line has the wrong number of items")
              return -1
          rawdict = {}
          for idx, result in enumerate(sline):
              rawdict[self._columns[idx]] = result
          # Getting key values
          resid = rawdict['Sample ID']
          if resid == '' and rawdict['Order Number'] != '':
              # If Sample ID is void, we will use the OrderNumber as a reference.
              resid = rawdict['Order Number']
          elif resid == '' and rawdict['Order Number'] == '':
              # If there isn't Sample ID or Order Number
              self.err("Result identification not found.", numline=self._numline)
              return -1
          testname = rawdict['Test']
          if testname == '':
              # None test name found
              self.err("Result test name not found.", numline=self._numline)
              return -1
          del rawdict['Test']
  
          # Building the new dict
          rawdict['DefaultResult'] = 'Result'
          rawdict['Remarks'] = ''.join([rawdict['Result'], " on Order Number.", resid]) \
              if rawdict['Result'] == "Target Not Detected" else ''
  
          if self._fileformat == "csv":
              rawdict['DateTime'] = rawdict['Accepted Date/Time']
          else:
              rawdict['DateTime'] = self.csvDate2BikaDate(
                  rawdict['Accepted Date/Time'])
  
          self._addRawResult(resid, {testname: rawdict}, False)
          return 0
docs: Parses the data line and builds the dictionary.
          :param sline: a split data line to parse
          :returns: the number of rows to jump and parse the next data line or return the code error -1