iDIERS FHIR Export Documentation

When requesting a data export, the app user can choose to serialize the stored user profile data according to the built-in schema of the FHIR specification or choose to serialize the user profile and the training making use of FHIR Extension. In the second case, the data is separated into Bundles. Information about the Patient Bundle and the Training Bundle can be found below.

Patient Bundle

The Patient Bundle uses the Patient schema from FHIR. The iDIERS app can store the following information about a user:

  • Identifier : internal identifier shared between the practitioner who prescribed the iDIERS app and the user of the app.
  • HumanName: the name given by the user of the app during registration.
  • Gender: the gender given by the user of the app during registration.
  • BirthDate: the birth date given by the user.

Apart from the identifier, the information is entered by the user on a voluntary basis and there is no assurance about the veracity.

When choosing the full export with Extensions, the following information is present inside a userData Extensions:

  • Email: the email address given by the user during registration.
  • Height: the height of the user given in the profile settings.
  • Weight: the weight of the user given in the profile settings.
  • Activity_level: the activity level of the user as determined by the practitioner.
  • Training_level: the current training level at the moment of the export.
  • Scan_Date: the date at which the QR code for the current training was scanned.
  • Valid_until: the validity date of the current training.

Training Bundle

Json Export

The iDIERS JSON export contains all the information stored in the app. There are 3 keys:

  • Schedules: contains the details of every training session as well as the feedback given by the user.
  • Statistics: contains the computed statistics given the results of trainings.
  • User Data: contains all the data associated with the user such as personal identifiers and preferences.

The format of these 3 keys is detailed below.

Schedules

The key "Schedules" is an array containing the information for all 3 levels of the training. Every level contains the following information:

  • ForcedLevel : A Boolean indicating if the level was forced by the user, i.e. that the user went against recommendations to visit a doctor after completing the previous level and decided to start the next level in the training.
  • Trainings : The details and information of every training session, this array is detailed under Trainings.

Trainings

  • Index : the index of the training session in the level.

  • AppointmentDate: planned date of the training session.

  • Training : information about the training session.

    • Index : redundancy with the index of the training session in the level.
    • Duration : indicates the duration in days of the training session, currently all session last only 1 day.
    • Periodicity : on which days does that training session fall. This value is a string corresponding to an enum and can contain the values "None, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday".
    • MinimumPeriodicity: the minimum number of days the user can train per week, this value can go from 1 to 4.
    • MaximumPeriodicity: the maximum number of days the user can train per week, this value can go from 1 to 4.
    • Exercises: array of the exercises contained in the training sessions.
      • Type: internal identifier value for the exercise
      • Series: number oftimes the exercise is repeated in the training session
      • Repetitions: number of consecutive times the user must perform the exercise
  • Appointments: the planned appointment of the training session

    • Date: the date planned for the training sessions
    • Status: the status of the appointment. It can take the following values:
      • Default
      • Active
      • Postponed
    • NotificationID: legacy value previously used to store an internal notification value.
    • Results: the feedback and information about the status of the training session. This array is empty if the user has not given any feedback or if the training session hasn't been started
      • Start: starting time of the training session in DateTime format
      • StartSurrogate: starting time of the training session in ticks
      • End: endingtime of the training session in DateTime format
      • EndSurrogate: ending time of the training session in ticks
      • Status: the status of the training session, it can take the following values:
        • Default : the training session has not been started yet
        • Complete : the training session was completed
        • Aborted : the training session was aborted
        • Failure : the training session was not done
      • Failure: the failure status if a training was aborted:
        • Default : the training session has not been started yet
        • Success : the training session was completed
        • Pain : the training session was aborted because of pain
        • Exhaustion: the training session was aborted because of exhaustion
        • Time: the training session was aborted for lack of time
        • NoneGiven: the training session was aborted and no reason was given
      • Exercises: the details for every exercise in the training session
        • Index : the index of the exercise
        • Start: starting time of the exercise in DateTime format
        • StartSurrogate: starting time of the exercise in ticks
        • End: endingtime of the exercise in DateTime format
        • EndSurrogate: ending time of the exercise in ticks
        • Status: the status of the exercise, it can take the following values:
          • Complete: the user pressed to go to the next exercise
          • Skipped: the user skipped the exercise
        • Failure: the failure reason given if the exercise was skipped. It can take the following values:
          • Success: the user has not skipped the exercise
          • Pain: the user skipped the exercise because it was painful
          • Exhaustion: the user skipped the exercise because it was exhausting
        • Remarks: array of additional information about the exercise
          • exerciseStatus: possible values:
            • Pain
            • NoPain
            • Incomplete
          • Pain: boolean indicating the green thumb or red thumb at the end of an exercise
      • Remarks: array of items corresponding to the given feedback by the user at the end of a training session. This array contains 3 types of remarks: the feeling, the effort level and the pain spots:
        • Feeling: objectcontaining the key "Mood" which can take the following values:
          • VeryBad = 1
          • Bad = 2
          • Ok = 3
          • Good = 4
          • VeryGood = 5
        • Effort level: object containing the key "EffortLvl" which can take the following values:
          • NoEffort = 0,
          • VeryLight = 1,
          • Light = 2,
          • Moderate = 3,
          • VerySlightlyExhausting = 4,
          • SlightlyExhausting = 5,
          • Exhausting = 6,
          • QuiteExhausting = 7,
          • VeryExhausting = 8,
          • ExtremelyExhausting = 9,
          • CompletelyExhausting = 10
        • Pain spot: object containing the keys:
          • Spot: the spot name which can be:
            • head_back_left
            • head_back_right
            • cervical_spine_back
            • neck_back_left
            • shoulder_back_left
            • neck_back_right
            • shoulder_back_right
            • thoracic_spine_back
            • lower_back
            • buttom_left
            • buttom_right
            • knee_back_left
            • knee_back_right
            • tight_back_left
            • tight_back_right
            • heel_left
            • heel_right
            • malleolus_med_left
            • malleolus_med_right
            • calf_back_left
            • calf_back_right
            • malleolus_lat_left
            • foot_sole_left
            • malleolus_lat_right
            • foot_sole_right
            • head_front_right
            • head_front_left
            • shoulder_front_right
            • shoulder_front_left
            • chest_right
            • chest_left
            • stomach_right
            • stomach_left
            • arm_prox_right
            • ellbow_right
            • arm_prox_left
            • ellbow_left
            • arm_dist_right
            • hand_right
            • arm_dist_left
            • hand_left
            • inguinal_left
            • hip_front_left
            • inguinal_right
            • hip_front_right
            • knee_front_right
            • knee_front_left
            • tight_front_right
            • tight_front_left
            • shin_front_right
            • ankle_front_right
            • shin_front_left
            • ankle_front_left
          • Intensity: the given intensity of the pain spot.
          • Expansion: currently unused, will always be Local or None.
          • Sensations: the list of the type of pain sensation with their intensities. There are 7 different pain sensations:
            • Dull
            • Pressing
            • Throbbing
            • Knocking
            • Stabbing
            • Pulling
            • Hot

