fabrizio cruzzu > appSUUNTO > test ortostatico

TEST ORTOSTATICO

con SDNN e RMMSD

di fabriziocruzzu mail profilo facebook profilo movescount profilo YouTube

(compatibile con AMBIT2/3)

breve descrizione

Il test ortostatico (test della frequenza cardiaca ortostatica) ha lo scopo di verificare la stato di recupero di un atleta.

Il test, che normalmente viene eseguito di mattina appena svegliati, consiste nel monitorare il battito cardiaco sia a riposo sdraiati (circa 3/5 minuti) che in piedi (circa 2 minuti).

La differenza tra le due frequenze cardiache medie sia da sdraiati che in piedi corrisponde al valore del TEST.

Ho pensato di integrare il test ortostatico con il rielievo della variabilità cardiaca HRV (heart rate variability) in quanto è un indice molto più preciso riguardo l'effettivo stato di recupero dell'atleta.

Riguardo la HRV (in rete esiste molta documentazione di riferimento) io ho preso in considerazione i parametri fondamentali SDNN e RMMSD.

  • segnalo altre due mie applicazioni cui fare riferimento per l'analisi del SDNN ed RMMSD nel tempo che intercorre tra due pressioni consecutive del tasto LAP: SDNN-lap e RMMSD-lap
guida veloce

Per eseguire il TEST ORTOSTATICO con misurazione dei parametri HRV ho realizzato 3 applicazioni SUUNTO tutte da inserire nella modalità sport prescelta e con la checkbox per la registrazione dei dati attivata:

Dopo aver copiato le 3 applicazioni dal sito Movescount (con aggiunta delle stesse alla propria libreria) è necessario creare una modalità sport ed inserire le visualizzazioni personalizzate. Segnalo la guida ufficiale SUUNTO :http://www.suunto.nymans.nu/guide.pdf

  • Potrebbe essere di aiuto sapere che io ho creato la modalità sport TEST ORTHO con queste visualizzazioni personalizzate.
    Per avere la visualizzazione delle applicazioni scelte in modalità grafica è sufficiente cliccare sui triangolini posti a destra ed a sinistra dell'orologio.

Il test ortostatico si compone di 3 fasi: nella prima ci si riposa da sdraiati, nella seconda ci si alza in piedi (si verifica un picco dei battiti cardiaci da non considerare), nella terza ed ultima fase in piedi vengono monitoriati i battiti cardiaci ormai regolarizzati.

Le tre variabili relative alla durata delle fasi sono le seguenti:

  • fase1durata = 240 secondi (4 minuti)
  • fase2durata =  45 secondi
  • fase3durata = 120 secondi (2 minuti)
  • E' possibile modificare tali valori a proprio piacimento DIRETTAMENTE NEI LISTATI delle APPLICAZIONI però, ovviamente, devono essere IDENTICI per tutte le applicazioni. Vedi screenshot

Di seguito alcune anteprime di un test che ho eseguito su me stesso:

approfondimento dei listati

Le 3 applicazioni hanno la medesima struttura e quindi ho pensato di darne spiegazione in "parallelo" seguendone i principi costruttivi comuni.

Il motivo che ha reso necessario la ripetizione della parte relativa al tempo delle varie fasi (sdraiato, in piedi con picco battiti, in piedi con misurazione dati) è che le applicazioni SUUNTO non prevedono l'utilizzo di variabili GLOBALI e quindi non esiste la possibilità che le 3 applicazioni, in esecuzione contemporanea, dialoghino tra di loro.

  • evidenzio con colori diversi i listati delle 3 diverse applicazioni : in giallo il listato HORTO-test, in celestino HORTO-sdnn, in rosato HORTO-rmmsd.

Alla scelta dello sport (condizione SUUNTO_DURATION==0) vengono AZZERATE le VARIABILI GENERICHE.

