lfeutre / hearty

An LFE Apple Health XML parser and Google Fit REST API client
Apache License 2.0
0 stars 0 forks source link

Parse Apple Health export data (XML) #2

Open oubiwann opened 11 months ago

oubiwann commented 11 months ago

This depends on:

Potentially useful references:

oubiwann commented 11 months ago

Test data: https://github.com/jshrake/healthkit-to-sqlite/tree/main/example

oubiwann commented 11 months ago

Will start pasting the schemas from the Rust project ...

CREATE TABLE `workout`
  (
     `creationdate`                         DATE,
     `device`                               TEXT,
     `duration`                             REAL,
     `durationunit`                         TEXT,
     `enddate`                              DATE,
     `geometry`                             JSON,
     `metadata_hkaveragemets`               TEXT,
     `metadata_hkelevationascended`         TEXT,
     `metadata_hkindoorworkout`             INTEGER,
     `metadata_hkmetadatakeysyncidentifier` TEXT,
     `metadata_hkmetadatakeysyncversion`    INTEGER,
     `metadata_hktimezone`                  TEXT,
     `metadata_hkweatherhumidity`           TEXT,
     `metadata_hkweathertemperature`        TEXT,
     `sourcename`                           TEXT,
     `sourceversion`                        TEXT,
     `startdate`                            DATE,
     `totaldistance`                        REAL,
     `totaldistanceunit`                    TEXT,
     `totalenergyburned`                    REAL,
     `totalenergyburnedunit`                TEXT,
     `workoutactivitytype`                  TEXT,
     `workoutevents`                        JSON
  ); 
CREATE TABLE `activitysummary`
  (
     `activeenergyburned`     INTEGER,
     `activeenergyburnedgoal` INTEGER,
     `activeenergyburnedunit` TEXT,
     `appleexercisetime`      INTEGER,
     `appleexercisetimegoal`  INTEGER,
     `applemovetime`          INTEGER,
     `applemovetimegoal`      INTEGER,
     `applestandhours`        INTEGER,
     `applestandhoursgoal`    INTEGER,
     `datecomponents`         DATE
  ); 
CREATE TABLE `hkcategorytypeidentifierapplestandhour`
  (
     `creationdate`  DATE,
     `device`        TEXT,
     `enddate`       DATE,
     `sourcename`    TEXT,
     `sourceversion` TEXT,
     `startdate`     DATE,
     `type`          TEXT,
     `value`         TEXT
  ); 
CREATE TABLE `hkcategorytypeidentifieraudioexposureevent`
  (
     `creationdate`                             DATE,
     `device`                                   TEXT,
     `enddate`                                  DATE,
     `metadata_hkmetadatakeyaudioexposurelevel` TEXT,
     `sourcename`                               TEXT,
     `startdate`                                DATE,
     `type`                                     TEXT,
     `value`                                    TEXT
  ); ww
CREATE TABLE `hkcategorytypeidentifiersleepanalysis`
  (
     `creationdate`        DATE,
     `device`              TEXT,
     `enddate`             DATE,
     `metadata_hktimezone` TEXT,
     `sourcename`          TEXT,
     `startdate`           DATE,
     `type`                TEXT,
     `value`               TEXT
  ); 