The intensity can take values:

  • One
  • Two
  • Three

If the sensation does not exist (intensity None), it does not appear at all.

Statistics

The statistics object contains 4 keys:

  • Training: the internal identifier of the training
  • Patient: the internal identifier for the user
  • Levels: an array containing the computed statistics for all 3 levels of the training. This array is detailed under Levels.
  • Health49Results: an array containing the results of the Health49 questionnaire. This array is detailed under Health49Results.

Levels

A TrainingLevel object contains the computed statistics for a training level. It contains the following information:

  • EffortLevel: the average effort value across the level with the recent effort having more weight in the calculation. The effortLevel is calculated from the feedback of the trainings and the values are mapped as follows before calculation:
    • 0 => 1
    • 1; 2; 3 => 2
    • 4; 5; 6 => 3
    • 7; 8; 9 => 4
    • 10 => 5

Resulting in an effortLevel value between 1.0 and 5.0.

  • MoodPercentage: the ratio between the mean mood from the training feedback (see Trainings under Results/Remarks/Feeling) and the total mood values. This value is between 0.0 and 1.0.
  • ActivityPercentage: the number of steps during the training level over the target number of steps. The target number of steps is determined by the initial activity level of the user. This value is non-zero if the user is using an external app to count steps and has given access to the data via the iDIERS app. The value is between 0.0 and 1.0.
  • TrainingPercentage: number of completed trainings over the total number of trainings in the level. The value is between 0.0 and 1.0.
  • FitnessPercentage: the ratio between the mean effort from the training feedback (see Trainings under Results/Remarks/Feeling) and the total effort values. This value is between 0.0 and 1.0.
  • HealthPercentage: the ratio of how the user feels depending on the number of pain spots and their intensities. Most recent pain spots are weighted more in the calculation. The value is between 0.0 and 1.0.
  • Trainings: a collection of the trainings that have been done by the user with their feedback. A training contains the following information:
    • Index: the index of the training
    • Type: the type of the training, it can be Scheduled or Unscheduled
    • Start: the start time of the training
    • End: the end time of the training
    • Status: the status of the training, it can take the following values:
      • Complete
      • Incomplete
      • Missed
      • Planned
    • EffortLevel: the value of the effort given by the user for this training, this is a value between 1.0 and 5.0.
    • Feedback: this array contains the pain spots given by the user for the given training inside a single array called Spots. The format of each spot corresponds to Pain spot .
    • Exercises: the details of the exercises, this array is empty in the export.
  • Spots: This array contains the average intensities of all pain spots from all trainings in the level in a single array. The format of each spot corresponds to Pain spot .
  • Weeks: contains an array with a summary of the completed training during the 4 weeks of the training level. Every item corresponds to a week and contains the elements:
    • CompletedTrainings: the number of completed trainings in that week
    • Trainings: the total number of trainings that week
  • Activity: contains a summary of the activity during that training level, currently unused in the export.

Health49Results

This array contains the results for the Health49 questionnaire. Currently, the questionnaire is optional and appears only once at the end of the complete training resulting in a single element in the array if the questionnaire is available. This element contains the following information:

  • Date: the date of last modification of the questionnaire
  • Level: the training level corresponding to the questionnaire. Since the questionnaire appears only at the end, this value will always be 3 (end of 3rd level).
  • Summary: The values for which the user is above the threshold, these correspond to how Health49 calculates the overall results. These values can be:
    • A_SOM
    • A_DEP
    • A_PHO
    • A_BSP
    • B_WOHL
    • C_INT
    • D_SELB
    • E_AP
    • F_SOZU
    • F_SOZB
  • Options: additional information about the state of the questionnaire. It can be Complete and Simplified.

Diary

The last object contains the diary entries filled every day by the user. It contains an array of DiaryEntry which contain the following information:

  • Date: the date of the entry.
  • Pain: the user indicated back pain while seating on the day of the entry, value can be between 0 and 10.
  • ExerciseTime: number of minutes that the user trained outside of iDIERS therapy in that day.
  • PhysioTime: number of minutes prescribed by a doctor that the user trained outside the iDIERS therapy.