Écrire des données sur la glycémie

Votre application peut enregistrer des données sur la glycémie en écrivant dans le type de données com.google.blood_glucose. Dans ce type de données, chaque point de données représente une mesure de glycémie instantanée unique. Le point de données contient des champs concernant la concentration de glycémie, les relations temporelles avec les repas et le sommeil, ainsi que la source du spécimen qui a été mesuré. Tous les champs, à l'exception de la concentration de glycémie, sont facultatifs.

  • La concentration de glucose dans le sang est mesurée en mmol/L (1 mmol/L équivaut à 18 mg/dL).
  • Si cette valeur est spécifiée, la relation temporelle avec le repas doit correspondre à l'une des valeurs répertoriées dans FIELD_TEMPORAL_RELATION_TO_MEAL.
  • Le type de repas doit correspondre à l'une des valeurs listées dans FIELD_MEAL_TYPE. Si le type de repas n'est pas connu, utilisez MEAL_TYPE_UNKNOWN.
  • Si elle est spécifiée, la relation temporelle avec le sommeil doit avoir l'une des valeurs répertoriées dans FIELD_TEMPORAL_RELATION_TO_SLEEP.
  • Si elle est spécifiée, la source de l'échantillon de glycémie doit correspondre à l'une des valeurs listées dans FIELD_BLOOD_GLUCOSE_SPECIMEN_SOURCE.

Créer une source de données

Android

Pour écrire un point de données sur la glycémie, créez un DataSource de TYPE_BLOOD_GLUCOSE, comme illustré dans l'exemple suivant:

val bloodGlucoseSource = DataSource.Builder()
    .setDataType(TYPE_BLOOD_GLUCOSE)
    // ...
    .build()

REST

Pour écrire un point de données sur la glycémie, créez une source de données.

Méthode HTTP

POST

URL de la requête

https://www.googleapis.com/fitness/v1/users/me/dataSources

Corps de la requête

{
  "dataStreamName": "BloodGlucose",
  "type": "raw",
  "application": {
    "detailsUrl": "http://example.com",
    "name": "My Example App",
    "version": "1"
  },
  "dataType": {
    "name": "com.google.blood_glucose"
   }
}

Réponse

Si la source de données a bien été créée, la réponse est un code d'état 200 OK. Le corps de la réponse contient une représentation JSON de la source de données, y compris une propriété datasource.dataStreamId que vous pouvez utiliser comme ID de la source de données pour les requêtes ultérieures.

Commande CURL

$ curl --header "Authorization: Bearer ya29.yourtokenvalue --request POST \
  --header "Content-Type: application/json;encoding=utf-8" --data @blood-glucose-ds.json \
  https://www.googleapis.com/fitness/v1/users/me/dataSources

Ajouter des données

Android

Pour ajouter des données à la source créée ci-dessus, créez un point de données pour cette source, qui peut être inséré à l'aide de l'API History:

val bloodGlucose = DataPoint.builder(bloodGlucoseSource)
    .setTimestamp(timestamp, TimeUnit.MILLISECONDS)
    .setField(FIELD_BLOOD_GLUCOSE_LEVEL, 5.0f) // 90 mg/dL
    .setField(FIELD_TEMPORAL_RELATION_TO_MEAL, FIELD_TEMPORAL_RELATION_TO_MEAL_BEFORE_MEAL)
    .setField(FIELD_MEAL_TYPE, MEAL_TYPE_BREAKFAST)
    .setField(FIELD_TEMPORAL_RELATION_TO_SLEEP, TEMPORAL_RELATION_TO_SLEEP_ON_WAKING)
    .setField(FIELD_BLOOD_GLUCOSE_SPECIMEN_SOURCE, BLOOD_GLUCOSE_SPECIMEN_SOURCE_CAPILLARY_BLOOD)
    .build()

REST

Cet exemple illustre l'ajout de données sur la glycémie à l'aide de la source de données créée ci-dessus.

Méthode HTTP

PATCH

URL de la requête

https://www.googleapis.com/fitness/v1/users/me/dataSources/datasource.dataStreamId/datasets/1574159699023000000-1574159699023000000

Corps de la requête

Par souci de clarté, le corps JSON ci-dessous est annoté avec des commentaires afin d'indiquer l'utilisation des constantes du champ de l'état. Bien que l'API Fit supprime actuellement les commentaires, nous vous recommandons vivement de les supprimer de votre code, car JSON n'est officiellement pas compatible avec les commentaires.

{
  "minStartTimeNs": 1574159699023000000,
  "maxEndTimeNs": 1574159699023000000,
  "dataSourceId": "datasource.dataStreamId",
  "point": [
    {
      "startTimeNanos": 1574159699023000000,
      "endTimeNanos": 1574159699023000000,
      "dataTypeName": "com.google.blood_glucose",
      "value": [
        {
          // Blood glucose level, 90 mg/dL
          "fpVal": 5.0
        },
        {
          // FIELD_TEMPORAL_RELATION_TO_MEAL_BEFORE_MEAL
          "intVal": 3
        },
        {
          // MEAL_TYPE_BREAKFAST
          "intVal": 1
        },
        {
          // TEMPORAL_RELATION_TO_SLEEP_ON_WAKING
          "intVal": 3
        },
        {
          // BLOOD_GLUCOSE_SPECIMEN_SOURCE_CAPILLARY_BLOOD
          "intVal": 2
        }
      ]
    }
  ]
}

Réponse

Si les données sur la glycémie ont bien été ajoutées, la réponse est un code d'état 200 OK. Le corps de la réponse contient une représentation JSON des données sur la glycémie qui ont été ajoutées.

Commande CURL

$ curl --header "Authorization: Bearer ya29.yourtokenvalue --request PATCH \
    --header "Content-Type: application/json;encoding=utf-8" --data @blood-glucose-data.json \
    https://www.googleapis.com/fitness/v1/users/me/dataSources/datasource.dataStreamId/datasets/1574159699023000000-1574159699023000000