A system for processing ECG data to detect atrial fibrillation, AFIB, the system comprising: a processor, the processor being configured to: execute a beat module to: receive a time series of ECG data; identify heart beats in the time series of ECG data; determine a beat AFIB value based on a timing of each identified heart beat, wherein the beat AFIB value represents a presence or absence of AFIB based on variability in the timing of each identified heart beat; execute a segment module to: receive the time series of ECG data; divide the time series of ECG data into two or more time segments; determine a segment AFIB value for each time segment, wherein the segment AFIB value indicates a presence or absence of AFIB in the time segment based on whether any of a set of known rhythms are identified; execute an AFIB detection module to determine an AFIB identification value for each time segment based on a combination of the beat AFIB value during that time segment and the segment AFIB value for that time segment. a processor, the processor being configured to: execute a beat module to: receive a time series of ECG data; identify heart beats in the time series of ECG data; determine a beat AFIB value based on a timing of each identified heart beat, wherein the beat AFIB value represents a presence or absence of AFIB based on variability in the timing of each identified heart beat; execute a segment module to: receive the time series of ECG data; divide the time series of ECG data into two or more time segments; determine a segment AFIB value for each time segment, wherein the segment AFIB value indicates a presence or absence of AFIB in the time segment based on whether any of a set of known rhythms are identified; execute an AFIB detection module to determine an AFIB identification value for each time segment based on a combination of the beat AFIB value during that time segment and the segment AFIB value for that time segment. execute a beat module to: receive a time series of ECG data; identify heart beats in the time series of ECG data; determine a beat AFIB value based on a timing of each identified heart beat, wherein the beat AFIB value represents a presence or absence of AFIB based on variability in the timing of each identified heart beat; receive a time series of ECG data; identify heart beats in the time series of ECG data; determine a beat AFIB value based on a timing of each identified heart beat, wherein the beat AFIB value represents a presence or absence of AFIB based on variability in the timing of each identified heart beat; execute a segment module to: receive the time series of ECG data; divide the time series of ECG data into two or more time segments; determine a segment AFIB value for each time segment, wherein the segment AFIB value indicates a presence or absence of AFIB in the time segment based on whether any of a set of known rhythms are identified; receive the time series of ECG data; divide the time series of ECG data into two or more time segments; determine a segment AFIB value for each time segment, wherein the segment AFIB value indicates a presence or absence of AFIB in the time segment based on whether any of a set of known rhythms are identified; execute an AFIB detection module to determine an AFIB identification value for each time segment based on a combination of the beat AFIB value during that time segment and the segment AFIB value for that time segment.