def METHOD_NAME(self, line):
    # Sample/ctrl ID    Pat/Ctr/cAl    Test name    Test type
    if not line.strip():
        return 0
    rawdict = {}
    splitted = self.splitLine(line)
    for idx, result in enumerate(splitted):
        if len(self._columns) <= idx:
            self.err("Orphan value in column ${index}",
                     mapping={"index":str(idx + 1)},
                     numline=self._numline)
            break
        rawdict[self._columns[idx]] = result
    acode = rawdict.get('Test name', '')
    if not acode:
        self.err("No Analysis Code defined",
                 numline=self._numline)
        return 0
    rid = rawdict.get('Sample/ctrl ID')
    if not rid:
        self.err("No Sample ID defined",
                 numline=self._numline)
        return 0
    errors = rawdict.get('Errors', '')
    errors = "Errors: %s" % errors if errors else ''
    notes = rawdict.get('Notes', '')
    notes = "Notes: %s" % notes if notes else ''
    rawdict[acode]=rawdict['Result']
    rawdict['DefaultResult'] = acode
    rawdict['Remarks'] = ' '.join([errors, notes])
    rawres = self.getRawResults().get(rid, [])
    raw = rawres[0] if len(rawres) > 0 else {}
    raw[acode] = rawdict
    self._addRawResult(rid, raw, True)
    return 0