CREATE TABLE `HKQuantityTypeIdentifierActiveEnergyBurned`(
  `creationDate` DATE,
  `device` TEXT,
  `endDate` DATE,
  `metadata_HKMetadataKeySyncIdentifier` TEXT,
  `metadata_HKMetadataKeySyncVersion` INTEGER,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` INTEGER
);
CREATE TABLE `HKQuantityTypeIdentifierAppleExerciseTime`(
  `creationDate` DATE,
  `device` TEXT,
  `endDate` DATE,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` INTEGER
);
CREATE TABLE `HKQuantityTypeIdentifierAppleStandTime`(
  `creationDate` DATE,
  `endDate` DATE,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` INTEGER
);
CREATE TABLE `HKQuantityTypeIdentifierAppleWalkingSteadiness`(
  `creationDate` DATE,
  `device` TEXT,
  `endDate` DATE,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` REAL
);
CREATE TABLE `HKQuantityTypeIdentifierBasalEnergyBurned`(
  `creationDate` DATE,
  `device` TEXT,
  `endDate` DATE,
  `metadata_HKMetadataKeySyncIdentifier` TEXT,
  `metadata_HKMetadataKeySyncVersion` INTEGER,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` REAL
);
CREATE TABLE `HKQuantityTypeIdentifierBodyMass`(
  `creationDate` DATE,
  `endDate` DATE,
  `metadata_HKWasUserEntered` INTEGER,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` REAL
);
CREATE TABLE `HKQuantityTypeIdentifierDistanceCycling`(
  `creationDate` DATE,
  `device` TEXT,
  `endDate` DATE,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` REAL
);
CREATE TABLE `HKQuantityTypeIdentifierDistanceWalkingRunning`(
  `creationDate` DATE,
  `device` TEXT,
  `endDate` DATE,
  `metadata_HKMetadataKeySyncIdentifier` TEXT,
  `metadata_HKMetadataKeySyncVersion` INTEGER,
  `sourceName` TEXT,
  `sourceVersion` REAL,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` REAL
);
CREATE TABLE `HKQuantityTypeIdentifierEnvironmentalAudioExposure`(
  `creationDate` DATE,
  `device` TEXT,
  `endDate` DATE,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` REAL
);
CREATE TABLE `HKQuantityTypeIdentifierFlightsClimbed`(
  `creationDate` DATE,
  `device` TEXT,
  `endDate` DATE,
  `sourceName` TEXT,
  `sourceVersion` REAL,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` INTEGER
);
CREATE TABLE `HKQuantityTypeIdentifierHeadphoneAudioExposure`(
  `creationDate` DATE,
  `device` TEXT,
  `endDate` DATE,
  `sourceName` TEXT,
  `sourceVersion` REAL,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` REAL
);
CREATE TABLE `HKQuantityTypeIdentifierHeartRate`(
  `creationDate` DATE,
  `device` TEXT,
  `endDate` DATE,
  `metadata_HKMetadataKeyHeartRateMotionContext` INTEGER,
  `metadata_HKMetadataKeySyncIdentifier` TEXT,
  `metadata_HKMetadataKeySyncVersion` INTEGER,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` INTEGER
);
CREATE TABLE `HKQuantityTypeIdentifierHeartRateVariabilitySDNN`(
  `creationDate` DATE,
  `device` TEXT,
  `endDate` DATE,
  `metadata_HKAlgorithmVersion` INTEGER,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` REAL
);
CREATE TABLE `HKQuantityTypeIdentifierHeight`(
  `creationDate` DATE,
  `endDate` DATE,
  `metadata_HKWasUserEntered` INTEGER,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` REAL
);
CREATE TABLE `HKQuantityTypeIdentifierRestingHeartRate`(
  `creationDate` DATE,
  `endDate` DATE,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` INTEGER
);
CREATE TABLE `HKQuantityTypeIdentifierSixMinuteWalkTestDistance`(
  `creationDate` DATE,
  `endDate` DATE,
  `metadata_HKDateOfEarliestDataUsedForEstimate` DATE,
  `metadata_HKMetadataKeyAppleDeviceCalibrated` INTEGER,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` INTEGER
);
CREATE TABLE `HKQuantityTypeIdentifierStepCount`(
  `creationDate` DATE,
  `device` TEXT,
  `endDate` DATE,
  `metadata_HKWasUserEntered` INTEGER,
  `sourceName` TEXT,
  `sourceVersion` REAL,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` INTEGER
);
CREATE TABLE `HKQuantityTypeIdentifierWalkingAsymmetryPercentage`(
  `creationDate` DATE,
  `device` TEXT,
  `endDate` DATE,
  `metadata_HKMetadataKeyDevicePlacementSide` INTEGER,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` INTEGER
);
CREATE TABLE `HKQuantityTypeIdentifierWalkingAsymmetryPercentage`(
  `creationDate` DATE,
  `device` TEXT,
  `endDate` DATE,
  `metadata_HKMetadataKeyDevicePlacementSide` INTEGER,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` INTEGER
);
CREATE TABLE `HKQuantityTypeIdentifierWalkingDoubleSupportPercentage`(
  `creationDate` DATE,
  `device` TEXT,
  `endDate` DATE,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` REAL
);
CREATE TABLE `HKQuantityTypeIdentifierWalkingHeartRateAverage`(
  `creationDate` DATE,
  `endDate` DATE,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` INTEGER
);
CREATE TABLE `HKQuantityTypeIdentifierWalkingSpeed`(
  `creationDate` DATE,
  `device` TEXT,
  `endDate` DATE,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` REAL
);
CREATE TABLE `HKQuantityTypeIdentifierWalkingStepLength`(
  `creationDate` DATE,
  `device` TEXT,
  `endDate` DATE,
  `sourceName` TEXT,
  `sourceVersion` TEXT,
  `startDate` DATE,
  `type` TEXT,
  `unit` TEXT,
  `value` INTEGER
);