HORTO-test
/* While in sport mode do this once per second */
/*----------------------------------------------------------------------
inizializzo le variabili all'inizio ed ad ogni cambio fase
-----------------------------------------------------------------------*/
if ( SUUNTO_DURATION == 0 || PHASE < 1 )
{
prefix= "AVG";
postfix= "bmp";
mediaBPMriposo=0; /* media battiti [bpm] a riposo */
mediaBPMtilt=0; /* media battiti [bpm] in piedi */
PHASE=1; /* indicatore di fase */
PREVPHASE=0; /* verifica cambio fase */
visualizza=0; /* visualizzo con RETURN */
fase1durata=240; /* disteso */
fase2durata=45; /* fase di picco del cuore */
fase3durata=120; /* in piedi */
}
HORTO-sdnn:
/* While in sport mode do this once per second */
/*----------------------------------------------------------------------
inizializzo le variabili all'inizio ed ad ogni cambio fase
-----------------------------------------------------------------------*/
if (SUUNTO_DURATION == 0 || PHASE < 1 )
{
prefix= "SDNN";
postfix= "ms";
PHASE=1; /* indicatore di fase */
PREVPHASE=0; /* verifica cambio fase */
fase1durata=240; /* disteso */
fase2durata=45; /* fase di picco del cuore */
fase3durata=120; /* in piedi */
}
HORTO-rmmsd:
/* While in sport mode do this once per second */
/*----------------------------------------------------------------------
inizializzo le variabili all'inizio ed ad ogni cambio fase
-----------------------------------------------------------------------*/
if (SUUNTO_DURATION == 0 || PHASE < 1 )
{
prefix= "RMMSD";
postfix= "";
PHASE=1; /* indicatore di fase */
PREVPHASE=0; /* verifica cambio fase */
fase1durata=240; /* disteso */
fase2durata=45; /* fase di picco del cuore */
fase3durata=120; /* in piedi */
}
  • da notare che le durate delle fasi (fase1durata, fase2durata, fase3durata) devono essere uguali per tutte e 3 le applicazioni e questo è fondamentale nel caso si decidesse di variare tali valori. Qui la screenshot del listato.

Al cambio della fase (PHASE != PREVPHASE) vengono AZZERATE LE VARIABILI SPECIFICHE necessarie al calcolo del battito cardiaco medio e dei parametri SDNN/RMMSD.

HORTO-test:
if (PHASE != PREVPHASE)
{
/*azzero tutte le variabili per calcoldare nuovo MEDIA battiti cardiaci */
N=0; /* contatore */
mediaBPM=0; /* media battiti [bpm] generico */
PREVPHASE = PHASE; /* resetto la condizione per rilevare se è cambiata la fase */
if ( SUUNTO_DURATION > 0 )
{/*solo quando l'esercizio e iniziato (altrimenti suona sempre)*/
Suunto.alarmBeep(); /* segnalo acusticamente cambio fase */
}

}
  • Si noti che solo in HORTO-test è previsto l'allarme sonoro al cambio fase e questo per non avere inutili allarmi multipli.
    La condizione SUUNTO_DURATION > 0 impedisce l'allarme sonoro continuo prima dell'avvio dell'applicazione con il tasto START.
HORTO-sdnn:
if (PHASE != PREVPHASE)
{
/*azzero tutte le variabili per calcoldare nuovo SDNN */
N=0; /*numero interbattito*/
RR=0;/*valore interbattito (tempo tra un battito e l'altro in ms)*/
RRs=0;/*sommatoria del valore di tutti gli interbattiti*/
RRqs=0;/*sommatoria dei quadrati degli interbattiti*/
RRsq=0;/*sommatoria degli interbattiti elevata al quadrato*/
PREVPHASE = PHASE; /* resetto la condizione per rilevare se è cambiata la fase */
}
HORTO-rmmsd:
if (PHASE != PREVPHASE)
{
/*azzero tutte le variabili per calcoldare nuovo RMMSD */
N=0; /*numero interbattito*/
RR=0;/*valore interbattito (tempo tra un battito e l'altro in ms)*/
RRold=0; /*valore interbattito precedente*/
RRdelta=0;/*differenza interbattiti adiacenti*/
RRdeltaq=0;/*quadrato della differenza con interbattito adiacente*/
RRdeltaqs=0;/*sommatoria dei quadrati della differenza tra interbattiti adiacenti*/
PREVPHASE = PHASE; /* resetto la condizione per rilevare se è cambiata la fase */
RMSSD=0;
}

I valori calcolati, sebbene visualizzati in tempo reale, sono dei dati MEDI realtivi ad un lasso di tempo (fase). Pertanto al cambio della fase è necessiario resettare le variabili specifiche (per l'inizio di una nuova serie di valori).

  • Si noti che all'avvio dell'applicazione, quando vengono azzerate le variabili generiche, essendo PREVPHASE diverso da PHASE vengono azzerate anche le VARIABILI SPECIFICHE.

Successivamente vengono CALCOLATI I VALORI SPECIFICI (media battito cardiaco, SDNN, RMMSD) :

HORTO-test: calcolo la media dei battiti cardiaci in tempo reale
/*----------------------------------------------------------------------
calcolo MEDIA BATTITI cardiaci
-----------------------------------------------------------------------*/
if ( SUUNTO_DURATION >0 )/* da quando parte il conteggio registro [bpm] medi*/
{
N = N + 1;
mediaBPM= ((N-1)/N) * mediaBPM + SUUNTO_HR/N; /* calcolo media valori in tempo reale*/
RESULT=visualizza;/* visualizzo il dato in funzione della fase in cui ci si trova*/
/*----------------------------------------------------------------------
VERIFICA E CAMBIO FASE
-----------------------------------------------------------------------*/
.......................... }
  • Solo nel caso del test ortostatico decido di visualizzare il dato in funzione della fase in cui ci si trova ed infatti utilizzo una variabile dal nome visualizza che viene impostata nella sottostante sezione di VERIFICA e CAMBIO FASE.
HORTO-sdnn: per la spiegazione del listato rimando alla app. SDNN-lap
/*----------------------------------------------------------------------
calcolo SDNN in tempo reale battito per battito
-----------------------------------------------------------------------*/
if ( SUUNTO_DURATION >0 )/* da quando parte il conteggio registro SDNN*/
{
N=N+1;
RR=(1/(SUUNTO_HR/60)*1000); /*interbattito*/
RRs=RRs+RR;
RRqs=RRqs+RR*RR;
RRsq=RRs*RRs;
SDNN=1/N*Suunto.sqrt(N*RRqs-RRsq);/* formula SDNN semplificata tempo reale*/
RESULT = SDNN;
/*----------------------------------------------------------------------
VERIFICA E CAMBIO FASE
-----------------------------------------------------------------------*/
.............................}
HORTO-rmmsd: per la spiegazione del listato rimando alla app. RMMSD-lap
/*----------------------------------------------------------------------
calcolo RMMSD in tempo reale battito per battito
-----------------------------------------------------------------------*/
if ( SUUNTO_DURATION >0 )/* da quando parte il conteggio registro RMMSD*/
{ N=N+1;
RR=(1/(SUUNTO_HR/60)*1000); /*interbattito*/
if (N>1 )
{
RRdelta=RR-RRold;
RRdeltaq=RRdelta*RRdelta;
RRdeltaqs=RRdeltaqs+RRdeltaq;
RMSSD=Suunto.sqrt(RRdeltaqs/N);/* formula RMSSD*/
RESULT = RMSSD;
}
RRold=RR;
/*----------------------------------------------------------------------
VERIFICA E CAMBIO FASE
-----------------------------------------------------------------------*/
.............. }
  • contemporaneamente al calcolo dei valori viene verificata la fase (che ci permette di azzerare le variabili specifiche). La sezione di listato è comune a tutte le applicazioni e come si nota qui sopra, è posta alla fine del calcolo dei valori.

HORTO-test, HORTO-sdnn e HORTO-rmmsd: L'ultima sezione riguarda la verifica ed il cambio delle fasi al raggiungimento del tempo impostato.

Il listato (comune a tutte e 3 le applicazioni) viene evidenziato in verdolino e vengono evidenziate in giallo le parti aggiunte relative alla sola applicazione HORTO-test.

/*----------------------------------------------------------------------
VERIFICA E CAMBIO FASE
-----------------------------------------------------------------------*/
if ( PHASE == 1 ) /* fase iniziale disteso*/
{prefix= "distso";
visualizza=mediaBPM; /* visualizzo il battito medio*/
if ( SUUNTO_DURATION >= fase1durata )
{PHASE = PHASE + 1;
/* quando finisce la prima fase disteso memorizzo il battito medio*/
mediaBPMriposo=mediaBPM;
}
}
else if ( PHASE == 2 ) /* fase transitoria di picco battiti cardiaci*/
{prefix= "picco";
visualizza=0; /* visualizzo 0 [bpm] nella fase di picco del cuore*/
if ( SUUNTO_DURATION >= fase1durata+fase2durata )
{PHASE = PHASE + 1;
}
}
else if ( PHASE == 3 ) /* fase finale in piedi (TILT TEST) */
{prefix= "piedi";
visualizza=mediaBPM;
if ( SUUNTO_DURATION >= fase1durata+fase2durata+fase3durata )
PHASE = PHASE + 1;
/* quando finisce la fase in piedi memorizzo il battito medio*/
mediaBPMtilt=mediaBPM;

}
}
else /* se non è fase 1 o 2 o 3 test finito */
{
prefix= "TEST";
visualizza=mediaBPMtilt-mediaBPMriposo;

}
  • le aggiunte relative al listato HORTO-test sono state necessarie per vsualizzare il prefix con identificazione della fase e per la visualizzazione (e quindi memorizzazione) del risultato del test ortostatico che a differenza di RMMSD ed SDNN non è una media di valori bensì una differenza di valori medi.