<?xml version="1.0" encoding="UTF-8"?><database name="IHSD" schema="IHS_2023" type="Oracle - Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production&#10;Version 19.22.0.0.0">
   <tables>
      <table name="ANALYTICSEVENTS_EMAILBOUNCE" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="true" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="1" name="EVENT_TIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="PARTICIPANTID" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="EMAILEVENTKEY" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="MAILDESTINATION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="5" name="MAILTIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="MAILSOURCE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="MAILMESSAGEID" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="NOTIFICATIONIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="FROMDOMAIN" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="LOCALECODE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="BOUNCETYPE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="BOUNCESUBTYPE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="ANALYTICSEVENTS_EMAILCLICK" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="true" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="1" name="EVENT_TIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="PARTICIPANTID" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="EMAILEVENTKEY" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="MAILDESTINATION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="5" name="MAILTIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="MAILSOURCE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="MAILMESSAGEID" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="NOTIFICATIONIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="FROMDOMAIN" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="LOCALECODE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="11" name="CLICKTIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="CLICKUSERAGENT" nullable="true" remarks="" size="500" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="CLICKIPADDRESS" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="14" name="CLICKLINK" nullable="true" remarks="" size="500" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="15" name="CLICKLINKTAGS" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="ANALYTICSEVENTS_EMAILCOMPLAINT" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="true" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="1" name="EVENT_TIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="PARTICIPANTID" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="EMAILEVENTKEY" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="MAILDESTINATION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="5" name="MAILTIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="MAILSOURCE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="MAILMESSAGEID" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="NOTIFICATIONIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="FROMDOMAIN" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="LOCALECODE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="COMPLAINTTYPE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="COMPLAINTUSERAGENT" nullable="true" remarks="" size="500" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="ANALYTICSEVENTS_EMAILDELIVERY" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="true" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="1" name="EVENT_TIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="PARTICIPANTID" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="EMAILEVENTKEY" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="MAILDESTINATION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="5" name="MAILTIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="MAILSOURCE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="MAILMESSAGEID" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="NOTIFICATIONIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="FROMDOMAIN" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="LOCALECODE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="DELIVERYRECIPIENT" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="12" name="DELIVERYTIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
      </table>
      <table name="ANALYTICSEVENTS_EMAILNOTIFICATIONSENT" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="1" name="EVENT_TIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="NOTIFICATIONIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="SUBJECT" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="SENT_TO" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="PARTICIPANTID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="ANALYTICSEVENTS_EMAILOPEN" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="true" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="1" name="EVENT_TIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="PARTICIPANTID" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="EMAILEVENTKEY" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="MAILDESTINATION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="5" name="MAILTIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="MAILSOURCE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="MAILMESSAGEID" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="NOTIFICATIONIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="FROMDOMAIN" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="LOCALECODE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="11" name="OPENTIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="OPENUSERAGENT" nullable="true" remarks="" size="500" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="OPENIPADDRESS" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="ANALYTICSEVENTS_EMAILSEND" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="true" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="1" name="EVENT_TIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="PARTICIPANTID" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="EMAILEVENTKEY" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="MAILDESTINATION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="5" name="MAILTIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="MAILSOURCE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="MAILMESSAGEID" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="NOTIFICATIONIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="FROMDOMAIN" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="LOCALECODE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="ANALYTICSEVENTS_NOTIFICATIONSENT" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="1" name="EVENT_TIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="CONTENTVERSION" nullable="true" remarks="" size="10" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="NOTIFICATIONIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="NOTIFICATIONTYPE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="RECIPIENTS" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="STATUSCODE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="TARGETCUSTOMFIELD" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="PARTICIPANTID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="ANALYTICSEVENTS_PUSHNOTIFICATIONOPENED" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="1" name="EVENT_TIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="DEVICEIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="NOTIFICATIONIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="PARTICIPANTID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="PUSHEVENTKEY" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="ANALYTICSEVENTS_PUSHNOTIFICATIONRECEIVED" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="1" name="EVENT_TIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="DEVICEIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="NOTIFICATIONIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="PARTICIPANTID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="PUSHEVENTKEY" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="ANALYTICSEVENTS_PUSHNOTIFICATIONSENT" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="1" name="EVENT_TIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="BODY" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="NOTIFICATIONIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="TITLE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="PARTICIPANTID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="PUSHEVENTKEY" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="DEVICEIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="ANALYTICSEVENTS_SURVEYSTEPVIEWED" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="1" name="EVENT_TIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="CLIENTLOCALTIMESTAMP" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="EVENTID" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="STEPIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="SURVEYID" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="SURVEYSESSIONID" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="SURVEYVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="TASKID" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="TASKRUNUUID" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="PARTICIPANTID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="APPLE_WATCH_DEVICES" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="APPLE_WATCH_MODEL" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="APPLE_WATCH_OS" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="START_DATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="END_DATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
      </table>
      <table name="AUXILIARYDATA" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="AUXILIARYDATAKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="AUXILIARYDATA_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="FILENAME" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="3" name="UPLOADDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="UPLOADEDBY" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="5" name="OBSERVATIONDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <primaryKey column="AUXILIARYDATAKEY" sequenceNumberInPK="1"/>
         <index name="AUXILIARYDATA_PK" unique="true">
            <column ascending="true" name="AUXILIARYDATAKEY"/>
         </index>
      </table>
      <table name="COMPETITION_PROGRAMS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER_ORIGINAL" nullable="true" remarks="" size="40" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="INSTITUTION" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="PROGRAM" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
      </table>
      <table name="COMPETITIONS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="COMPETITIONKEY" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="COMPETITION_ID" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="TEAM1_INSTITUTION" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="TEAM1_PROGRAM" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="TEAM2_INSTITUTION" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="TEAM2_PROGRAM" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="CALCULATION_DATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="7" name="CALCULATION_TIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="TEAM1_SCORE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="TEAM2_SCORE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
      </table>
      <table name="DAILY_WEARABLE_DATACOUNTS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="INSERT_DATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="CNT_FITBIT_DAILYSTEP" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="CNT_APPLEWATCH_DAILYSTEP" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="CNT_FITBIT_RESTINGHEARTRATE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="CNT_APPLEWATCH_RESTINGHEARTRATE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="CNT_FITBIT_INTRADAYSTEPS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="CNT_APPLEWATCH_INTRADAYSTEPS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="CNT_FITBIT_INTRADAYHEARTRATE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="CNT_APPLEWATCH_INTRADAYHEARTRATE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="CNT_FITBIT_DAILYACTIVITY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="CNT_FITBIT_INTRADAYSLEEP" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="CNT_FITBIT_DAILYSLEEP" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="CNT_HEALTHKIT_INTRADAYSLEEP" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="CNT_HEALTHKIT_DAILYSLEEP" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="14" name="CNT_HEALTHKIT_HEARTRATEVARIABILITY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="15" name="CNT_HEALTHKIT_ACTIVITY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
      </table>
      <table name="FITBIT_HEARTRATE" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="FITBIT_HEARTRATE_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="RECORD_DATE" nullable="false" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="METRIC_VALUE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <primaryKey column="PARTICIPANTIDENTIFIER" sequenceNumberInPK="1"/>
         <primaryKey column="RECORD_DATE" sequenceNumberInPK="2"/>
         <index name="FITBIT_HEARTRATE_PK" unique="true">
            <column ascending="true" name="PARTICIPANTIDENTIFIER"/>
            <column ascending="true" name="RECORD_DATE"/>
         </index>
      </table>
      <table name="FITBIT_HRV" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="RECORD_DATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="1" name="RMSSD" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="2" name="COVERAGE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="3" name="HF" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="4" name="LF" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="FITBIT_HRV_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
      </table>
      <table name="FITBIT_STEPS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="FITBIT_STEPS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="RECORD_DATE" nullable="false" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="METRIC_VALUE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <primaryKey column="PARTICIPANTIDENTIFIER" sequenceNumberInPK="1"/>
         <primaryKey column="RECORD_DATE" sequenceNumberInPK="2"/>
         <index name="FITBIT_STEPS_PK" unique="true">
            <column ascending="true" name="PARTICIPANTIDENTIFIER"/>
            <column ascending="true" name="RECORD_DATE"/>
         </index>
      </table>
      <table name="FITBITACTIVITYLOGS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="FITBITACTIVITYLOGS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="1" name="STARTDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="SYS_EXTRACT_UTC(&quot;STARTDATE&quot;)" digits="6" id="2" name="STARTDATE_UTC" nullable="true" remarks="" size="11" type="TIMESTAMP(6)" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="3" name="ENDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="ACTIVEDURATION" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="ACTIVITYNAME" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="ACTIVITYTYPEID" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="AVERAGEHEARTRATE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="CALORIES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="DURATION" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="10" name="LASTMODIFIED" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="LOGTYPE" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="MANUALVALUESPECIFIEDCALORIES" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="MANUALVALUESPECIFIEDDISTANCE" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="14" name="MANUALVALUESPECIFIEDSTEPS" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="15" name="ORIGINALDURATION" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="16" name="ORIGINALSTARTTIME" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="17" name="STEPS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="18" name="HEARTRATEZONEOUTOFRANGEMAX" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="19" name="HEARTRATEZONEOUTOFRANGEMIN" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="20" name="HEARTRATEZONEOUTOFRANGEMINUTES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="21" name="HEARTRATEZONEFATBURNMAX" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="22" name="HEARTRATEZONEFATBURNMIN" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="23" name="HEARTRATEZONEFATBURNMINUTES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="24" name="HEARTRATEZONECARDIOMAX" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="25" name="HEARTRATEZONECARDIOMIN" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="26" name="HEARTRATEZONECARDIOMINUTES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="27" name="HEARTRATEZONEPEAKMAX" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="28" name="HEARTRATEZONEPEAKMIN" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="29" name="HEARTRATEZONEPEAKMINUTES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="30" name="SEDENTARYMINUTES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="31" name="LIGHTLYMINUTES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="32" name="FAIRLYMINUTES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="33" name="VERYMINUTES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
      </table>
      <table name="FITBITDAILYDATA" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="FITBITDAILYDATA_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="RECORD_DATE" nullable="false" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="ACTIVITYCALORIES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="3" name="BODYBMI" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="4" name="BODYFAT" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="BODYFATLOG" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="BODYFATLOGSOURCE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="7" name="BODYWEIGHT" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="8" name="BODYWEIGHTLOGBODYWEIGHT" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="9" name="BODYWEIGHTLOGBMI" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="10" name="BODYWEIGHTLOGFAT" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="BODYWEIGHTLOGSOURCE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="CALORIES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="CALORIESBMR" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="14" name="DISTANCE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="15" name="ELEVATION" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="16" name="FLOORS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="17" name="FOODCALORIESIN" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="18" name="HEARTRATEINTRADAYCOUNT" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="19" name="HEARTRATEZONEOUTOFRANGECALORIESOUT" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="20" name="HEARTRATEZONEOUTOFRANGEMAX" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="21" name="HEARTRATEZONEOUTOFRANGEMIN" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="22" name="HEARTRATEZONEOUTOFRANGEMINUTES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="23" name="HEARTRATEZONEFATBURNCALORIESOUT" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="24" name="HEARTRATEZONEFATBURNMAX" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="25" name="HEARTRATEZONEFATBURNMIN" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="26" name="HEARTRATEZONEFATBURNMINUTES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="27" name="HEARTRATEZONECARDIOCALORIESOUT" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="28" name="HEARTRATEZONECARDIOMAX" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="29" name="HEARTRATEZONECARDIOMIN" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="30" name="HEARTRATEZONECARDIOMINUTES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="31" name="HEARTRATEZONEPEAKCALORIESOUT" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="32" name="HEARTRATEZONEPEAKMAX" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="33" name="HEARTRATEZONEPEAKMIN" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="34" name="HEARTRATEZONEPEAKMINUTES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="35" name="MINUTESFAIRLYACTIVE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="36" name="MINUTESLIGHTLYACTIVE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="37" name="MINUTESSEDENTARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="38" name="MINUTESVERYACTIVE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="39" name="RESTINGHEARTRATE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="40" name="STEPS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="41" name="TRACKERACTIVITYCALORIES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="42" name="TRACKERCALORIES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="43" name="TRACKERDISTANCE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="44" name="TRACKERELEVATION" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="45" name="TRACKERFLOORS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="46" name="TRACKERMINUTESFAIRLYACTIVE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="47" name="TRACKERMINUTESLIGHTLYACTIVE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="48" name="TRACKERMINUTESSEDENTARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="49" name="TRACKERMINUTESVERYACTIVE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="50" name="TRACKERSTEPS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="51" name="WATER" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="52" name="MODIFIEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="53" name="HEARTRATEINTRADAYMINUTECOUNT" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="54" name="BREATHINGRATE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="55" name="HRVDAILYRMSSD" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="56" name="HRVDEEPRMSSD" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="57" name="SPO2AVG" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="58" name="SPO2MIN" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="59" name="SPO2MAX" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <primaryKey column="PARTICIPANTIDENTIFIER" sequenceNumberInPK="1"/>
         <primaryKey column="RECORD_DATE" sequenceNumberInPK="2"/>
         <index name="FITBITDAILYDATA_PK" unique="true">
            <column ascending="true" name="PARTICIPANTIDENTIFIER"/>
            <column ascending="true" name="RECORD_DATE"/>
         </index>
      </table>
      <table name="FITBITDEVICES" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="FITBITDEVICES_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="1" name="RECORD_DATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="SYS_EXTRACT_UTC(&quot;RECORD_DATE&quot;)" digits="6" id="2" name="RECORD_DATE_UTC" nullable="false" remarks="" size="11" type="TIMESTAMP(6)" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="DEVICE" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="BATTERY" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="TYPE" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <primaryKey column="PARTICIPANTIDENTIFIER" sequenceNumberInPK="1"/>
         <primaryKey column="RECORD_DATE_UTC" sequenceNumberInPK="2"/>
         <index name="FITBITDEVICES_PK" unique="true">
            <column ascending="true" name="PARTICIPANTIDENTIFIER"/>
            <column ascending="true" name="RECORD_DATE_UTC"/>
         </index>
      </table>
      <table name="FITBITRESTINGHEARTRATES" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="FITBITRESTINGHEARTRATES_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="RECORD_DATE" nullable="false" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="RESTINGHEARTRATE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <primaryKey column="PARTICIPANTIDENTIFIER" sequenceNumberInPK="1"/>
         <primaryKey column="RECORD_DATE" sequenceNumberInPK="2"/>
         <index name="FITBITRESTINGHEARTRATES_PK" unique="true">
            <column ascending="true" name="PARTICIPANTIDENTIFIER"/>
            <column ascending="true" name="RECORD_DATE"/>
         </index>
      </table>
      <table name="FITBITSLEEPLOGDETAILS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="FITBITSLEEPLOGDETAILS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="1" name="SLEEPLOGDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="TYPE" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="3" name="STARTDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="SYS_EXTRACT_UTC(&quot;STARTDATE&quot;)" digits="6" id="4" name="STARTDATE_UTC" nullable="true" remarks="" size="11" type="TIMESTAMP(6)" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="5" name="ENDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="VALUE" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="FITBITSLEEPLOGS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="FITBITSLEEPLOGS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="1" name="STARTDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="SYS_EXTRACT_UTC(&quot;STARTDATE&quot;)" digits="6" id="2" name="STARTDATE_UTC" nullable="true" remarks="" size="11" type="TIMESTAMP(6)" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="3" name="ENDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="DURATION" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="EFFICIENCY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="INFOCODE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="MINUTESAFTERWAKEUP" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="MINUTESASLEEP" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="MINUTESAWAKE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="MINUTESTOFALLASLEEP" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="TIMEINBED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="TYPE" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="SLEEPLEVELAWAKE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="14" name="SLEEPLEVELASLEEP" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="15" name="SLEEPLEVELDEEP" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="16" name="SLEEPLEVELLIGHT" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="17" name="SLEEPLEVELREM" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="18" name="SLEEPLEVELRESTLESS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="19" name="SLEEPLEVELWAKE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
      </table>
      <table name="GARMINACTIVITYSUMMARY" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="true" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="SUMMARYID" nullable="true" remarks="" size="20" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="ACTIVITYID" nullable="true" remarks="" size="20" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="STARTTIMEINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="STARTTIMEOFFSETINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="DURATIONINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="ACTIVITYTYPE" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="ACTIVITYNAME" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="9" name="AVERAGEBIKECADENCEINROUNDSPERMINUTE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="10" name="AVERAGEHEARTRATEINBEATSPERMINUTE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="11" name="AVERAGERUNCADENCEINSTEPSPERMINUTE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="12" name="AVERAGESPEEDINMETERSPERSECOND" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="13" name="AVERAGESWIMCADENCEINSTROKESPERMINUTE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="14" name="AVERAGEPACEINMINUTESPERKILOMETER" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="15" name="ACTIVEKILOCALORIES" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="16" name="DEVICENAME" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="17" name="DISTANCEINMETERS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="18" name="MAXBIKECADENCEINROUNDSPERMINUTE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="19" name="MAXHEARTRATEINBEATSPERMINUTE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="20" name="MAXPACEINMINUTESPERKILOMETER" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="21" name="MAXRUNCADENCEINSTEPSPERMINUTE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="22" name="MAXSPEEDINMETERSPERSECOND" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="23" name="NUMBEROFACTIVELENGTHS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="24" name="STARTINGLATITUDEINDEGREE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="25" name="STARTINGLONGITUDEINDEGREE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="26" name="STEPS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="27" name="TOTALELEVATIONGAININMETERS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="28" name="TOTALELEVATIONLOSSINMETERS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="29" name="ISPARENT" nullable="true" remarks="" size="20" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="30" name="PARENTSUMMARYID" nullable="true" remarks="" size="20" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="31" name="MANUAL" nullable="true" remarks="" size="20" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="32" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
      </table>
      <table name="GARMINDAILYSUMMARY" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="true" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="SUMMARYID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="STARTTIMEINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="STARTTIMEOFFSETINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="DURATIONINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="CALENDARDATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="7" name="ACTIVEKILOCALORIES" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="8" name="BMRKILOCALORIES" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="9" name="STEPS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="10" name="DISTANCEINMETERS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="11" name="ACTIVETIMEINSECONDS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="12" name="MODERATEINTENSITYDURATIONINSECONDS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="13" name="VIGOROUSINTENSITYDURATIONINSECONDS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="14" name="FLOORSCLIMBED" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="15" name="MINHEARTRATEINBEATSPERMINUTE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="16" name="MAXHEARTRATEINBEATSPERMINUTE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="17" name="AVERAGEHEARTRATEINBEATSPERMINUTE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="18" name="RESTINGHEARTRATEINBEATSPERMINUTE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="19" name="STEPSGOAL" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="20" name="INTENSITYDURATIONGOALINSECONDS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="21" name="FLOORSCLIMBEDGOAL" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="22" name="AVERAGESTRESSLEVEL" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="23" name="MAXSTRESSLEVEL" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="24" name="STRESSDURATIONINSECONDS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="25" name="RESTSTRESSDURATIONINSECONDS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="26" name="ACTIVITYSTRESSDURATIONINSECONDS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="27" name="LOWSTRESSDURATIONINSECONDS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="28" name="MEDIUMSTRESSDURATIONINSECONDS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="29" name="HIGHSTRESSDURATIONINSECONDS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="30" name="STRESSQUALIFIER" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="31" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
      </table>
      <table name="GARMINDAILYSUMMARY_SAMPLES" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="SUMMARYID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="OFFSETINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="HEARTRATE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
      </table>
      <table name="GARMINEPOCHSUMMARY" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="true" remarks="" size="16" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="SUMMARYID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="STARTTIMEINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="STARTTIMEOFFSETINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="DURATIONINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="ACTIVITYTYPE" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="7" name="ACTIVETIMEINSECONDS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="8" name="STEPS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="9" name="DISTANCEINMETERS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="10" name="ACTIVEKILOCALORIES" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="11" name="MET" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="INTENSITY" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="13" name="MEANMOTIONINTENSITY" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="14" name="MAXMOTIONINTENSITY" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="15" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
      </table>
      <table name="GARMINHRVSUMMARY" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="true" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="SUMMARYID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="STARTTIMEINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="STARTTIMEOFFSETINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="DURATIONINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="CALENDARDATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="7" name="LASTNIGHTAVG" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="8" name="LASTNIGHT5MINHIGH" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="9" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
      </table>
      <table name="GARMINHRVSUMMARY_SAMPLES" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="SUMMARYID" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="OFFSETINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="HRV_VALUE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
      </table>
      <table name="GARMINMOVEIQACTIVITYSUMMARY" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="true" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="SUMMARYID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="STARTTIMEINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="OFFSETINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="DURATIONINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="CALENDARDATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="ACTIVITYTYPE" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="ACTIVITYSUBTYPE" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="9" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
      </table>
      <table name="GARMINSLEEPSUMMARY" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="true" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="SUMMARYID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="STARTTIMEINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="STARTTIMEOFFSETINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="DURATIONINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="CALENDARDATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="UNMEASURABLESLEEPINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="DEEPSLEEPDURATIONINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="LIGHTSLEEPDURATIONINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="REMSLEEPINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="AWAKEDURATIONINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="VALIDATION" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="13" name="OVERALLSLEEPSCOREVALUE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="14" name="OVERALLSLEEPSCOREQUALIFIERKEY" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="15" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
      </table>
      <table name="GARMINSLEEPSUMMARY_DURATION" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="SUMMARYID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="STARTTIMEINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="ENDTIMEINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="SLEEPLEVEL" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="GARMINSLEEPSUMMARY_SCORE" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="SUMMARYID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="SCORETYPE" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="QUALIFIERKEY" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="GARMINSTRESSDETAILSUMMARY" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="true" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="SUMMARYID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="STARTTIMEINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="STARTTIMEOFFSETINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="DURATIONINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="CALENDARDATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="7" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
      </table>
      <table name="GARMINSTRESSDETAILSUMMARY_SAMPLES" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="SUMMARYID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="OFFSETINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="VALUE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="SAMPLETYPE" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="GARMINTHIRDPARTYDAILYSUMMARY" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="true" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="SUMMARYID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="STARTTIMEINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="STARTTIMEOFFSETINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="DURATIONINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="CALENDARDATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="7" name="ACTIVEKILOCALORIES" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="8" name="BMRKILOCALORIES" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="9" name="STEPS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="10" name="DISTANCEINMETERS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="11" name="ACTIVETIMEINSECONDS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="12" name="MODERATEINTENSITYDURATIONINSECONDS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="13" name="VIGOROUSINTENSITYDURATIONINSECONDS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="14" name="FLOORSCLIMBED" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="15" name="STEPSGOAL" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="16" name="MINHEARTRATEINBEATSPERMINUTE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="17" name="MAXHEARTRATEINBEATSPERMINUTE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="18" name="AVERAGEHEARTRATEINBEATSPERMINUTE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="19" name="SOURCE" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="20" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
      </table>
      <table name="GARMINTHIRDPARTYDAILYSUMMARY_SAMPLES" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="SUMMARYID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="OFFSETINSECONDS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="HEARTRATE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
      </table>
      <table name="GARMINUSERMETRICSSUMMARY" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="true" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="SUMMARYID" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="CALENDARDATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="4" name="VO2MAX" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="ENHANCED" nullable="true" remarks="" size="20" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="6" name="FITNESSAGE" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="7" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
      </table>
      <table name="HEALTHKIT_DAILYDATA" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="RECORD_DATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="TYPE" nullable="true" remarks="" size="10" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="HEALTHKITACTIVITYSUMMARIES" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="HEALTHKITACTIVITYSUMMARYKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITACTIVITYSUMMARIES_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="2" name="STARTDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="3" name="ENDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="4" name="ACTIVEENERGYBURNED" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="ACTIVEENERGYBURNEDGOAL" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="APPLEEXERCISETIME" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="APPLEEXERCISETIMEGOAL" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="APPLESTANDHOURS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="APPLESTANDHOURSGOAL" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="10" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <primaryKey column="HEALTHKITACTIVITYSUMMARYKEY" sequenceNumberInPK="1"/>
         <index name="HEALTHKITACTIVITYSUMMARIES_PK" unique="true">
            <column ascending="true" name="HEALTHKITACTIVITYSUMMARYKEY"/>
         </index>
      </table>
      <table name="HEALTHKITSAMPLES_APPLEEXERCISETIME" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="HEALTHKITSAMPLEKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITSAMPLES_APPLEEXERCISETIME_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="2" name="STARTDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="3" name="RECORD_DATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="VALUE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="UNITS" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="SOURCEIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="SOURCENAME" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="SOURCEVERSION" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="SOURCEOPERATINGSYSTEMVERSION" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="SOURCEPRODUCTTYPE" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="DEVICENAME" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="DEVICEMODEL" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="DEVICEMANUFACTURER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="14" name="DEVICEHARDWAREVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="15" name="DEVICESOFTWAREVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="16" name="DEVICEFIRMWAREVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="17" name="DEVICELOCALIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="18" name="DEVICEFDAIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="19" name="METADATA" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="20" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <primaryKey column="HEALTHKITSAMPLEKEY" sequenceNumberInPK="1"/>
         <index name="HEALTHKITSAMPLES_APPLEEXERCISETIME_PK" unique="true">
            <column ascending="true" name="HEALTHKITSAMPLEKEY"/>
         </index>
      </table>
      <table name="HEALTHKITSAMPLES_DATA_TYPE" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="DATA_TYPE" nullable="true" remarks="" size="1" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="DATA_TYPE_DESC" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="HEALTHKITSAMPLES_DELETED" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="HEALTHKITSAMPLEKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITSAMPLES_DELETED_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="2" name="DELETEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="DATA_TYPE" nullable="true" remarks="" size="1" type="NUMBER" typeCode="2"/>
      </table>
      <table name="HEALTHKITSAMPLES_HEARTRATE" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="HEALTHKITSAMPLEKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITSAMPLES_HEARTRATE_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="2" name="STARTDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="3" name="RECORD_DATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="VALUE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="UNITS" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="SOURCEIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="SOURCENAME" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="SOURCEVERSION" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="SOURCEOPERATINGSYSTEMVERSION" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="SOURCEPRODUCTTYPE" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="DEVICENAME" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="DEVICEMODEL" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="DEVICEMANUFACTURER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="14" name="DEVICEHARDWAREVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="15" name="DEVICESOFTWAREVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="16" name="DEVICEFIRMWAREVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="17" name="DEVICELOCALIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="18" name="DEVICEFDAIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="19" name="METADATA" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="20" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <primaryKey column="HEALTHKITSAMPLEKEY" sequenceNumberInPK="1"/>
         <index name="HEALTHKITSAMPLES_HEARTRATE_PK" unique="true">
            <column ascending="true" name="HEALTHKITSAMPLEKEY"/>
         </index>
      </table>
      <table name="HEALTHKITSAMPLES_HEARTRATEVARIABILITY" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="HEALTHKITSAMPLEKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITSAMPLES_HEARTRATEVARIABILITY_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="2" name="STARTDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="3" name="RECORD_DATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="VALUE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="UNITS" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="SOURCEIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="SOURCENAME" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="SOURCEVERSION" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="SOURCEOPERATINGSYSTEMVERSION" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="SOURCEPRODUCTTYPE" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="DEVICENAME" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="DEVICEMODEL" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="DEVICEMANUFACTURER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="14" name="DEVICEHARDWAREVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="15" name="DEVICESOFTWAREVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="16" name="DEVICEFIRMWAREVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="17" name="DEVICELOCALIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="18" name="DEVICEFDAIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="19" name="METADATA" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="20" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <primaryKey column="HEALTHKITSAMPLEKEY" sequenceNumberInPK="1"/>
         <index name="HEALTHKITSAMPLES_HEARTRATEVARIABILITY_PK" unique="true">
            <column ascending="true" name="HEALTHKITSAMPLEKEY"/>
         </index>
      </table>
      <table name="HEALTHKITSAMPLES_RESTINGHEARTRATE" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="HEALTHKITSAMPLEKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITSAMPLES_RESTINGHEARTRATE_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="2" name="STARTDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="3" name="RECORD_DATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="VALUE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="UNITS" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="SOURCEIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="SOURCENAME" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="SOURCEVERSION" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="SOURCEOPERATINGSYSTEMVERSION" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="SOURCEPRODUCTTYPE" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="DEVICENAME" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="DEVICEMODEL" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="DEVICEMANUFACTURER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="14" name="DEVICEHARDWAREVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="15" name="DEVICESOFTWAREVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="16" name="DEVICEFIRMWAREVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="17" name="DEVICELOCALIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="18" name="DEVICEFDAIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="19" name="METADATA" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="20" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <primaryKey column="HEALTHKITSAMPLEKEY" sequenceNumberInPK="1"/>
         <index name="HEALTHKITSAMPLES_RESTINGHEARTRATE_PK" unique="true">
            <column ascending="true" name="HEALTHKITSAMPLEKEY"/>
         </index>
      </table>
      <table name="HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="HEALTHKITSAMPLEKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="2" name="STARTDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="3" name="RECORD_DATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="VALUE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="UNITS" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="SOURCEIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="SOURCENAME" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="SOURCEVERSION" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="SOURCEOPERATINGSYSTEMVERSION" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="SOURCEPRODUCTTYPE" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="DEVICENAME" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="DEVICEMODEL" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="DEVICEMANUFACTURER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="14" name="DEVICEHARDWAREVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="15" name="DEVICESOFTWAREVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="16" name="DEVICEFIRMWAREVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="17" name="DEVICELOCALIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="18" name="DEVICEFDAIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="19" name="METADATA" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="20" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <primaryKey column="HEALTHKITSAMPLEKEY" sequenceNumberInPK="1"/>
         <index name="HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_PK" unique="true">
            <column ascending="true" name="HEALTHKITSAMPLEKEY"/>
         </index>
      </table>
      <table name="HEALTHKITSAMPLES_STEPS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="HEALTHKITSAMPLEKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITSAMPLES_STEPS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="2" name="STARTDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="3" name="RECORD_DATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="VALUE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="UNITS" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="SOURCEIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="SOURCENAME" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="SOURCEVERSION" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="SOURCEOPERATINGSYSTEMVERSION" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="SOURCEPRODUCTTYPE" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="DEVICENAME" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="DEVICEMODEL" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="DEVICEMANUFACTURER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="14" name="DEVICEHARDWAREVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="15" name="DEVICESOFTWAREVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="16" name="DEVICEFIRMWAREVERSION" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="17" name="DEVICELOCALIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="18" name="DEVICEFDAIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="19" name="METADATA" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="20" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <primaryKey column="HEALTHKITSAMPLEKEY" sequenceNumberInPK="1"/>
         <index name="HEALTHKITSAMPLES_STEPS_PK" unique="true">
            <column ascending="true" name="HEALTHKITSAMPLEKEY"/>
         </index>
      </table>
      <table name="HEALTHKITSTATISTICS_DAILYSTEPS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="HEALTHKITSTATISTICKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITSTATISTICS_DAILYSTEPS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="2" name="STARTDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="3" name="RECORD_DATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="VALUE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="UNITS" nullable="true" remarks="" size="20" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="6" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <primaryKey column="HEALTHKITSTATISTICKEY" sequenceNumberInPK="1"/>
         <index name="HEALTHKITSTATISTICS_DAILYSTEPS_PK" unique="true">
            <column ascending="true" name="HEALTHKITSTATISTICKEY"/>
         </index>
      </table>
      <table name="HEALTHKITSTATISTICS_HOURLYSTEPS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="HEALTHKITSTATISTICKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITSTATISTICS_HOURLYSTEPS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="2" name="STARTDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="3" name="RECORD_DATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="VALUE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="UNITS" nullable="true" remarks="" size="20" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="6" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <primaryKey column="HEALTHKITSTATISTICKEY" sequenceNumberInPK="1"/>
         <index name="HEALTHKITSTATISTICS_HOURLYSTEPS_PK" unique="true">
            <column ascending="true" name="HEALTHKITSTATISTICKEY"/>
         </index>
      </table>
      <table name="IHS_DATA_REFRESH_LOG" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="REFRESH_DATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="CNT_AUXILIARYDATA" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="CNT_COMPETITIONS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="CNT_FITBITACTIVITYLOGS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="CNT_FITBITDAILYDATA" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="CNT_FITBITDEVICES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="CNT_FITBITRESTINGHEARTRATES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="CNT_FITBITSLEEPLOGDETAILS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="CNT_FITBITSLEEPLOGS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="CNT_HEALTHKITACTIVITYSUMMARIES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="CNT_HEALTHKITSAMPLES_APPLEEXERCISETIME" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="CNT_HEALTHKITSAMPLES_APPLEEXERCISETIME_DELETED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="CNT_HEALTHKITSAMPLES_HEARTRATE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="CNT_HEALTHKITSAMPLES_HEARTRATEVARIABILITY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="14" name="CNT_HEALTHKITSAMPLES_HEARTRATEVARIABILITY_DELETED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="15" name="CNT_HEALTHKITSAMPLES_HEARTRATE_DELETED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="16" name="CNT_HEALTHKITSAMPLES_RESTINGHEARTRATE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="17" name="CNT_HEALTHKITSAMPLES_RESTINGHEARTRATE_DELETED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="18" name="CNT_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="19" name="CNT_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_DELETED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="20" name="CNT_HEALTHKITSAMPLES_STEPS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="21" name="CNT_HEALTHKITSAMPLES_STEPS_DELETED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="22" name="CNT_HEALTHKITSTATISTICS_DAILYSTEPS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="23" name="CNT_MANIFEST" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="24" name="CNT_NOTIFICATIONS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="25" name="CNT_STUDYPARTICIPANTS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="26" name="CNT_SURVEYCONSENTSIGNATURERESULTS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="27" name="CNT_SURVEYDEFINITIONS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="28" name="CNT_SURVEYQUESTIONRESULTS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="29" name="CNT_SURVEYRESULTS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="30" name="CNT_SURVEYSTEPRESULTS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="31" name="CNT_SURVEYTASKS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="32" name="CNT_FITBIT_INTRADAY_HEARTRATE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="33" name="CNT_FITBIT_INTRADAY_STEPS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="34" name="CNT_FITBIT_HEARTRATE_FILES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="35" name="CNT_FITBIT_STEPS_FILES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="36" name="CNT_FITBIT_HEARTRATE_FILES_DATA" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="37" name="CNT_FITBIT_STEPS_FILES_DATA" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="38" name="CNT_FITBIT_HEARTRATE_FILES_ADD" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="39" name="CNT_FITBIT_STEPS_FILES_ADD" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="40" name="CNT_ANALYTICSEVENTS_EMAILNOTIFICATIONSENT" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="41" name="CNT_ANALYTICSEVENTS_NOTIFICATIONSENT" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="42" name="CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONOPENED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="43" name="CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONRECEIVED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="44" name="CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONSENT" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="45" name="CNT_ANALYTICSEVENTS_SURVEYSTEPVIEWED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="46" name="CNT_ANALYTICSEVENTS_EMAILSEND" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="47" name="CNT_ANALYTICSEVENTS_EMAILDELIVERY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="48" name="CNT_ANALYTICSEVENTS_EMAILOPEN" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="49" name="CNT_ANALYTICSEVENTS_EMAILCLICK" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="50" name="CNT_ANALYTICSEVENTS_EMAILBOUNCE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="51" name="CNT_ANALYTICSEVENTS_EMAILCOMPLAINT" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="52" name="CNT_HEALTHKITSTATISTICS_HOURLYSTEPS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="53" name="CNT_FITBIT_INTRADAY_HRV" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="54" name="CNT_SURVEYDICTIONARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="55" name="CNT_GARMINACTIVITYSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="56" name="CNT_GARMINDAILYSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="57" name="CNT_GARMINDAILYSUMMARY_SAMPLES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="58" name="CNT_GARMINEPOCHSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="59" name="CNT_GARMINHRVSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="60" name="CNT_GARMINHRVSUMMARY_SAMPLES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="61" name="CNT_GARMINMOVEIQACTIVITYSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="62" name="CNT_GARMINSLEEPSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="63" name="CNT_GARMINSLEEPSUMMARY_DURATION" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="64" name="CNT_GARMINSLEEPSUMMARY_SCORE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="65" name="CNT_GARMINSTRESSDETAILSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="66" name="CNT_GARMINSTRESSDETAILSUMMARY_SAMPLES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="67" name="CNT_GARMINTHIRDPARTYDAILYSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="68" name="CNT_GARMINTHIRDPARTYDAILYSUMMARY_SAMPLES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="69" name="CNT_GARMINUSERMETRICSSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="70" name="CNT_SK_VISITS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="71" name="CNT_SK_USAGE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="72" name="CNT_SK_LIGHT" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="73" name="CNT_SK_KEYBOARD" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="74" name="CNT_PROJECTDEVICEDATA" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
      </table>
      <table name="IHS_VIEW_DATA_DICTIONARY" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="VIEW_NAME" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="COLUMN_NAME" nullable="true" remarks="" size="30" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="COLUMN_VAL" nullable="true" remarks="" size="1" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="VALUE_MEANING" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="LOAD_LOG" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="LOAD_DATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="CNT_AUXILIARYDATA" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="CNT_COMPETITIONS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="CNT_FITBITACTIVITYLOGS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="CNT_FITBITDAILYDATA" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="CNT_FITBITDEVICES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="CNT_FITBITRESTINGHEARTRATES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="CNT_FITBITSLEEPLOGDETAILS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="CNT_FITBITSLEEPLOGS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="CNT_HEALTHKITACTIVITYSUMMARIES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="CNT_HEALTHKITSAMPLES_APPLEEXERCISETIME" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="CNT_HEALTHKITSAMPLES_APPLEEXERCISETIME_DELETED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="CNT_HEALTHKITSAMPLES_HEARTRATE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="CNT_HEALTHKITSAMPLES_HEARTRATEVARIABILITY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="14" name="CNT_HEALTHKITSAMPLES_HEARTRATEVARIABILITY_DELETED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="15" name="CNT_HEALTHKITSAMPLES_HEARTRATE_DELETED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="16" name="CNT_HEALTHKITSAMPLES_RESTINGHEARTRATE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="17" name="CNT_HEALTHKITSAMPLES_RESTINGHEARTRATE_DELETED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="18" name="CNT_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="19" name="CNT_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_DELETED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="20" name="CNT_HEALTHKITSAMPLES_STEPS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="21" name="CNT_HEALTHKITSAMPLES_STEPS_DELETED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="22" name="CNT_HEALTHKITSTATISTICS_DAILYSTEPS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="23" name="CNT_MANIFEST" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="24" name="CNT_NOTIFICATIONS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="25" name="CNT_STUDYPARTICIPANTS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="26" name="CNT_SURVEYCONSENTSIGNATURERESULTS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="27" name="CNT_SURVEYDEFINITIONS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="28" name="CNT_SURVEYQUESTIONRESULTS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="29" name="CNT_SURVEYRESULTS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="30" name="CNT_SURVEYSTEPRESULTS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="31" name="CNT_SURVEYTASKS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="32" name="CNT_ANALYTICSEVENTS_EMAILNOTIFICATIONSENT" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="33" name="CNT_ANALYTICSEVENTS_NOTIFICATIONSENT" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="34" name="CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONOPENED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="35" name="CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONRECEIVED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="36" name="CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONSENT" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="37" name="CNT_ANALYTICSEVENTS_SURVEYSTEPVIEWED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="38" name="CNT_ANALYTICSEVENTS_EMAILSEND" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="39" name="CNT_ANALYTICSEVENTS_EMAILDELIVERY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="40" name="CNT_ANALYTICSEVENTS_EMAILOPEN" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="41" name="CNT_ANALYTICSEVENTS_EMAILCLICK" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="42" name="CNT_ANALYTICSEVENTS_EMAILBOUNCE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="43" name="CNT_ANALYTICSEVENTS_EMAILCOMPLAINT" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="44" name="CNT_HEALTHKITSTATISTICS_HOURLYSTEPS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="45" name="CNT_SURVEYDICTIONARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="46" name="CNT_GARMINACTIVITYSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="47" name="CNT_GARMINDAILYSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="48" name="CNT_GARMINDAILYSUMMARY_SAMPLES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="49" name="CNT_GARMINEPOCHSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="50" name="CNT_GARMINHRVSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="51" name="CNT_GARMINHRVSUMMARY_SAMPLES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="52" name="CNT_GARMINMOVEIQACTIVITYSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="53" name="CNT_GARMINSLEEPSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="54" name="CNT_GARMINSLEEPSUMMARY_DURATION" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="55" name="CNT_GARMINSLEEPSUMMARY_SCORE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="56" name="CNT_GARMINSTRESSDETAILSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="57" name="CNT_GARMINSTRESSDETAILSUMMARY_SAMPLES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="58" name="CNT_GARMINTHIRDPARTYDAILYSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="59" name="CNT_GARMINTHIRDPARTYDAILYSUMMARY_SAMPLES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="60" name="CNT_GARMINUSERMETRICSSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="61" name="CNT_SK_VISITS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="62" name="CNT_SK_LIGHT" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="63" name="CNT_SK_USAGE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="64" name="CNT_SK_KEYBOARD" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="65" name="CNT_PROJECTDEVICEDATA" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
      </table>
      <table name="MANIFEST" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="6" id="0" name="EXPORTSTARTDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="1" name="EXPORTENDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="EXPORTCONFIGURATION" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="EXCLUDEDPARTICIPANTIDENTIFIERS" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="AUXILIARYDATA" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="COMPETITIONS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="FITBITACTIVITYLOGS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="FITBITDAILYDATA" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="FITBITDEVICES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="FITBITRESTINGHEARTRATES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="FITBITSLEEPLOGDETAILS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="FITBITSLEEPLOGS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="HEALTHKITACTIVITYSUMMARIES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="HEALTHKITSAMPLES_APPLEEXERCISETIME" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="14" name="HEALTHKITSAMPLES_APPLEEXERCISETIME_DELETED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="15" name="HEALTHKITSAMPLES_HEARTRATE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="16" name="HEALTHKITSAMPLES_HEARTRATEVARIABILITY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="17" name="HEALTHKITSAMPLES_HEARTRATEVARIABILITY_DELETED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="18" name="HEALTHKITSAMPLES_HEARTRATE_DELETED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="19" name="HEALTHKITSAMPLES_RESTINGHEARTRATE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="20" name="HEALTHKITSAMPLES_RESTINGHEARTRATE_DELETED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="21" name="HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="22" name="HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_DELETED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="23" name="HEALTHKITSAMPLES_STEPS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="24" name="HEALTHKITSAMPLES_STEPS_DELETED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="25" name="HEALTHKITSTATISTICS_DAILYSTEPS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="26" name="NOTIFICATIONS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="27" name="STUDYPARTICIPANTS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="28" name="SURVEYCONSENTSIGNATURERESULTS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="29" name="SURVEYDEFINITIONS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="30" name="SURVEYQUESTIONRESULTS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="31" name="SURVEYRESULTS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="32" name="SURVEYSTEPRESULTS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="33" name="SURVEYTASKS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="34" name="FITBIT_INTRADAY_ACTIVITIES_HEART_FILE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="35" name="FITBIT_INTRADAY_ACTIVITIES_ELEVATION_FILE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="36" name="FITBIT_INTRADAY_ACTIVITIES_DISTANCE_FILE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="37" name="FITBIT_INTRADAY_ACTIVITIES_FLOORS_FILE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="38" name="FITBIT_INTRADAY_ACTIVITIES_STEPS_FILE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="39" name="FITBIT_INTRADAY_ACTIVITIES_CALORIES_FILE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="40" name="ANALYTICSEVENTS_EMAILNOTIFICATIONSENT" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="41" name="ANALYTICSEVENTS_NOTIFICATIONSENT" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="42" name="ANALYTICSEVENTS_PUSHNOTIFICATIONOPENED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="43" name="ANALYTICSEVENTS_PUSHNOTIFICATIONRECEIVED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="44" name="ANALYTICSEVENTS_PUSHNOTIFICATIONSENT" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="45" name="ANALYTICSEVENTS_SURVEYSTEPVIEWED" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="46" name="ANALYTICSEVENTS_EMAILSEND" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="47" name="ANALYTICSEVENTS_EMAILDELIVERY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="48" name="ANALYTICSEVENTS_EMAILOPEN" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="49" name="ANALYTICSEVENTS_EMAILCLICK" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="50" name="ANALYTICSEVENTS_EMAILBOUNCE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="51" name="ANALYTICSEVENTS_EMAILCOMPLAINT" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="52" name="HEALTHKITSTATISTICS_HOURLYSTEPS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="53" name="FITBIT_INTRADAY_HRV_FILE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="54" name="SURVEYDICTIONARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="55" name="GARMINACTIVITYSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="56" name="GARMINDAILYSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="57" name="GARMINDAILYSUMMARY_SAMPLES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="58" name="GARMINEPOCHSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="59" name="GARMINHRVSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="60" name="GARMINHRVSUMMARY_SAMPLES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="61" name="GARMINMOVEIQACTIVITYSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="62" name="GARMINSLEEPSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="63" name="GARMINSLEEPSUMMARY_DURATION" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="64" name="GARMINSLEEPSUMMARY_SCORE" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="65" name="GARMINSTRESSDETAILSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="66" name="GARMINSTRESSDETAILSUMMARY_SAMPLES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="67" name="GARMINTHIRDPARTYDAILYSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="68" name="GARMINTHIRDPARTYDAILYSUMMARY_SAMPLES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="69" name="GARMINUSERMETRICSSUMMARY" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="70" name="SK_LIGHT_IP" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="71" name="SK_VISITS_IP" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="72" name="SK_KEYBOARD_IP" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="73" name="SK_USAGE_MESSAGES_IP" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="74" name="SK_USAGE_PHONE_IP" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="75" name="SK_LIGHT_AW" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="76" name="SK_USAGE_MESSAGES_AW" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="77" name="SK_USAGE_PHONE_AW" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="78" name="PROJECTDEVICEDATA" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
      </table>
      <table name="NOTIFICATIONS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="ID" nullable="false" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="NOTIFICATIONS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="6" id="2" name="NOTIFY_DATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="CONTENTVERSION" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="IDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="NOTIFICATIONBODY" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="NOTIFICATIONTITLE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="NOTIFICATIONTYPE" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="SCOPE" nullable="true" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="STATUSCODE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <primaryKey column="ID" sequenceNumberInPK="1"/>
         <index name="NOTIFICATIONS_PK" unique="true">
            <column ascending="true" name="ID"/>
         </index>
      </table>
      <table name="SK_DEVICE_USAGE" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="CONTENT_JSON" nullable="true" remarks="" size="4000" type="CLOB" typeCode="2005"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="DEVICE_TYPE" nullable="true" remarks="" size="30" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="PARTICIPANT_ID" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="SK_DEVICE_USAGE_PARTICIPANT_ID_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="DEVICE_ID" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="LOAD_DATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <checkConstraint constraint="content_json IS JSON" name="SK_DEVICE_USAGE_CONTENT_JSON"/>
      </table>
      <table name="SK_KEYBOARD" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="CONTENT_JSON" nullable="true" remarks="" size="4000" type="CLOB" typeCode="2005"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="DEVICE_TYPE" nullable="true" remarks="" size="30" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="PARTICIPANT_ID" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="SK_KEYBOARD_PARTICIPANT_ID_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="DEVICE_ID" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="LOAD_DATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <checkConstraint constraint="content_json IS JSON" name="SK_KEYBOARD_CONTENT_JSON"/>
      </table>
      <table name="SK_LIGHT" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="-127" id="0" name="LUX" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="1" name="CHROMATICITY_X" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="2" name="CHROMATICITY_Y" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="PLACEMENT" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="4" name="EVENT_TIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="DEVICE_TYPE" nullable="true" remarks="" size="30" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="PARTICIPANT_ID" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="SK_LIGHT_PARTICIPANT_ID_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="DEVICE_ID" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="SK_LIGHT_INT" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="-127" id="0" name="LUX" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="1" name="CHROMATICITY_X" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="2" name="CHROMATICITY_Y" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="PLACEMENT" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="4" name="EVENT_TIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="DEVICE_TYPE" nullable="true" remarks="" size="30" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="PARTICIPANT_ID" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="DEVICE_ID" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="SK_LIGHT_PARTICIPANTS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="ID_SEQ" nullable="true" remarks="" size="5" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANT_ID" nullable="true" remarks="" size="15" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="SK_LIGHT_TEST" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="-127" id="0" name="LUX" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="1" name="CHROMATICITY_X" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="2" name="CHROMATICITY_Y" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="PLACEMENT" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="4" name="EVENT_TIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="DEVICE_TYPE" nullable="true" remarks="" size="30" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="PARTICIPANT_ID" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="DEVICE_ID" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="SK_LOOKUP" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="DATA_TYPE" nullable="true" remarks="" size="30" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="CATEGORY_TXT" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="CATEGORY_VAL" nullable="true" remarks="" size="2" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="CATEGORY_COMMENT" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="SK_SPEECH" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="CONTENT_JSON" nullable="true" remarks="" size="4000" type="CLOB" typeCode="2005"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="DEVICE_TYPE" nullable="true" remarks="" size="30" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="PARTICIPANT_ID" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="SK_SPEECH_PARTICIPANT_ID_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="DEVICE_ID" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="LOAD_DATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <checkConstraint constraint="content_json IS JSON" name="SK_SPEECH_CONTENT_JSON"/>
      </table>
      <table name="SK_USAGE" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="6" id="0" name="EVENT_TIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="TOTALINCOMINGCALLS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="TOTALOUTGOINGCALLS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="3" name="TOTALPHONECALLDURATION" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="TOTALUNIQUECONTACTS" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="DURATION" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="TOTALINCOMINGMESSAGES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="TOTALOUTGOINGMESSAGES" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="DEVICE_TYPE" nullable="true" remarks="" size="30" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="PARTICIPANT_ID" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="SK_USAGE_PARTICIPANT_ID_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="DEVICE_ID" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="SK_VISITS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="6" id="0" name="EVENT_TIMESTAMP" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="1" name="DEPART_START" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="2" name="DEPART_DURATION" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="LOCATIONCATEGORY" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="4" name="ARRIVAL_START" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="5" name="ARRIVAL_DURATION" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="IDENTIFIER" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="7" name="DISTANCEFROMHOME" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="DEVICE_TYPE" nullable="true" remarks="" size="30" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="PARTICIPANT_ID" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="SK_VISITS_PARTICIPANT_ID_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="DEVICE_ID" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
      </table>
	  <!-- STG_ staging tables excluded from export; contact research team with questions. -->
      <table name="STUDYPARTICIPANTS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="ANALYTICSEVENTS_EMAILBOUNCE"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="ANALYTICSEVENTS_EMAILCLICK"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="ANALYTICSEVENTS_EMAILCOMPLAINT"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="ANALYTICSEVENTS_EMAILDELIVERY"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="ANALYTICSEVENTS_EMAILNOTIFICATIONSENT"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="ANALYTICSEVENTS_EMAILOPEN"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="ANALYTICSEVENTS_EMAILSEND"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="ANALYTICSEVENTS_NOTIFICATIONSENT"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="ANALYTICSEVENTS_PUSHNOTIFICATIONOPENED"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="ANALYTICSEVENTS_PUSHNOTIFICATIONRECEIVED"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="ANALYTICSEVENTS_PUSHNOTIFICATIONSENT"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="ANALYTICSEVENTS_SURVEYSTEPVIEWED"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="APPLE_WATCH_DEVICES"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="AUXILIARYDATA_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="AUXILIARYDATA"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="COMPETITION_PROGRAMS"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="FITBIT_HEARTRATE_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="FITBIT_HEARTRATE"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="FITBIT_HRV_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="FITBIT_HRV"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="FITBIT_STEPS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="FITBIT_STEPS"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="FITBITACTIVITYLOGS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="FITBITACTIVITYLOGS"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="FITBITDAILYDATA_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="FITBITDAILYDATA"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="FITBITDEVICES_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="FITBITDEVICES"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="FITBITRESTINGHEARTRATES_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="FITBITRESTINGHEARTRATES"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="FITBITSLEEPLOGDETAILS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="FITBITSLEEPLOGDETAILS"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="FITBITSLEEPLOGS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="FITBITSLEEPLOGS"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="GARMINACTIVITYSUMMARY"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="GARMINDAILYSUMMARY"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="GARMINHRVSUMMARY"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="GARMINMOVEIQACTIVITYSUMMARY"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="GARMINSLEEPSUMMARY"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="GARMINSTRESSDETAILSUMMARY"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="GARMINTHIRDPARTYDAILYSUMMARY"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="GARMINUSERMETRICSSUMMARY"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="HEALTHKIT_DAILYDATA"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITACTIVITYSUMMARIES_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="HEALTHKITACTIVITYSUMMARIES"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITSAMPLES_APPLEEXERCISETIME_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="HEALTHKITSAMPLES_APPLEEXERCISETIME"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITSAMPLES_DELETED_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="HEALTHKITSAMPLES_DELETED"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITSAMPLES_HEARTRATE_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="HEALTHKITSAMPLES_HEARTRATE"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITSAMPLES_HEARTRATEVARIABILITY_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="HEALTHKITSAMPLES_HEARTRATEVARIABILITY"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITSAMPLES_RESTINGHEARTRATE_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="HEALTHKITSAMPLES_RESTINGHEARTRATE"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITSAMPLES_STEPS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="HEALTHKITSAMPLES_STEPS"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITSTATISTICS_DAILYSTEPS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="HEALTHKITSTATISTICS_DAILYSTEPS"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="HEALTHKITSTATISTICS_HOURLYSTEPS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="HEALTHKITSTATISTICS_HOURLYSTEPS"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="NOTIFICATIONS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="NOTIFICATIONS"/>
            <child column="PARTICIPANT_ID" foreignKey="SK_DEVICE_USAGE_PARTICIPANT_ID_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SK_DEVICE_USAGE"/>
            <child column="PARTICIPANT_ID" foreignKey="SK_KEYBOARD_PARTICIPANT_ID_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SK_KEYBOARD"/>
            <child column="PARTICIPANT_ID" foreignKey="SK_LIGHT_PARTICIPANT_ID_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SK_LIGHT"/>
            <child column="PARTICIPANT_ID" foreignKey="SK_SPEECH_PARTICIPANT_ID_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SK_SPEECH"/>
            <child column="PARTICIPANT_ID" foreignKey="SK_USAGE_PARTICIPANT_ID_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SK_USAGE"/>
            <child column="PARTICIPANT_ID" foreignKey="SK_VISITS_PARTICIPANT_ID_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SK_VISITS"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STG_FITBIT_HRV"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="SURVEYCONSENTSIGNATURERESULTS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SURVEYCONSENTSIGNATURERESULTS"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="SURVEYQUESTIONRESULTS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SURVEYQUESTIONRESULTS"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="SURVEYRESULTS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SURVEYRESULTS"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="SURVEYSTEPRESULTS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SURVEYSTEPRESULTS"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="SURVEYTASKS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SURVEYTASKS"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="VW_BASELINE_SURVEY"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="VW_IHS_PARTICIPANT_RECENT_DEVICES"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="VW_IHS_PARTICIPANT_SUMMARY"/>
            <child column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="VW_IHS_RECRUITMENT"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="GLOBALKEY" nullable="true" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="EMAILADDRESS" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="MIDDLENAME" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="FIRSTNAME" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="LASTNAME" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="GENDER" nullable="true" remarks="" size="2" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="DATEOFBIRTH" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="SECONDARYIDENTIFIER" nullable="true" remarks="" size="10" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="POSTALCODE" nullable="true" remarks="" size="15" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="10" name="ENROLLMENTDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="EVENTDATES" nullable="true" remarks="" size="2000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="CUSTOMFIELDS" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="UTCOFFSET" nullable="true" remarks="" size="20" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="14" name="TIMEZONE" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="15" name="PREFERREDLANGUAGE" nullable="true" remarks="" size="10" type="VARCHAR2" typeCode="12"/>
         <primaryKey column="PARTICIPANTIDENTIFIER" sequenceNumberInPK="1"/>
         <index name="STUDYPARTICIPANTS_PK" unique="true">
            <column ascending="true" name="PARTICIPANTIDENTIFIER"/>
         </index>
         <checkConstraint constraint="CUSTOMFIELDS IS JSON" name="STUDYPARTICIPANTS_CUSTOMFIELDS_JSON"/>
      </table>
      <table name="SURVEYCONSENTSIGNATURERESULTS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="SURVEYCONSENTSIGNATURERESULTKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="SURVEYSTEPRESULTKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3">
            <parent column="SURVEYSTEPRESULTKEY" foreignKey="SURVEYCONSENTSIGNATURERESULTS_SURVEYSTEPRESULTKEY_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SURVEYSTEPRESULTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="SURVEYRESULTKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3">
            <parent column="SURVEYRESULTKEY" foreignKey="SURVEYCONSENTSIGNATURERESULTS_SURVEYRESULTKEY_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SURVEYRESULTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="SURVEYCONSENTSIGNATURERESULTS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="RESULTIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="CONSENTED" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="SIGNATUREIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="SIGNATURETITLE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="SIGNATUREGIVENNAME" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="SIGNATUREFAMILYNAME" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="SIGNATUREDATE" nullable="true" remarks="" size="15" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="11" name="STARTDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="12" name="ENDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <primaryKey column="SURVEYCONSENTSIGNATURERESULTKEY" sequenceNumberInPK="1"/>
         <index name="SURVEYCONSENTSIGNATURERESULTS_PK" unique="true">
            <column ascending="true" name="SURVEYCONSENTSIGNATURERESULTKEY"/>
         </index>
      </table>
      <table name="SURVEYDEFINITIONS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="SURVEYDEFINITIONKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="SURVEYKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="SURVEYNAME" nullable="false" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="VERSIONNUMBER" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="4" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="DEFINITION" nullable="true" remarks="" size="4000" type="CLOB" typeCode="2005"/>
         <primaryKey column="SURVEYDEFINITIONKEY" sequenceNumberInPK="1"/>
         <index name="SURVEYDEFINITIONS_PK" unique="true">
            <column ascending="true" name="SURVEYDEFINITIONKEY"/>
         </index>
         <checkConstraint constraint="DEFINITION IS JSON" name="SURVEYDEFINITIONS_DEFINITION_JSON"/>
      </table>
      <table name="SURVEYDICTIONARY" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="SURVEYNAME" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="SURVEYKEY" nullable="true" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="SURVEYVERSION" nullable="true" remarks="" size="38" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="STEPIDENTIFIER" nullable="true" remarks="" size="300" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="RESULTIDENTIFIER" nullable="true" remarks="" size="300" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="QUESTIONTEXT" nullable="true" remarks="" size="4000" type="CLOB" typeCode="2005"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="ANSWERFORMAT" nullable="true" remarks="" size="300" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="ANSWERCHOICES" nullable="true" remarks="" size="4000" type="CLOB" typeCode="2005"/>
      </table>
      <table name="SURVEYQUESTIONRESULTS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="SURVEYQUESTIONRESULTKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="SURVEYSTEPRESULTKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3">
            <parent column="SURVEYSTEPRESULTKEY" foreignKey="SURVEYQUESTIONRESULTS_SURVEYSTEPRESULTKEY_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SURVEYSTEPRESULTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="SURVEYRESULTKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3">
            <parent column="SURVEYRESULTKEY" foreignKey="SURVEYQUESTIONRESULTS_SURVEYRESULTKEY_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SURVEYRESULTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="SURVEYQUESTIONRESULTS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="RESULTIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="ANSWERS" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="6" name="STARTDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="7" name="ENDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <primaryKey column="SURVEYQUESTIONRESULTKEY" sequenceNumberInPK="1"/>
         <index name="SURVEYQUESTIONRESULTS_PK" unique="true">
            <column ascending="true" name="SURVEYQUESTIONRESULTKEY"/>
         </index>
      </table>
      <table name="SURVEYRESULTS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="SURVEYRESULTKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3">
            <child column="SURVEYRESULTKEY" foreignKey="SURVEYCONSENTSIGNATURERESULTS_SURVEYRESULTKEY_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SURVEYCONSENTSIGNATURERESULTS"/>
            <child column="SURVEYRESULTKEY" foreignKey="SURVEYQUESTIONRESULTS_SURVEYRESULTKEY_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SURVEYQUESTIONRESULTS"/>
            <child column="SURVEYRESULTKEY" foreignKey="SURVEYSTEPRESULTS_SURVEYRESULTKEY_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SURVEYSTEPRESULTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="SURVEYKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="SURVEYNAME" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="SURVEYVERSION" nullable="true" remarks="" size="8" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="SURVEYRESULTS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="SURVEYTASKKEY" nullable="true" remarks="" size="16" type="RAW" typeCode="-3">
            <parent column="SURVEYTASKKEY" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="SURVEYTASKS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="TYPE" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="7" name="STARTDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="8" name="ENDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="DEVICEPLATFORM" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="DEVICENAME" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="DEVICEOSVERSION" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="12" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <primaryKey column="SURVEYRESULTKEY" sequenceNumberInPK="1"/>
         <index name="SURVEYRESULTS_PK" unique="true">
            <column ascending="true" name="SURVEYRESULTKEY"/>
         </index>
      </table>
      <table name="SURVEYSTEPRESULTS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="SURVEYSTEPRESULTKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3">
            <child column="SURVEYSTEPRESULTKEY" foreignKey="SURVEYCONSENTSIGNATURERESULTS_SURVEYSTEPRESULTKEY_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SURVEYCONSENTSIGNATURERESULTS"/>
            <child column="SURVEYSTEPRESULTKEY" foreignKey="SURVEYQUESTIONRESULTS_SURVEYSTEPRESULTKEY_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SURVEYQUESTIONRESULTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="SURVEYRESULTKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3">
            <parent column="SURVEYRESULTKEY" foreignKey="SURVEYSTEPRESULTS_SURVEYRESULTKEY_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="SURVEYRESULTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="SURVEYSTEPRESULTS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="STEPIDENTIFIER" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="4" name="STARTDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="5" name="ENDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <primaryKey column="SURVEYSTEPRESULTKEY" sequenceNumberInPK="1"/>
         <index name="SURVEYSTEPRESULTS_PK" unique="true">
            <column ascending="true" name="SURVEYSTEPRESULTKEY"/>
         </index>
      </table>
      <table name="SURVEYTASKS" remarks="" schema="IHS_2023" type="TABLE">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="SURVEYTASKKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3">
            <child column="SURVEYTASKKEY" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="SURVEYRESULTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="SURVEYTASKS_PARTICIPANTIDENTIFIER_FK" implied="false" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="SURVEYKEY" nullable="false" remarks="" size="16" type="RAW" typeCode="-3"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="SURVEYNAME" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="STATUS" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="5" name="DUEDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="6" name="INSERTEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="CREATEDBY" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="6" id="8" name="MODIFIEDDATE" nullable="true" remarks="" size="13" type="TIMESTAMP(6) WITH TIME ZONE" typeCode="-101"/>
         <primaryKey column="SURVEYTASKKEY" sequenceNumberInPK="1"/>
         <index name="SURVEYTASKS_PK" unique="true">
            <column ascending="true" name="SURVEYTASKKEY"/>
         </index>
      </table>
      <table name="VW_BASELINE_SURVEY" numRows="0" remarks="" schema="IHS_2023" type="VIEW" viewSql="with baseline_SURVEYRESULTS as (&#10;    select &#10;        SURVEYRESULTKEY&#10;        ,PARTICIPANTIDENTIFIER&#10;        ,STARTDATE&#10;        ,ENDDATE&#10;&#9;&#9;,DEVICEPLATFORM&#10;&#9;&#9;,DEVICENAME&#10;&#9;&#9;,DEVICEOSVERSION&#10;        ,ROW_NUMBER() OVER (PARTITION BY PARTICIPANTIDENTIFIER ORDER BY STARTDATE desc) AS rn&#10;    from SURVEYRESULTS&#10;    where SURVEYKEY = '8CD927C0CFD111ECAABA0AFB9334277D'&#10;    and SURVEYNAME='Baseline Survey 2023'&#10;),&#10;latest_baseline_survey as (&#10;&#9;select &#10;&#9;&#9;qr.SURVEYRESULTKEY&#10;&#9;&#9;,qr.PARTICIPANTIDENTIFIER&#10;&#9;&#9;,qr.RESULTIDENTIFIER&#10;&#9;&#9;,qr.ANSWERS&#10;        ,sr.STARTDATE&#10;&#9;&#9;,sr.ENDDATE&#10;&#9;&#9;,sr.DEVICEPLATFORM&#10;&#9;&#9;,sr.DEVICENAME&#10;&#9;&#9;,sr.DEVICEOSVERSION&#10;&#9;from SURVEYQUESTIONRESULTS qr&#10;&#9;join baseline_SURVEYRESULTS sr on qr.SURVEYRESULTKEY = sr.SURVEYRESULTKEY and qr.PARTICIPANTIDENTIFIER = sr.PARTICIPANTIDENTIFIER&#10;&#9;where sr.rn = 1   --pick the most recent baseline survey&#10;),&#10;baseline_survey_pivot as (&#10;&#9;select * from latest_baseline_survey&#10;&#9;&#9;pivot ( &#10;&#9;&#9;&#9;  max(ANSWERS) for RESULTIDENTIFIER in ( &#10;                'FirstName' as &quot;FirstName&quot;&#10;                ,'LastName' as &quot;LastName&quot;&#10;                ,'hours0' as &quot;hours0&quot;&#10;                ,'sleep24h0' as &quot;sleep24h0&quot;&#10;                ,'sleepAve0' as &quot;sleepAve0&quot;&#10;                ,'DutyDate0' as &quot;DutyDate0&quot;&#10;                ,'interest0' as &quot;interest0&quot;&#10;                ,'down0' as &quot;down0&quot;&#10;                ,'asleep0' as &quot;asleep0&quot;&#10;                ,'tired0' as &quot;tired0&quot;&#10;                ,'appetite0' as &quot;appetite0&quot;&#10;                ,'failure0' as &quot;failure0&quot;&#10;                ,'concentr0' as &quot;concentr0&quot;&#10;                ,'activity0' as &quot;activity0&quot;&#10;                ,'suic0' as &quot;suic0&quot;&#10;                ,'manage0' as &quot;manage0&quot;&#10;                ,'depr0' as &quot;depr0&quot;    --True/False&#10;                ,'deprRelat' as &quot;deprRelat&quot;    --True/False&#10;                ,'deprAge' as &quot;deprAge&quot;&#10;                ,'deprPlace' as &quot;deprPlace&quot;    --Multiple choice&#10;                ,'deprTreat0' as &quot;deprTreat0&quot;    --True/False&#10;                ,'specTreat0' as &quot;specTreat0&quot;    --Multiple choice&#10;                ,'specTreat0_Other_TEXT' as &quot;specTreat0_Other_TEXT&quot;&#10;                ,'medication0' as &quot;medication0&quot;    --Multiple choice&#10;                ,'medication0_Other_TEXT' as &quot;medication0_Other_TEXT&quot;&#10;                ,'tobacco0' as &quot;tobacco0&quot;&#10;                ,'alcohol0' as &quot;alcohol0&quot;&#10;                ,'cannabis0' as &quot;cannabis0&quot;&#10;                ,'therapy0' as &quot;therapy0&quot;    --True/False&#10;                ,'nervous0' as &quot;nervous0&quot;&#10;                ,'worrying0' as &quot;worrying0&quot;&#10;                ,'muchworry0' as &quot;muchworry0&quot;&#10;                ,'norelax0' as &quot;norelax0&quot;&#10;                ,'restless0' as &quot;restless0&quot;&#10;                ,'irritable0' as &quot;irritable0&quot;&#10;                ,'afraid0' as &quot;afraid0&quot;&#10;                ,'SLE' as &quot;SLE&quot;    --Multiple choice&#10;                ,'anxious' as &quot;anxious&quot;&#10;                ,'emotions' as &quot;emotions&quot;&#10;                ,'worrier' as &quot;worrier&quot;&#10;                ,'wrong' as &quot;wrong&quot;&#10;                ,'thoughts' as &quot;thoughts&quot;&#10;                ,'noblue' as &quot;noblue&quot;&#10;                ,'giveup' as &quot;giveup&quot;&#10;                ,'nodepr' as &quot;nodepr&quot;&#10;                ,'helpless' as &quot;helpless&quot;&#10;                ,'overeat' as &quot;overeat&quot;&#10;                ,'hide' as &quot;hide&quot;&#10;                ,'pieces' as &quot;pieces&quot;&#10;                ,'inferior' as &quot;inferior&quot;&#10;                ,'comfort' as &quot;comfort&quot;&#10;                ,'loved' as &quot;loved&quot;&#10;                ,'insulted' as &quot;insulted&quot;&#10;                ,'hugged' as &quot;hugged&quot;&#10;                ,'pushed' as &quot;pushed&quot;&#10;                ,'wellhouse' as &quot;wellhouse&quot;&#10;                ,'drinkers' as &quot;drinkers&quot;&#10;                ,'violenhouse' as &quot;violenhouse&quot;&#10;                ,'quarrpar' as &quot;quarrpar&quot;&#10;                ,'quarryoupar' as &quot;quarryoupar&quot;&#10;                ,'quarrparsib' as &quot;quarrparsib&quot;&#10;                ,'quarryousib' as &quot;quarryousib&quot;&#10;                ,'chaotic' as &quot;chaotic&quot;&#10;                ,'neglected' as &quot;neglected&quot;&#10;                ,'mspss1_0' as &quot;mspss1_0&quot;&#10;                ,'mspss2_0' as &quot;mspss2_0&quot;&#10;                ,'mspss3_0' as &quot;mspss3_0&quot;&#10;                ,'mspss4_0' as &quot;mspss4_0&quot;&#10;                ,'mspss5_0' as &quot;mspss5_0&quot;&#10;                ,'mspss6_0' as &quot;mspss6_0&quot;&#10;                ,'mspss7_0' as &quot;mspss7_0&quot;&#10;                ,'mspss8_0' as &quot;mspss8_0&quot;&#10;                ,'mspss9_0' as &quot;mspss9_0&quot;&#10;                ,'mspss10_0' as &quot;mspss10_0&quot;&#10;                ,'mspss11_0' as &quot;mspss11_0&quot;&#10;                ,'mspss12_0' as &quot;mspss12_0&quot;&#10;                ,'MedSchool' as &quot;MedSchool&quot;&#10;                ,'Clerk0' as &quot;Clerk0&quot;&#10;                ,'ResidencyProgram' as &quot;ResidencyProgram&quot;&#10;                ,'Program_Code_Other_Specialty' as &quot;Program_Code_Other_Specialty&quot;&#10;                ,'Program_Code_Other_Program' as &quot;Program_Code_Other_Program&quot;&#10;                ,'Bdate' as &quot;Bdate&quot;&#10;                ,'Sex' as &quot;Sex&quot;&#10;                ,'GenderIdentity' as &quot;GenderIdentity&quot;&#10;                ,'GenderIdentity_OtherText' as &quot;GenderIdentity_OtherText&quot;&#10;                ,'sexOrientation' as &quot;sexOrientation&quot;&#10;                ,'sexOrientation_OtherText' as &quot;sexOrientation_OtherText&quot;&#10;                ,'Marital' as &quot;Marital&quot;&#10;                ,'partner_employ' as &quot;partner_employ&quot;&#10;                ,'partnerEmploy_OtherText' as &quot;partnerEmploy_OtherText&quot;&#10;                ,'partner_degree' as &quot;partner_degree&quot;&#10;                ,'partnerDegree_OtherText' as &quot;partnerDegree_OtherText&quot;&#10;                ,'partnerPosition' as &quot;partnerPosition&quot;&#10;                ,'SigOther0' as &quot;SigOther0&quot;    --True/False&#10;                ,'Child_number' as &quot;Child_number&quot;&#10;                ,'Ethnicity' as &quot;Ethnicity&quot;    --Multiple choice&#10;                ,'Ethnicity_Other_TEXT' as &quot;Ethnicity_Other_TEXT&quot;&#10;                ,'Asian' as &quot;Asian&quot;    --Multiple choice&#10;                ,'Asian_Other_TEXT' as &quot;Asian_Other_TEXT&quot;&#10;                ,'BirthPlace' as &quot;BirthPlace&quot;&#10;                ,'AgeMoveUS' as &quot;AgeMoveUS&quot;&#10;                ,'relevantInfo0' as &quot;relevantInfo0&quot;&#10;                ,'trackertype' as &quot;trackertype&quot;&#10;                ,'trackerrequest' as &quot;trackerrequest&quot;&#10;                ,'email0' as &quot;email0&quot;&#10;                ,'AddressCurrent0_Street_Address_1' as &quot;AddressCurrent0_Street_Address_1&quot;&#10;                ,'AddressCurrent0_Street_Address_2' as &quot;AddressCurrent0_Street_Address_2&quot;&#10;                ,'AddressCurrent0_City' as &quot;AddressCurrent0_City&quot;&#10;                ,'AddressCurrent0_State' as &quot;AddressCurrent0_State&quot;&#10;                ,'AddressCurrent0_ZipCode' as &quot;AddressCurrent0_ZipCode&quot;&#10;                ,'AddressCurrent0_ValidDate' as &quot;AddressCurrent0_ValidDate&quot;&#10;                ,'AddressMove0_Street_Address_1' as &quot;AddressMove0_Street_Address_1&quot;&#10;                ,'AddressMove0_Street_Address_2' as &quot;AddressMove0_Street_Address_2&quot;&#10;                ,'AddressMove0_City' as &quot;AddressMove0_City&quot;&#10;                ,'AddressMove0_State' as &quot;AddressMove0_State&quot;&#10;                ,'AddressMove0_ZipCode' as &quot;AddressMove0_ZipCode&quot;&#10;&#9;&#9;&#9;&#9;)&#10;&#9;&#9;&#9;)&#10;),&#10;PARTICIPANTS as (&#10;&#9;select &#10;&#9;&#9;p.ParticipantIdentifier&#10;&#9;&#9;,p.SECONDARYIDENTIFIER&#10;&#9;&#9;--,p.FirstName&#10;&#9;&#9;--,p.LastName&#10;&#9;&#9;,p.EmailAddress&#10;&#9;&#9;,p.EnrollmentDate&#10;&#9;&#9;--------&#10;&#9;&#9;,jt.Consented_Date&#10;&#9;from STUDYPARTICIPANTS p,&#10;&#9;JSON_TABLE(p.CUSTOMFIELDS, '$'&#10;&#9;&#9;&#9;   COLUMNS (&#10;&#9;&#9;&#9;&#9;&#9;&#9;Consented_Date VARCHAR2(50) PATH '$.Consented_Date'&#10;&#9;&#9;&#9;&#9;&#9;&#9;)) jt&#10;),&#10;baseline_survey as (&#10;&#9;select &#10;&#9;&#9;p.ParticipantIdentifier&#10;&#9;&#9;,to_number(p.SECONDARYIDENTIFIER) as study_participant_id&#10;&#9;&#9;--,p.FirstName&#10;&#9;&#9;--,p.LastName&#10;&#9;&#9;,p.EmailAddress as EmailAddress0&#10;&#9;&#9;,cast(p.EnrollmentDate as date) as EnrollmentDate&#10;&#9;&#9;/*&#10;&#9;&#9;--,case c.CONSENTED when 'Y' then 1 end as CONSENTED&#10;&#9;&#9;--,case when c.type='Consent' then 'Y' end as CONSENTED --modified on 4/13/2022&#10;&#9;&#9;,case when c.ParticipantIdentifier is not null then 'Y' end as CONSENTED --modified on 4/13/2022&#10;&#9;&#9;,cast(c.startdate as date) as consent_startdate&#10;&#9;&#9;,cast(c.enddate as date) as consent_enddate&#10;&#9;&#9;*/&#10;&#9;&#9;,case when p.Consented_Date is not null then 'Y' end as CONSENTED --modified on 4/13/2022&#10;&#9;&#9;,to_date(substr(p.Consented_Date, 1, 10), 'yyyy-mm-dd') as  consent_startdate&#10;&#9;&#9;,to_date(substr(p.Consented_Date, 1, 10), 'yyyy-mm-dd') as  consent_enddate&#10;&#9;&#9;,cast(s.StartDate as date) as StartDate0&#10;&#9;&#9;,cast(s.EndDate as date) as EndDate0&#10;&#9;&#9;,s.DEVICEPLATFORM as DEVICEPLATFORM0&#10;&#9;&#9;,s.DEVICENAME as DEVICENAME0&#10;&#9;&#9;,s.DEVICEOSVERSION as DEVICEOSVERSION0&#10;&#9;&#9;-----&#10;        ,s.&quot;FirstName&quot; as &quot;FirstName&quot;&#10;        ,s.&quot;LastName&quot; as &quot;LastName&quot;&#10;        ,to_number(s.&quot;hours0&quot;) as &quot;hours0&quot;&#10;        ,to_number(s.&quot;sleep24h0&quot;) as &quot;sleep24h0&quot;&#10;        ,to_number(s.&quot;sleepAve0&quot;) as &quot;sleepAve0&quot;&#10;        ,to_date(s.&quot;DutyDate0&quot;, 'yyyy-mm-dd') as &quot;DutyDate0&quot;&#10;        ,to_number(s.&quot;interest0&quot;) as &quot;interest0&quot;&#10;        ,to_number(s.&quot;down0&quot;) as &quot;down0&quot;&#10;        ,to_number(s.&quot;asleep0&quot;) as &quot;asleep0&quot;&#10;        ,to_number(s.&quot;tired0&quot;) as &quot;tired0&quot;&#10;        ,to_number(s.&quot;appetite0&quot;) as &quot;appetite0&quot;&#10;        ,to_number(s.&quot;failure0&quot;) as &quot;failure0&quot;&#10;        ,to_number(s.&quot;concentr0&quot;) as &quot;concentr0&quot;&#10;        ,to_number(s.&quot;activity0&quot;) as &quot;activity0&quot;&#10;        ,to_number(s.&quot;suic0&quot;) as &quot;suic0&quot;&#10;        ,to_number(s.&quot;manage0&quot;) as &quot;manage0&quot;&#10;        ,case s.&quot;depr0&quot; when 'True' then 1 when 'False' then 0 end as &quot;depr0&quot;&#10;        ,case s.&quot;deprRelat&quot; when 'True' then 1 when 'False' then 0 end as &quot;deprRelat&quot;&#10;        ,to_number(s.&quot;deprAge&quot;) as &quot;deprAge&quot;&#10;        ,s.&quot;deprPlace&quot; as &quot;deprPlace&quot;&#10;        ,case when instr(s.&quot;deprPlace&quot;, 'deprSch') &gt; 0 then 1 end as &quot;deprSch&quot;&#10;        ,case when instr(s.&quot;deprPlace&quot;, 'deprSchColl') &gt; 0 then 1 end as &quot;deprSchColl&quot;&#10;        ,case when instr(s.&quot;deprPlace&quot;, 'deprColl') &gt; 0 then 1 end as &quot;deprColl&quot;&#10;        ,case when instr(s.&quot;deprPlace&quot;, 'deprCollMed') &gt; 0 then 1 end as &quot;deprCollMed&quot;&#10;        ,case when instr(s.&quot;deprPlace&quot;, 'deprMed') &gt; 0 then 1 end as &quot;deprMed&quot;&#10;        ,case s.&quot;deprTreat0&quot; when 'True' then 1 when 'False' then 0 end as &quot;deprTreat0&quot;&#10;        ,s.&quot;specTreat0&quot; as &quot;specTreat0&quot;&#10;        ,case when instr(s.&quot;specTreat0&quot;, 'specTreat0_Medication') &gt; 0 then 1 end as &quot;specTreat0_Medication&quot;&#10;        ,case when instr(s.&quot;specTreat0&quot;, 'specTreat0_Psychotherapy') &gt; 0 then 1 end as &quot;specTreat0_Psychotherapy&quot;&#10;        ,case when instr(s.&quot;specTreat0&quot;, 'specTreat0_Other') &gt; 0 then 1 end as &quot;specTreat0_Other&quot;&#10;        ,s.&quot;specTreat0_Other_TEXT&quot; as &quot;specTreat0_Other_TEXT&quot;&#10;        ,s.&quot;medication0&quot; as &quot;medication0&quot;&#10;        ,case when instr(s.&quot;medication0&quot;, 'medication0_Prescription_analges') &gt; 0 then 1 end as &quot;medication0_Prescription_analges&quot;&#10;        ,case when instr(s.&quot;medication0&quot;, 'medication0_Sedatives_or_Hypnoti') &gt; 0 then 1 end as &quot;medication0_Sedatives_or_Hypnoti&quot;&#10;        ,case when instr(s.&quot;medication0&quot;, 'medication0_Antidepressants') &gt; 0 then 1 end as &quot;medication0_Antidepressants&quot;&#10;        ,case when instr(s.&quot;medication0&quot;, 'medication0_Mood_stabilizers') &gt; 0 then 1 end as &quot;medication0_Mood_stabilizers&quot;&#10;        ,case when instr(s.&quot;medication0&quot;, 'medication0_Antipsychotics') &gt; 0 then 1 end as &quot;medication0_Antipsychotics&quot;&#10;        ,case when instr(s.&quot;medication0&quot;, 'medication0_Stimulants') &gt; 0 then 1 end as &quot;medication0_Stimulants&quot;&#10;        ,case when instr(s.&quot;medication0&quot;, 'medication0_Other') &gt; 0 then 1 end as &quot;medication0_Other&quot;&#10;        ,case when instr(s.&quot;medication0&quot;, 'medication0_None') &gt; 0 then 1 end as &quot;medication0_None&quot;&#10;        ,s.&quot;medication0_Other_TEXT&quot; as &quot;medication0_Other_TEXT&quot;&#10;        ,to_number(s.&quot;tobacco0&quot;) as &quot;tobacco0&quot;&#10;        ,to_number(s.&quot;alcohol0&quot;) as &quot;alcohol0&quot;&#10;        ,to_number(s.&quot;cannabis0&quot;) as &quot;cannabis0&quot;&#10;        ,case s.&quot;therapy0&quot; when 'True' then 1 when 'False' then 0 end as &quot;therapy0&quot;&#10;        ,to_number(s.&quot;nervous0&quot;) as &quot;nervous0&quot;&#10;        ,to_number(s.&quot;worrying0&quot;) as &quot;worrying0&quot;&#10;        ,to_number(s.&quot;muchworry0&quot;) as &quot;muchworry0&quot;&#10;        ,to_number(s.&quot;norelax0&quot;) as &quot;norelax0&quot;&#10;        ,to_number(s.&quot;restless0&quot;) as &quot;restless0&quot;&#10;        ,to_number(s.&quot;irritable0&quot;) as &quot;irritable0&quot;&#10;        ,to_number(s.&quot;afraid0&quot;) as &quot;afraid0&quot;&#10;        ,s.&quot;SLE&quot; as &quot;SLEq0&quot;&#10;        ,case when instr(s.&quot;SLE&quot;, 'stress1_0') &gt; 0 then 1 end as &quot;stress1_0&quot;&#10;        ,case when instr(s.&quot;SLE&quot;, 'stress2_0') &gt; 0 then 1 end as &quot;stress2_0&quot;&#10;        ,case when instr(s.&quot;SLE&quot;, 'stress3_0') &gt; 0 then 1 end as &quot;stress3_0&quot;&#10;        ,case when instr(s.&quot;SLE&quot;, 'stress4_0') &gt; 0 then 1 end as &quot;stress4_0&quot;&#10;        ,case when instr(s.&quot;SLE&quot;, 'stress5_0') &gt; 0 then 1 end as &quot;stress5_0&quot;&#10;        ,case when instr(s.&quot;SLE&quot;, 'stress6_0') &gt; 0 then 1 end as &quot;stress6_0&quot;&#10;        ,case when instr(s.&quot;SLE&quot;, 'stress7_0') &gt; 0 then 1 end as &quot;stress7_0&quot;&#10;        ,case when instr(s.&quot;SLE&quot;, 'stress8_0') &gt; 0 then 1 end as &quot;stress8_0&quot;&#10;        ,case when instr(s.&quot;SLE&quot;, 'stress9_0') &gt; 0 then 1 end as &quot;stress9_0&quot;&#10;        ,case when instr(s.&quot;SLE&quot;, 'stress11_0') &gt; 0 then 1 end as &quot;stress11_0&quot;&#10;        ,case when instr(s.&quot;SLE&quot;, 'stress10_0') &gt; 0 then 1 end as &quot;stress10_0&quot;&#10;        ,case when instr(s.&quot;SLE&quot;, 'stressNone_0') &gt; 0 then 1 end as &quot;stressNone_0&quot;&#10;        ,to_number(s.&quot;anxious&quot;) as &quot;anxious&quot;&#10;        ,to_number(s.&quot;emotions&quot;) as &quot;emotions&quot;&#10;        ,to_number(s.&quot;worrier&quot;) as &quot;worrier&quot;&#10;        ,to_number(s.&quot;wrong&quot;) as &quot;wrong&quot;&#10;        ,to_number(s.&quot;thoughts&quot;) as &quot;thoughts&quot;&#10;        ,to_number(s.&quot;noblue&quot;) as &quot;noblue&quot;&#10;        ,to_number(s.&quot;giveup&quot;) as &quot;giveup&quot;&#10;        ,to_number(s.&quot;nodepr&quot;) as &quot;nodepr&quot;&#10;        ,to_number(s.&quot;helpless&quot;) as &quot;helpless&quot;&#10;        ,to_number(s.&quot;overeat&quot;) as &quot;overeat&quot;&#10;        ,to_number(s.&quot;hide&quot;) as &quot;hide&quot;&#10;        ,to_number(s.&quot;pieces&quot;) as &quot;pieces&quot;&#10;        ,to_number(s.&quot;inferior&quot;) as &quot;inferior&quot;&#10;        ,to_number(s.&quot;comfort&quot;) as &quot;comfort&quot;&#10;        ,to_number(s.&quot;loved&quot;) as &quot;loved&quot;&#10;        ,to_number(s.&quot;insulted&quot;) as &quot;insulted&quot;&#10;        ,to_number(s.&quot;hugged&quot;) as &quot;hugged&quot;&#10;        ,to_number(s.&quot;pushed&quot;) as &quot;pushed&quot;&#10;        ,to_number(s.&quot;wellhouse&quot;) as &quot;wellhouse&quot;&#10;        ,to_number(s.&quot;drinkers&quot;) as &quot;drinkers&quot;&#10;        ,to_number(s.&quot;violenhouse&quot;) as &quot;violenhouse&quot;&#10;        ,to_number(s.&quot;quarrpar&quot;) as &quot;quarrpar&quot;&#10;        ,to_number(s.&quot;quarryoupar&quot;) as &quot;quarryoupar&quot;&#10;        ,to_number(s.&quot;quarrparsib&quot;) as &quot;quarrparsib&quot;&#10;        ,to_number(s.&quot;quarryousib&quot;) as &quot;quarryousib&quot;&#10;        ,to_number(s.&quot;chaotic&quot;) as &quot;chaotic&quot;&#10;        ,to_number(s.&quot;neglected&quot;) as &quot;neglected&quot;&#10;        ,to_number(s.&quot;mspss1_0&quot;) as &quot;mspss1_0&quot;&#10;        ,to_number(s.&quot;mspss2_0&quot;) as &quot;mspss2_0&quot;&#10;        ,to_number(s.&quot;mspss3_0&quot;) as &quot;mspss3_0&quot;&#10;        ,to_number(s.&quot;mspss4_0&quot;) as &quot;mspss4_0&quot;&#10;        ,to_number(s.&quot;mspss5_0&quot;) as &quot;mspss5_0&quot;&#10;        ,to_number(s.&quot;mspss6_0&quot;) as &quot;mspss6_0&quot;&#10;        ,to_number(s.&quot;mspss7_0&quot;) as &quot;mspss7_0&quot;&#10;        ,to_number(s.&quot;mspss8_0&quot;) as &quot;mspss8_0&quot;&#10;        ,to_number(s.&quot;mspss9_0&quot;) as &quot;mspss9_0&quot;&#10;        ,to_number(s.&quot;mspss10_0&quot;) as &quot;mspss10_0&quot;&#10;        ,to_number(s.&quot;mspss11_0&quot;) as &quot;mspss11_0&quot;&#10;        ,to_number(s.&quot;mspss12_0&quot;) as &quot;mspss12_0&quot;&#10;        ,s.&quot;MedSchool&quot; as &quot;MedSchool&quot;&#10;        ,to_number(s.&quot;Clerk0&quot;) as &quot;Clerk0&quot;&#10;        ,to_number(s.&quot;ResidencyProgram&quot;) as &quot;ResidencyProgram&quot;&#10;        ,s.&quot;Program_Code_Other_Specialty&quot; as &quot;Program_Code_Other_Specialty&quot;&#10;        ,s.&quot;Program_Code_Other_Program&quot; as &quot;Program_Code_Other_Program&quot;&#10;        ,to_date(s.&quot;Bdate&quot;, 'yyyy-mm-dd') as &quot;Bdate&quot;&#10;        ,to_number(s.&quot;Sex&quot;) as &quot;Sex&quot;&#10;        ,to_number(s.&quot;GenderIdentity&quot;) as &quot;GenderIdentity&quot;&#10;        ,s.&quot;GenderIdentity_OtherText&quot; as &quot;GenderIdentity_OtherText&quot;&#10;        ,to_number(s.&quot;sexOrientation&quot;) as &quot;sexOrientation&quot;&#10;        ,s.&quot;sexOrientation_OtherText&quot; as &quot;sexOrientation_OtherText&quot;&#10;        ,to_number(s.&quot;Marital&quot;) as &quot;Marital&quot;&#10;        ,to_number(s.&quot;partner_employ&quot;) as &quot;partner_employ&quot;&#10;        ,s.&quot;partnerEmploy_OtherText&quot; as &quot;partnerEmploy_OtherText&quot;&#10;        ,to_number(s.&quot;partner_degree&quot;) as &quot;partner_degree&quot;&#10;        ,s.&quot;partnerDegree_OtherText&quot; as &quot;partnerDegree_OtherText&quot;&#10;        ,to_number(s.&quot;partnerPosition&quot;) as &quot;partnerPosition&quot;&#10;        ,case s.&quot;SigOther0&quot; when 'True' then 1 when 'False' then 0 end as &quot;SigOther0&quot;&#10;        ,to_number(s.&quot;Child_number&quot;) as &quot;Child_number&quot;&#10;        ,s.&quot;Ethnicity&quot; as &quot;Ethnicity&quot;&#10;        ,case when instr(s.&quot;Ethnicity&quot;, '1') &gt; 0 then 1 end as &quot;White&quot;&#10;        ,case when instr(s.&quot;Ethnicity&quot;, '2') &gt; 0 then 1 end as &quot;Black / African American&quot;&#10;        ,case when instr(s.&quot;Ethnicity&quot;, '3') &gt; 0 then 1 end as &quot;Latino / Hispanic&quot;&#10;        ,case when instr(s.&quot;Ethnicity&quot;, '4') &gt; 0 then 1 end as &quot;Asian (e.g. Indian, Chinese)&quot;&#10;        ,case when instr(s.&quot;Ethnicity&quot;, '9') &gt; 0 then 1 end as &quot;Arab / Middle Eastern&quot;&#10;        ,case when instr(s.&quot;Ethnicity&quot;, '5') &gt; 0 then 1 end as &quot;Native American&quot;&#10;        ,case when instr(s.&quot;Ethnicity&quot;, '6') &gt; 0 then 1 end as &quot;Pacific Islander&quot;&#10;        ,case when instr(s.&quot;Ethnicity&quot;, '7') &gt; 0 then 1 end as &quot;Other Ethnicity&quot;&#10;        ,s.&quot;Ethnicity_Other_TEXT&quot; as &quot;Ethnicity_Other_TEXT&quot;&#10;        ,s.&quot;Asian&quot; as &quot;Asian&quot;&#10;        ,case when instr(s.&quot;Asian&quot;, '1') &gt; 0 then 1 end as &quot;Indian&quot;&#10;        ,case when instr(s.&quot;Asian&quot;, '2') &gt; 0 then 1 end as &quot;Chinese&quot;&#10;        ,case when instr(s.&quot;Asian&quot;, '3') &gt; 0 then 1 end as &quot;Korean&quot;&#10;        ,case when instr(s.&quot;Asian&quot;, '4') &gt; 0 then 1 end as &quot;Vietnamese&quot;&#10;        ,case when instr(s.&quot;Asian&quot;, '5') &gt; 0 then 1 end as &quot;Japanese&quot;&#10;        ,case when instr(s.&quot;Asian&quot;, '6') &gt; 0 then 1 end as &quot;Pakistani&quot;&#10;        ,case when instr(s.&quot;Asian&quot;, '7') &gt; 0 then 1 end as &quot;Filipino&quot;&#10;        ,case when instr(s.&quot;Asian&quot;, '8') &gt; 0 then 1 end as &quot;Thai&quot;&#10;        ,case when instr(s.&quot;Asian&quot;, '9') &gt; 0 then 1 end as &quot;Cambodian&quot;&#10;        ,case when instr(s.&quot;Asian&quot;, '10') &gt; 0 then 1 end as &quot;Indonesian&quot;&#10;        ,case when instr(s.&quot;Asian&quot;, '11') &gt; 0 then 1 end as &quot;Other Asian&quot;&#10;        ,s.&quot;Asian_Other_TEXT&quot; as &quot;Asian_Other_TEXT&quot;&#10;        ,to_number(s.&quot;BirthPlace&quot;) as &quot;BirthPlace&quot;&#10;        ,to_number(s.&quot;AgeMoveUS&quot;) as &quot;AgeMoveUS&quot;&#10;        ,s.&quot;relevantInfo0&quot; as &quot;relevantInfo0&quot;&#10;        ,to_number(s.&quot;trackertype&quot;) as &quot;trackertype&quot;&#10;        ,to_number(s.&quot;trackerrequest&quot;) as &quot;trackerrequest&quot;&#10;        ,s.&quot;email0&quot; as &quot;email0&quot;&#10;        ,s.&quot;AddressCurrent0_Street_Address_1&quot; as &quot;AddressCurrent0_Street_Address_1&quot;&#10;        ,s.&quot;AddressCurrent0_Street_Address_2&quot; as &quot;AddressCurrent0_Street_Address_2&quot;&#10;        ,s.&quot;AddressCurrent0_City&quot; as &quot;AddressCurrent0_City&quot;&#10;        ,s.&quot;AddressCurrent0_State&quot; as &quot;AddressCurrent0_State&quot;&#10;        ,s.&quot;AddressCurrent0_ZipCode&quot; as &quot;AddressCurrent0_ZipCode&quot;&#10;        ,to_date(s.&quot;AddressCurrent0_ValidDate&quot;, 'yyyy-mm-dd') as &quot;AddressCurrent0_ValidDate&quot;&#10;        ,s.&quot;AddressMove0_Street_Address_1&quot; as &quot;AddressMove0_Street_Address_1&quot;&#10;        ,s.&quot;AddressMove0_Street_Address_2&quot; as &quot;AddressMove0_Street_Address_2&quot;&#10;        ,s.&quot;AddressMove0_City&quot; as &quot;AddressMove0_City&quot;&#10;        ,s.&quot;AddressMove0_State&quot; as &quot;AddressMove0_State&quot;&#10;        ,s.&quot;AddressMove0_ZipCode&quot; as &quot;AddressMove0_ZipCode&quot;&#10;&#9;from PARTICIPANTS p&#10;&#9;/*&#10;&#9;from STUDYPARTICIPANTS p &#10;&#9;--left join SURVEYCONSENTSIGNATURERESULTS c on p.ParticipantIdentifier = c.ParticipantIdentifier&#10;&#9;left join SURVEYRESULTS c on p.ParticipantIdentifier = c.ParticipantIdentifier &#10;&#9;&#9;&#9;and (c.type = 'Consent' or c.surveyname = 'IHSConsent2022') --modified on 4/13/2022&#10;&#9;*/&#10;&#9;left join baseline_survey_pivot s on p.ParticipantIdentifier = s.ParticipantIdentifier&#10;)&#10;select r.&quot;PARTICIPANTIDENTIFIER&quot;,r.&quot;STUDY_PARTICIPANT_ID&quot;,r.&quot;EMAILADDRESS0&quot;,r.&quot;ENROLLMENTDATE&quot;,r.&quot;CONSENTED&quot;,r.&quot;CONSENT_STARTDATE&quot;,r.&quot;CONSENT_ENDDATE&quot;,r.&quot;STARTDATE0&quot;,r.&quot;ENDDATE0&quot;,r.&quot;DEVICEPLATFORM0&quot;,r.&quot;DEVICENAME0&quot;,r.&quot;DEVICEOSVERSION0&quot;,r.&quot;FirstName&quot;,r.&quot;LastName&quot;,r.&quot;hours0&quot;,r.&quot;sleep24h0&quot;,r.&quot;sleepAve0&quot;,r.&quot;DutyDate0&quot;,r.&quot;interest0&quot;,r.&quot;down0&quot;,r.&quot;asleep0&quot;,r.&quot;tired0&quot;,r.&quot;appetite0&quot;,r.&quot;failure0&quot;,r.&quot;concentr0&quot;,r.&quot;activity0&quot;,r.&quot;suic0&quot;,r.&quot;manage0&quot;,r.&quot;depr0&quot;,r.&quot;deprRelat&quot;,r.&quot;deprAge&quot;,r.&quot;deprPlace&quot;,r.&quot;deprSch&quot;,r.&quot;deprSchColl&quot;,r.&quot;deprColl&quot;,r.&quot;deprCollMed&quot;,r.&quot;deprMed&quot;,r.&quot;deprTreat0&quot;,r.&quot;specTreat0&quot;,r.&quot;specTreat0_Medication&quot;,r.&quot;specTreat0_Psychotherapy&quot;,r.&quot;specTreat0_Other&quot;,r.&quot;specTreat0_Other_TEXT&quot;,r.&quot;medication0&quot;,r.&quot;medication0_Prescription_analges&quot;,r.&quot;medication0_Sedatives_or_Hypnoti&quot;,r.&quot;medication0_Antidepressants&quot;,r.&quot;medication0_Mood_stabilizers&quot;,r.&quot;medication0_Antipsychotics&quot;,r.&quot;medication0_Stimulants&quot;,r.&quot;medication0_Other&quot;,r.&quot;medication0_None&quot;,r.&quot;medication0_Other_TEXT&quot;,r.&quot;tobacco0&quot;,r.&quot;alcohol0&quot;,r.&quot;cannabis0&quot;,r.&quot;therapy0&quot;,r.&quot;nervous0&quot;,r.&quot;worrying0&quot;,r.&quot;muchworry0&quot;,r.&quot;norelax0&quot;,r.&quot;restless0&quot;,r.&quot;irritable0&quot;,r.&quot;afraid0&quot;,r.&quot;SLEq0&quot;,r.&quot;stress1_0&quot;,r.&quot;stress2_0&quot;,r.&quot;stress3_0&quot;,r.&quot;stress4_0&quot;,r.&quot;stress5_0&quot;,r.&quot;stress6_0&quot;,r.&quot;stress7_0&quot;,r.&quot;stress8_0&quot;,r.&quot;stress9_0&quot;,r.&quot;stress11_0&quot;,r.&quot;stress10_0&quot;,r.&quot;stressNone_0&quot;,r.&quot;anxious&quot;,r.&quot;emotions&quot;,r.&quot;worrier&quot;,r.&quot;wrong&quot;,r.&quot;thoughts&quot;,r.&quot;noblue&quot;,r.&quot;giveup&quot;,r.&quot;nodepr&quot;,r.&quot;helpless&quot;,r.&quot;overeat&quot;,r.&quot;hide&quot;,r.&quot;pieces&quot;,r.&quot;inferior&quot;,r.&quot;comfort&quot;,r.&quot;loved&quot;,r.&quot;insulted&quot;,r.&quot;hugged&quot;,r.&quot;pushed&quot;,r.&quot;wellhouse&quot;,r.&quot;drinkers&quot;,r.&quot;violenhouse&quot;,r.&quot;quarrpar&quot;,r.&quot;quarryoupar&quot;,r.&quot;quarrparsib&quot;,r.&quot;quarryousib&quot;,r.&quot;chaotic&quot;,r.&quot;neglected&quot;,r.&quot;mspss1_0&quot;,r.&quot;mspss2_0&quot;,r.&quot;mspss3_0&quot;,r.&quot;mspss4_0&quot;,r.&quot;mspss5_0&quot;,r.&quot;mspss6_0&quot;,r.&quot;mspss7_0&quot;,r.&quot;mspss8_0&quot;,r.&quot;mspss9_0&quot;,r.&quot;mspss10_0&quot;,r.&quot;mspss11_0&quot;,r.&quot;mspss12_0&quot;,r.&quot;MedSchool&quot;,r.&quot;Clerk0&quot;,r.&quot;ResidencyProgram&quot;,r.&quot;Program_Code_Other_Specialty&quot;,r.&quot;Program_Code_Other_Program&quot;,r.&quot;Bdate&quot;,r.&quot;Sex&quot;,r.&quot;GenderIdentity&quot;,r.&quot;GenderIdentity_OtherText&quot;,r.&quot;sexOrientation&quot;,r.&quot;sexOrientation_OtherText&quot;,r.&quot;Marital&quot;,r.&quot;partner_employ&quot;,r.&quot;partnerEmploy_OtherText&quot;,r.&quot;partner_degree&quot;,r.&quot;partnerDegree_OtherText&quot;,r.&quot;partnerPosition&quot;,r.&quot;SigOther0&quot;,r.&quot;Child_number&quot;,r.&quot;Ethnicity&quot;,r.&quot;White&quot;,r.&quot;Black / African American&quot;,r.&quot;Latino / Hispanic&quot;,r.&quot;Asian (e.g. Indian, Chinese)&quot;,r.&quot;Arab / Middle Eastern&quot;,r.&quot;Native American&quot;,r.&quot;Pacific Islander&quot;,r.&quot;Other Ethnicity&quot;,r.&quot;Ethnicity_Other_TEXT&quot;,r.&quot;Asian&quot;,r.&quot;Indian&quot;,r.&quot;Chinese&quot;,r.&quot;Korean&quot;,r.&quot;Vietnamese&quot;,r.&quot;Japanese&quot;,r.&quot;Pakistani&quot;,r.&quot;Filipino&quot;,r.&quot;Thai&quot;,r.&quot;Cambodian&quot;,r.&quot;Indonesian&quot;,r.&quot;Other Asian&quot;,r.&quot;Asian_Other_TEXT&quot;,r.&quot;BirthPlace&quot;,r.&quot;AgeMoveUS&quot;,r.&quot;relevantInfo0&quot;,r.&quot;trackertype&quot;,r.&quot;trackerrequest&quot;,r.&quot;email0&quot;,r.&quot;AddressCurrent0_Street_Address_1&quot;,r.&quot;AddressCurrent0_Street_Address_2&quot;,r.&quot;AddressCurrent0_City&quot;,r.&quot;AddressCurrent0_State&quot;,r.&quot;AddressCurrent0_ZipCode&quot;,r.&quot;AddressCurrent0_ValidDate&quot;,r.&quot;AddressMove0_Street_Address_1&quot;,r.&quot;AddressMove0_Street_Address_2&quot;,r.&quot;AddressMove0_City&quot;,r.&quot;AddressMove0_State&quot;,r.&quot;AddressMove0_ZipCode&quot; from baseline_survey r&#10;where consent_startdate is not null and StartDate0 is not null      --must have a baseline survey&#10;--where StartDate0 is not null        --pulling more data for testing purpose&#10;order by EnrollmentDate desc, consent_startdate desc, StartDate0 desc, study_participant_id">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="1" name="STUDY_PARTICIPANT_ID" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="EMAILADDRESS0" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="ENROLLMENTDATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="CONSENTED" nullable="true" remarks="" size="1" type="CHAR" typeCode="1"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="CONSENT_STARTDATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="CONSENT_ENDDATE" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="STARTDATE0" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="ENDDATE0" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="DEVICEPLATFORM0" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="DEVICENAME0" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="DEVICEOSVERSION0" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="FirstName" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="LastName" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="14" name="hours0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="15" name="sleep24h0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="16" name="sleepAve0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="17" name="DutyDate0" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="18" name="interest0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="19" name="down0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="20" name="asleep0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="21" name="tired0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="22" name="appetite0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="23" name="failure0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="24" name="concentr0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="25" name="activity0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="26" name="suic0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="27" name="manage0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="28" name="depr0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="29" name="deprRelat" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="30" name="deprAge" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="31" name="deprPlace" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="32" name="deprSch" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="33" name="deprSchColl" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="34" name="deprColl" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="35" name="deprCollMed" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="36" name="deprMed" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="37" name="deprTreat0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="38" name="specTreat0" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="39" name="specTreat0_Medication" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="40" name="specTreat0_Psychotherapy" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="41" name="specTreat0_Other" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="42" name="specTreat0_Other_TEXT" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="43" name="medication0" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="44" name="medication0_Prescription_analges" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="45" name="medication0_Sedatives_or_Hypnoti" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="46" name="medication0_Antidepressants" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="47" name="medication0_Mood_stabilizers" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="48" name="medication0_Antipsychotics" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="49" name="medication0_Stimulants" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="50" name="medication0_Other" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="51" name="medication0_None" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="52" name="medication0_Other_TEXT" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="53" name="tobacco0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="54" name="alcohol0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="55" name="cannabis0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="56" name="therapy0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="57" name="nervous0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="58" name="worrying0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="59" name="muchworry0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="60" name="norelax0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="61" name="restless0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="62" name="irritable0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="63" name="afraid0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="64" name="SLEq0" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="65" name="stress1_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="66" name="stress2_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="67" name="stress3_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="68" name="stress4_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="69" name="stress5_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="70" name="stress6_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="71" name="stress7_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="72" name="stress8_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="73" name="stress9_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="74" name="stress11_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="75" name="stress10_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="76" name="stressNone_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="77" name="anxious" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="78" name="emotions" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="79" name="worrier" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="80" name="wrong" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="81" name="thoughts" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="82" name="noblue" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="83" name="giveup" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="84" name="nodepr" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="85" name="helpless" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="86" name="overeat" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="87" name="hide" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="88" name="pieces" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="89" name="inferior" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="90" name="comfort" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="91" name="loved" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="92" name="insulted" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="93" name="hugged" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="94" name="pushed" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="95" name="wellhouse" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="96" name="drinkers" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="97" name="violenhouse" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="98" name="quarrpar" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="99" name="quarryoupar" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="100" name="quarrparsib" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="101" name="quarryousib" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="102" name="chaotic" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="103" name="neglected" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="104" name="mspss1_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="105" name="mspss2_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="106" name="mspss3_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="107" name="mspss4_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="108" name="mspss5_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="109" name="mspss6_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="110" name="mspss7_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="111" name="mspss8_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="112" name="mspss9_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="113" name="mspss10_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="114" name="mspss11_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="115" name="mspss12_0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="116" name="MedSchool" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="117" name="Clerk0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="118" name="ResidencyProgram" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="119" name="Program_Code_Other_Specialty" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="120" name="Program_Code_Other_Program" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="121" name="Bdate" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="122" name="Sex" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="123" name="GenderIdentity" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="124" name="GenderIdentity_OtherText" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="125" name="sexOrientation" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="126" name="sexOrientation_OtherText" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="127" name="Marital" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="128" name="partner_employ" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="129" name="partnerEmploy_OtherText" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="130" name="partner_degree" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="131" name="partnerDegree_OtherText" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="132" name="partnerPosition" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="133" name="SigOther0" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="134" name="Child_number" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="135" name="Ethnicity" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="136" name="White" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="137" name="Black / African American" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="138" name="Latino / Hispanic" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="139" name="Asian (e.g. Indian, Chinese)" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="140" name="Arab / Middle Eastern" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="141" name="Native American" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="142" name="Pacific Islander" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="143" name="Other Ethnicity" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="144" name="Ethnicity_Other_TEXT" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="145" name="Asian" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="146" name="Indian" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="147" name="Chinese" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="148" name="Korean" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="149" name="Vietnamese" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="150" name="Japanese" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="151" name="Pakistani" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="152" name="Filipino" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="153" name="Thai" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="154" name="Cambodian" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="155" name="Indonesian" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="156" name="Other Asian" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="157" name="Asian_Other_TEXT" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="158" name="BirthPlace" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="159" name="AgeMoveUS" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="160" name="relevantInfo0" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="161" name="trackertype" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="162" name="trackerrequest" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="163" name="email0" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="164" name="AddressCurrent0_Street_Address_1" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="165" name="AddressCurrent0_Street_Address_2" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="166" name="AddressCurrent0_City" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="167" name="AddressCurrent0_State" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="168" name="AddressCurrent0_ZipCode" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="169" name="AddressCurrent0_ValidDate" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="170" name="AddressMove0_Street_Address_1" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="171" name="AddressMove0_Street_Address_2" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="172" name="AddressMove0_City" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="173" name="AddressMove0_State" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="174" name="AddressMove0_ZipCode" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="VW_IHS_PARTICIPANT_RECENT_DEVICES" numRows="0" remarks="" schema="IHS_2023" type="VIEW" viewSql="with fitbit as (&#10;&#9;select&#10;&#9;&#9;PARTICIPANTIDENTIFIER&#10;&#9;&#9;,device as Fitbit_model&#10;&#9;&#9;,trunc(RECORD_DATE) as start_date&#10;&#9;&#9;,trunc(RECORD_DATE) as end_date&#10;&#9;&#9;,ROW_NUMBER() OVER (PARTITION BY PARTICIPANTIDENTIFIER ORDER BY RECORD_DATE desc) AS rn&#10;&#9;from FITBITDEVICES&#10;&#9;where type='TRACKER'&#10;&#9;and trunc(RECORD_DATE) &gt;= '01-APR-2023'&#10;),&#10;recent_fitbit as (&#10;&#9;select * from fitbit where rn=1&#10;),&#10;phone as (&#10;&#9;select&#10;&#9;&#9;PARTICIPANTIDENTIFIER&#10;&#9;&#9;,DEVICEPLATFORM as Phone_Type&#10;&#9;&#9;,DEVICENAME as Phone_Name&#10;&#9;&#9;,DEVICEOSVERSION as Phone_Version&#10;&#9;&#9;,trunc(STARTDATE) as start_date&#10;&#9;&#9;,trunc(STARTDATE) as end_date&#10;&#9;&#9;,ROW_NUMBER() OVER (PARTITION BY PARTICIPANTIDENTIFIER ORDER BY STARTDATE desc) AS rn&#10;&#9;from SURVEYRESULTS&#10;&#9;where trunc(STARTDATE) &gt;= '01-APR-2023'&#10;&#9;and DEVICEPLATFORM &lt;&gt; 'WebClient'&#10;),&#10;recent_phone as (&#10;&#9;select * from phone where rn=1&#10;),&#10;apple_watch as (&#10;&#9;select&#10;&#9;&#9;PARTICIPANTIDENTIFIER&#10;&#9;&#9;,Apple_Watch_Model&#10;&#9;&#9;,Apple_Watch_OS&#10;&#9;&#9;,start_date&#10;&#9;&#9;,end_date&#10;&#9;&#9;,ROW_NUMBER() OVER (PARTITION BY PARTICIPANTIDENTIFIER ORDER BY START_DATE desc) AS rn&#10;&#9;from apple_watch_devices&#10;),&#10;recent_apple_watch as (&#10;&#9;select * from apple_watch where rn=1&#10;),&#10;device_data as (&#10;&#9;&#9;select &#10;&#9;&#9;&#9;PARTICIPANTIDENTIFIER&#10;&#9;&#9;&#9;,cast('1' as varchar2(1)) as device_type   --Fitbit&#10;&#9;&#9;&#9;,Fitbit_model as device&#10;&#9;&#9;from recent_fitbit&#10;&#9;union all&#10;&#9;&#9;select &#10;&#9;&#9;&#9;PARTICIPANTIDENTIFIER&#10;&#9;&#9;&#9;,cast('3' as varchar2(1)) as device_type   --phone&#10;&#9;&#9;&#9;,Phone_Name as device&#10;&#9;&#9;from recent_phone&#10;&#9;union all&#10;&#9;&#9;select &#10;&#9;&#9;&#9;PARTICIPANTIDENTIFIER&#10;&#9;&#9;&#9;,cast('2' as varchar2(1)) as device_type   --Apple Watch&#10;&#9;&#9;&#9;,Apple_Watch_Model as device&#10;&#9;&#9;from recent_apple_watch&#10;),&#10;data_pivot as ( &#10;    select * from device_data&#10;&#9;&#9;pivot (max(device)&#10;&#9;&#9;&#9;&#9;for&#9;device_type in (&#10;&#9;&#9;&#9;&#9;&#9;'1' as Fitbit&#10;&#9;&#9;&#9;&#9;&#9;,'2' as apple_watch&#10;&#9;&#9;&#9;&#9;&#9;,'3' as phone&#10;&#9;&#9;&#9;&#9;&#9;)&#10;&#9;&#9;&#9;&#9;)&#10;)&#10;select &#10;&#9;PARTICIPANTIDENTIFIER&#10;&#9;,Fitbit&#10;&#9;,Apple_Watch&#10;&#9;,phone&#10;from data_pivot">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="true" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="FITBIT" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="APPLE_WATCH" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="PHONE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
      </table>
      <table name="VW_IHS_PARTICIPANT_SUMMARY" numRows="0" remarks="" schema="IHS_2023" type="VIEW" viewSql="with all_data as (&#10;&#9;&#9;select &#10;&#9;&#9;&#9;PARTICIPANTIDENTIFIER&#10;&#9;&#9;&#9;,trunc(ENDDATE) as record_date&#10;&#9;&#9;&#9;,'mood' as type&#10;&#9;&#9;from SURVEYRESULTS&#10;&#9;&#9;--where SURVEYKEY = 'FAD06C58965111ECAAB80AFB9334277D'&#9;--modified on 9/1/2022 - no data flows in for this survey&#10;&#9;&#9;--and SURVEYNAME='Daily Mood (2022)'&#10;        where SURVEYKEY = 'B05A2F08001911EA81849494F135FA19'&#9;--modified on 9/1/2022&#10;        --and SURVEYNAME='Daily Mood'&#10;&#9;&#9;and trunc(ENDDATE) &gt; trunc(sysdate) - 90&#10;    /*&#10;&#9;union all&#10;&#9;&#9;select &#10;&#9;&#9;&#9;PARTICIPANTIDENTIFIER&#10;&#9;&#9;&#9;,trunc(ENDDATE) as record_date&#10;&#9;&#9;&#9;,'sep_survey' as type&#10;&#9;&#9;from SURVEYRESULTS&#10;&#9;&#9;where SURVEYKEY in ('26AE599717F111EDAABD0AFB9334277D', 'B4554A674BEA11EDAAC00AFB9334277D')&#10;&#9;&#9;--and SURVEYNAME in ('SeptemberSurvey2022', 'OctoberSurvey2022')&#10;&#9;union all&#10;&#9;&#9;select &#10;&#9;&#9;&#9;PARTICIPANTIDENTIFIER&#10;&#9;&#9;&#9;,trunc(ENDDATE) as record_date&#10;&#9;&#9;&#9;,'dec_survey' as type&#10;&#9;&#9;from SURVEYRESULTS&#10;&#9;&#9;where SURVEYKEY = 'E2CA288718C311EDAABD0AFB9334277D'&#10;&#9;&#9;--and SURVEYNAME = 'DecemberSurvey2022'&#10;&#9;union all&#10;&#9;&#9;select &#10;&#9;&#9;&#9;PARTICIPANTIDENTIFIER&#10;&#9;&#9;&#9;,trunc(ENDDATE) as record_date&#10;&#9;&#9;&#9;,'mar_survey' as type&#10;&#9;&#9;from SURVEYRESULTS&#10;&#9;&#9;where SURVEYKEY = 'F317BDA8A96A11EDAAC40AFB9334277D'&#10;&#9;&#9;--and SURVEYNAME = 'MarchSurvey2022'&#10;    */&#10;&#9;union all&#10;&#9;&#9;select&#10;&#9;&#9;&#9;PARTICIPANTIDENTIFIER&#10;&#9;&#9;&#9;,trunc(ENDDATE) as record_date&#10;&#9;&#9;&#9;,'sleep' as type&#10;&#9;&#9;from FITBITSLEEPLOGS&#10;&#9;&#9;where trunc(ENDDATE) &gt; trunc(sysdate) - 90&#10;&#9;&#9;and DURATION &gt; 0&#10;&#9;union all&#10;&#9;&#9;select&#10;&#9;&#9;&#9;PARTICIPANTIDENTIFIER&#10;&#9;&#9;&#9;,trunc(RECORD_DATE) as record_date&#10;&#9;&#9;&#9;,'step' as type&#10;&#9;&#9;&#9;--,TRACKERSTEPS as steps&#10;&#9;&#9;from FITBITDAILYDATA&#10;&#9;&#9;where TRACKERSTEPS &gt; 0&#10;&#9;&#9;and trunc(RECORD_DATE) &gt; trunc(sysdate) - 90&#10;&#9;union all&#10;&#9;&#9;select &#10;&#9;&#9;&#9;PARTICIPANTIDENTIFIER&#10;&#9;&#9;&#9;,record_date&#10;&#9;&#9;&#9;,type&#10;&#9;&#9;from healthkit_dailydata&#10;),&#10;PARTICIPANTS as (&#10;&#9;select &#10;&#9;&#9;p.ParticipantIdentifier&#10;&#9;&#9;,p.SECONDARYIDENTIFIER as study_participant_id&#10;&#9;&#9;--------&#10;&#9;&#9;,jt.Email_Only&#10;&#9;from STUDYPARTICIPANTS p,&#10;&#9;JSON_TABLE(p.CUSTOMFIELDS, '$'&#10;&#9;&#9;&#9;   COLUMNS (&#10;&#9;&#9;&#9;&#9;&#9;&#9;Email_Only VARCHAR2(100) PATH '$.Email_Only'&#10;&#9;&#9;&#9;&#9;&#9;&#9;)) jt&#10;),&#10;data_with_ids as (&#10;&#9;select &#10;&#9;&#9;p.ParticipantIdentifier&#10;        ,p.study_participant_id&#10;&#9;&#9;,p.Email_Only&#10;        ,a.record_date&#10;        ,a.type&#10;    from PARTICIPANTS p&#10;    left join all_data a on p.PARTICIPANTIDENTIFIER = a.PARTICIPANTIDENTIFIER&#10;    --where p.SECONDARYIDENTIFIER &gt;= 700000   --everyone in the STUDYPARTICIPANTS table&#10;),&#10;data_pivot as ( &#10;    select * from data_with_ids&#10;&#9;&#9;pivot (&#10;&#9;&#9;&#9;&#9;max(record_date) latest&#10;&#9;&#9;&#9;&#9;,count(distinct case when record_date &gt; trunc(sysdate) - 30 then record_date end) count_30&#10;&#9;&#9;&#9;&#9;,count(distinct record_date) count_90&#10;&#9;&#9;&#9;&#9;for&#9;type in (&#10;&#9;&#9;&#9;&#9;&#9;'mood' as mood&#10;&#9;&#9;&#9;&#9;&#9;--,'sep_survey' as sep_survey&#10;&#9;&#9;&#9;&#9;&#9;--,'dec_survey' as dec_survey&#10;&#9;&#9;&#9;&#9;&#9;--,'mar_survey' as mar_survey&#10;&#9;&#9;&#9;&#9;&#9;,'sleep' as sleep&#10;&#9;&#9;&#9;&#9;&#9;,'step' as step&#10;&#9;&#9;&#9;&#9;&#9;)&#10;&#9;&#9;&#9;&#9;)&#10;)&#10;select &#10;&#9;s.PARTICIPANTIDENTIFIER&#10;&#9;,study_participant_id&#10;&#9;,Fitbit&#10;&#9;,Apple_Watch&#10;&#9;,phone&#10;&#9;,step_latest&#10;&#9;,sleep_latest&#10;&#9;,mood_latest&#10;&#9;,step_count_30&#10;&#9;,step_count_90&#10;&#9;,sleep_count_30&#10;&#9;,sleep_count_90&#10;&#9;,mood_count_30&#10;&#9;,mood_count_90&#10;&#9;--,sep_survey_latest as Q1_survey_completion&#10;&#9;--,dec_survey_latest as Q2_survey_completion&#10;&#9;--,mar_survey_latest as Q3_survey_completion&#10;from data_pivot s&#10;left join vw_IHS_PARTICIPANT_RECENT_DEVICES d on s.PARTICIPANTIDENTIFIER = d.PARTICIPANTIDENTIFIER&#10;order by study_participant_id asc">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="STUDY_PARTICIPANT_ID" nullable="true" remarks="" size="10" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="FITBIT" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="APPLE_WATCH" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="PHONE" nullable="true" remarks="" size="200" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="STEP_LATEST" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="SLEEP_LATEST" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="MOOD_LATEST" nullable="true" remarks="" size="7" type="DATE" typeCode="93"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="8" name="STEP_COUNT_30" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="9" name="STEP_COUNT_90" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="10" name="SLEEP_COUNT_30" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="11" name="SLEEP_COUNT_90" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="12" name="MOOD_COUNT_30" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="-127" id="13" name="MOOD_COUNT_90" nullable="true" remarks="" size="0" type="NUMBER" typeCode="2"/>
      </table>
      <table name="VW_IHS_RECRUITMENT" numRows="0" remarks="" schema="IHS_2023" type="VIEW" viewSql="with baseline_SURVEYRESULTS as (&#10;    select &#10;        SURVEYRESULTKEY&#10;        ,PARTICIPANTIDENTIFIER&#10;        ,STARTDATE&#10;        ,ENDDATE&#10;        ,ROW_NUMBER() OVER (PARTITION BY PARTICIPANTIDENTIFIER ORDER BY STARTDATE desc) AS rn&#10;    from SURVEYRESULTS&#10;    where SURVEYKEY = '8CD927C0CFD111ECAABA0AFB9334277D'&#10;    and SURVEYNAME='Baseline Survey 2023'&#10;),&#10;latest_baseline_survey as (&#10;&#9;select &#10;&#9;&#9;qr.SURVEYRESULTKEY&#10;&#9;&#9;,qr.PARTICIPANTIDENTIFIER&#10;&#9;&#9;,qr.RESULTIDENTIFIER&#10;&#9;&#9;,qr.ANSWERS&#10;&#9;&#9;,sr.STARTDATE&#10;&#9;&#9;,sr.ENDDATE&#10;&#9;from SURVEYQUESTIONRESULTS qr&#10;&#9;join baseline_SURVEYRESULTS sr on qr.SURVEYRESULTKEY = sr.SURVEYRESULTKEY and qr.PARTICIPANTIDENTIFIER = sr.PARTICIPANTIDENTIFIER&#10;&#9;where sr.rn = 1   --pick the most recent baseline survey&#10;),&#10;baseline_survey_pivot as (&#10;&#9;select * from latest_baseline_survey&#10;&#9;&#9;pivot ( &#10;&#9;&#9;&#9;  max(ANSWERS) for RESULTIDENTIFIER in ( &#10;                --'fitbit' &quot;fitbit&quot; --changed in IHS 2023&#10;                'trackertype' &quot;trackertype&quot;&#10;                ,'trackerrequest' &quot;trackerrequest&quot;&#10;&#9;&#9;&#9;&#9;,'email0' &quot;email0&quot;&#10;&#9;&#9;&#9;&#9;--,'AddressCurrent0' &quot;AddressCurrent0&quot;&#10;&#9;&#9;&#9;&#9;--,'AddressCurrent0_Name' &quot;AddressCurrent0_Name&quot;  --not in the Baseline Survey 2022&#10;&#9;&#9;&#9;&#9;,'AddressCurrent0_Street_Address_1' &quot;AddressCurrent0_Street_Address_1&quot;&#10;&#9;&#9;&#9;&#9;,'AddressCurrent0_Street_Address_2' &quot;AddressCurrent0_Street_Address_2&quot;&#10;&#9;&#9;&#9;&#9;,'AddressCurrent0_City' &quot;AddressCurrent0_City&quot;&#10;&#9;&#9;&#9;&#9;,'AddressCurrent0_State' &quot;AddressCurrent0_State&quot;&#10;&#9;&#9;&#9;&#9;,'AddressCurrent0_ZipCode' &quot;AddressCurrent0_ZipCode&quot;&#10;&#9;&#9;&#9;&#9;,'AddressCurrent0_ValidDate' &quot;AddressCurrent0_ValidDate&quot;&#10;&#9;&#9;&#9;&#9;--,'AddressMove0' &quot;AddressMove0&quot;&#10;&#9;&#9;&#9;&#9;,'AddressMove0_Street_Address_1' &quot;AddressMove0_Street_Address_1&quot;&#10;&#9;&#9;&#9;&#9;,'AddressMove0_Street_Address_2' &quot;AddressMove0_Street_Address_2&quot;&#10;&#9;&#9;&#9;&#9;,'AddressMove0_City' &quot;AddressMove0_City&quot;&#10;&#9;&#9;&#9;&#9;,'AddressMove0_State' &quot;AddressMove0_State&quot;&#10;&#9;&#9;&#9;&#9;,'AddressMove0_ZipCode' &quot;AddressMove0_ZipCode&quot;&#10;&#9;&#9;&#9;&#9;,'interest0' &quot;interest0&quot;&#10;&#9;&#9;&#9;&#9;,'down0' &quot;down0&quot;&#10;&#9;&#9;&#9;&#9;,'asleep0' &quot;asleep0&quot;&#10;&#9;&#9;&#9;&#9;,'tired0' &quot;tired0&quot;&#10;&#9;&#9;&#9;&#9;,'appetite0' &quot;appetite0&quot;&#10;&#9;&#9;&#9;&#9;,'failure0' &quot;failure0&quot;&#10;&#9;&#9;&#9;&#9;,'concentr0' &quot;concentr0&quot;&#10;&#9;&#9;&#9;&#9;,'activity0' &quot;activity0&quot;&#10;&#9;&#9;&#9;&#9;,'suic0' &quot;suic0&quot;&#10;&#9;&#9;&#9;&#9;--,'ResidencyInstitution' &quot;ResidencyInstitution&quot;  --no longer in the Baseline Survey 2022&#10;&#9;&#9;&#9;&#9;--,'specialty' &quot;specialty&quot;&#10;&#9;&#9;&#9;&#9;)&#10;&#9;&#9;&#9;)&#10;),&#10;PARTICIPANTS as (&#10;&#9;select &#10;&#9;&#9;p.ParticipantIdentifier&#10;&#9;&#9;,p.SECONDARYIDENTIFIER as study_participant_id&#10;&#9;&#9;,p.FirstName&#10;&#9;&#9;,p.LastName&#10;&#9;&#9;,p.EmailAddress&#10;&#9;&#9;,p.EnrollmentDate&#10;&#9;&#9;--------&#10;&#9;&#9;,jt.Email_Only&#10;&#9;&#9;,jt.MDH_RegistrationDate&#10;&#9;&#9;,jt.MDH_LoginDate&#10;&#9;&#9;--------&#10;&#9;&#9;--,jt.ResidencyInstitution&#10;&#9;&#9;,jt.Institution&#10;&#9;&#9;,jt.Program_Code&#10;&#9;&#9;,jt.Wave&#10;&#9;&#9;--------&#10;&#9;&#9;,jt.Specialty&#10;&#9;&#9;,jt.Affiliation&#10;&#9;&#9;,jt.MedicalSchool&#10;&#9;&#9;,jt.RecruitmentInstitution&#10;&#9;&#9;,jt.RecruitmentSource&#10;&#9;&#9;,jt.Consented_Date&#10;&#9;from STUDYPARTICIPANTS p,&#10;&#9;JSON_TABLE(p.CUSTOMFIELDS, '$'&#10;&#9;&#9;&#9;   COLUMNS (&#10;&#9;&#9;&#9;&#9;&#9;&#9;Email_Only VARCHAR2(100) PATH '$.Email_Only'&#10;&#9;&#9;&#9;&#9;&#9;&#9;,MDH_RegistrationDate VARCHAR2(20) PATH '$.MDH_RegistrationDate'&#10;&#9;&#9;&#9;&#9;&#9;&#9;,MDH_LoginDate VARCHAR2(20) PATH '$.MDH_LoginDate'&#10;&#9;&#9;&#9;&#9;&#9;&#9;--,ResidencyInstitution VARCHAR2(100) PATH '$.ResidencyInstitution'&#10;&#9;&#9;&#9;&#9;&#9;&#9;,Institution VARCHAR2(100) PATH '$.Institution'&#10;&#9;&#9;&#9;&#9;&#9;&#9;,Program_Code VARCHAR2(100) PATH '$.Program_Code'&#10;&#9;&#9;&#9;&#9;&#9;&#9;,Wave VARCHAR2(10) PATH '$.Wave'&#10;&#9;&#9;&#9;&#9;&#9;&#9;,Specialty VARCHAR2(50) PATH '$.Specialty'&#10;&#9;&#9;&#9;&#9;&#9;&#9;,Affiliation VARCHAR2(100) PATH '$.Affiliation'&#10;&#9;&#9;&#9;&#9;&#9;&#9;,MedicalSchool VARCHAR2(100) PATH '$.MedicalSchool'&#10;&#9;&#9;&#9;&#9;&#9;&#9;,RecruitmentInstitution VARCHAR2(100) PATH '$.RecruitmentInstitution'&#10;&#9;&#9;&#9;&#9;&#9;&#9;,RecruitmentSource VARCHAR2(100) PATH '$.RecruitmentSource'&#10;&#9;&#9;&#9;&#9;&#9;&#9;,Consented_Date VARCHAR2(50) PATH '$.Consented_Date'&#10;&#9;&#9;&#9;&#9;&#9;&#9;)) jt&#10;),&#10;recruitment as (&#10;&#9;select &#10;&#9;&#9;p.ParticipantIdentifier&#10;&#9;&#9;,p.study_participant_id&#10;&#9;&#9;,p.FirstName&#10;&#9;&#9;,p.LastName&#10;&#9;&#9;,p.EmailAddress&#10;&#9;&#9;,to_char(p.EnrollmentDate, 'yyyy-mm-dd') as EnrollmentDate&#10;&#9;&#9;/*&#10;&#9;&#9;--,c.CONSENTED&#10;&#9;&#9;--,case when c.type='Consent' then 'Y' end as CONSENTED --modified on 4/13/2022&#10;&#9;&#9;,case when c.ParticipantIdentifier is not null then 'Y' end as CONSENTED --modified on 4/13/2022&#10;&#9;&#9;,to_char(c.startdate, 'yyyy-mm-dd') as consent_startdate&#10;&#9;&#9;,to_char(c.enddate, 'yyyy-mm-dd') as consent_enddate&#10;&#9;&#9;*/&#10;&#9;&#9;,case when p.Consented_Date is not null then 'Y' end as CONSENTED --modified on 4/13/2022&#10;&#9;&#9;,substr(p.Consented_Date, 1, 10) as  consent_startdate&#10;&#9;&#9;,substr(p.Consented_Date, 1, 10) as  consent_enddate&#10;&#9;&#9;,to_char(s.StartDate, 'yyyy-mm-dd') as Survey_StartDate&#10;&#9;&#9;,to_char(s.EndDate, 'yyyy-mm-dd') as Survey_EndDate&#10;&#9;&#9;--------&#10;&#9;&#9;,p.Email_Only&#10;&#9;&#9;,p.MDH_RegistrationDate&#10;&#9;&#9;,p.MDH_LoginDate&#10;&#9;&#9;--------&#10;&#9;&#9;--,s.&quot;fitbit&quot; --changed in IHS 2023&#10;        ,s.&quot;trackertype&quot;&#10;        ,s.&quot;trackerrequest&quot;&#10;&#9;&#9;,s.&quot;email0&quot;&#10;&#9;&#9;--,s.&quot;AddressCurrent0&quot;&#10;&#9;&#9;--,s.&quot;AddressCurrent0_Name&quot;&#10;&#9;&#9;,s.&quot;AddressCurrent0_Street_Address_1&quot;&#10;&#9;&#9;,s.&quot;AddressCurrent0_Street_Address_2&quot;&#10;&#9;&#9;,s.&quot;AddressCurrent0_City&quot;&#10;&#9;&#9;,s.&quot;AddressCurrent0_State&quot;&#10;&#9;&#9;,s.&quot;AddressCurrent0_ZipCode&quot;&#10;&#9;&#9;,s.&quot;AddressCurrent0_ValidDate&quot;&#10;&#9;&#9;--,s.&quot;AddressMove0&quot;&#10;&#9;&#9;,s.&quot;AddressMove0_Street_Address_1&quot;&#10;&#9;&#9;,s.&quot;AddressMove0_Street_Address_2&quot;&#10;&#9;&#9;,s.&quot;AddressMove0_City&quot;&#10;&#9;&#9;,s.&quot;AddressMove0_State&quot;&#10;&#9;&#9;,s.&quot;AddressMove0_ZipCode&quot;&#10;&#9;&#9;,s.&quot;interest0&quot;&#10;&#9;&#9;,s.&quot;down0&quot;&#10;&#9;&#9;,s.&quot;asleep0&quot;&#10;&#9;&#9;,s.&quot;tired0&quot;&#10;&#9;&#9;,s.&quot;appetite0&quot;&#10;&#9;&#9;,s.&quot;failure0&quot;&#10;&#9;&#9;,s.&quot;concentr0&quot;&#10;&#9;&#9;,s.&quot;activity0&quot;&#10;&#9;&#9;,s.&quot;suic0&quot;&#10;&#9;&#9;--------&#10;&#9;&#9;--,p.ResidencyInstitution&#10;&#9;&#9;,p.Institution&#10;&#9;&#9;,p.Program_Code&#10;&#9;&#9;,p.Wave&#10;&#9;&#9;--------&#10;&#9;&#9;--,s.&quot;ResidencyInstitution&quot;&#10;&#9;&#9;--,s.&quot;specialty&quot;&#10;&#9;&#9;--------&#10;&#9;&#9;,p.Specialty&#10;&#9;&#9;,p.Affiliation&#10;&#9;&#9;,p.MedicalSchool&#10;&#9;&#9;,p.RecruitmentInstitution&#10;&#9;&#9;,p.RecruitmentSource&#10;&#9;&#9;--------&#10;&#9;from PARTICIPANTS p&#10;&#9;--left join SURVEYCONSENTSIGNATURERESULTS c on p.ParticipantIdentifier = c.ParticipantIdentifier&#10;&#9;--left join SURVEYRESULTS c on p.ParticipantIdentifier = c.ParticipantIdentifier &#10;&#9;--&#9;&#9;and (c.type = 'Consent' or c.surveyname = 'IHSConsent2022') --modified on 4/13/2022&#10;&#9;left join baseline_survey_pivot s on p.ParticipantIdentifier = s.ParticipantIdentifier&#10;)&#10;select distinct r.&quot;PARTICIPANTIDENTIFIER&quot;,r.&quot;STUDY_PARTICIPANT_ID&quot;,r.&quot;FIRSTNAME&quot;,r.&quot;LASTNAME&quot;,r.&quot;EMAILADDRESS&quot;,r.&quot;ENROLLMENTDATE&quot;,r.&quot;CONSENTED&quot;,r.&quot;CONSENT_STARTDATE&quot;,r.&quot;CONSENT_ENDDATE&quot;,r.&quot;SURVEY_STARTDATE&quot;,r.&quot;SURVEY_ENDDATE&quot;,r.&quot;EMAIL_ONLY&quot;,r.&quot;MDH_REGISTRATIONDATE&quot;,r.&quot;MDH_LOGINDATE&quot;,r.&quot;trackertype&quot;,r.&quot;trackerrequest&quot;,r.&quot;email0&quot;,r.&quot;AddressCurrent0_Street_Address_1&quot;,r.&quot;AddressCurrent0_Street_Address_2&quot;,r.&quot;AddressCurrent0_City&quot;,r.&quot;AddressCurrent0_State&quot;,r.&quot;AddressCurrent0_ZipCode&quot;,r.&quot;AddressCurrent0_ValidDate&quot;,r.&quot;AddressMove0_Street_Address_1&quot;,r.&quot;AddressMove0_Street_Address_2&quot;,r.&quot;AddressMove0_City&quot;,r.&quot;AddressMove0_State&quot;,r.&quot;AddressMove0_ZipCode&quot;,r.&quot;interest0&quot;,r.&quot;down0&quot;,r.&quot;asleep0&quot;,r.&quot;tired0&quot;,r.&quot;appetite0&quot;,r.&quot;failure0&quot;,r.&quot;concentr0&quot;,r.&quot;activity0&quot;,r.&quot;suic0&quot;,r.&quot;INSTITUTION&quot;,r.&quot;PROGRAM_CODE&quot;,r.&quot;WAVE&quot;,r.&quot;SPECIALTY&quot;,r.&quot;AFFILIATION&quot;,r.&quot;MEDICALSCHOOL&quot;,r.&quot;RECRUITMENTINSTITUTION&quot;,r.&quot;RECRUITMENTSOURCE&quot; from recruitment r&#10;where consent_startdate is not null or Survey_StartDate is not null&#10;order by EnrollmentDate desc, consent_startdate desc, Survey_StartDate desc, study_participant_id">
         <column autoUpdated="false" defaultValue="null" digits="0" id="0" name="PARTICIPANTIDENTIFIER" nullable="false" remarks="" size="15" type="VARCHAR2" typeCode="12">
            <parent column="PARTICIPANTIDENTIFIER" foreignKey="Implied Constraint" implied="true" onDeleteCascade="false" schema="IHS_2023" table="STUDYPARTICIPANTS"/>
         </column>
         <column autoUpdated="false" defaultValue="null" digits="0" id="1" name="STUDY_PARTICIPANT_ID" nullable="true" remarks="" size="10" type="NUMBER" typeCode="2"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="2" name="FIRSTNAME" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="3" name="LASTNAME" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="4" name="EMAILADDRESS" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="5" name="ENROLLMENTDATE" nullable="true" remarks="" size="10" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="6" name="CONSENTED" nullable="true" remarks="" size="1" type="CHAR" typeCode="1"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="7" name="CONSENT_STARTDATE" nullable="true" remarks="" size="40" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="8" name="CONSENT_ENDDATE" nullable="true" remarks="" size="40" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="9" name="SURVEY_STARTDATE" nullable="true" remarks="" size="10" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="10" name="SURVEY_ENDDATE" nullable="true" remarks="" size="10" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="11" name="EMAIL_ONLY" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="12" name="MDH_REGISTRATIONDATE" nullable="true" remarks="" size="20" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="13" name="MDH_LOGINDATE" nullable="true" remarks="" size="20" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="14" name="trackertype" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="15" name="trackerrequest" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="16" name="email0" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="17" name="AddressCurrent0_Street_Address_1" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="18" name="AddressCurrent0_Street_Address_2" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="19" name="AddressCurrent0_City" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="20" name="AddressCurrent0_State" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="21" name="AddressCurrent0_ZipCode" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="22" name="AddressCurrent0_ValidDate" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="23" name="AddressMove0_Street_Address_1" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="24" name="AddressMove0_Street_Address_2" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="25" name="AddressMove0_City" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="26" name="AddressMove0_State" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="27" name="AddressMove0_ZipCode" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="28" name="interest0" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="29" name="down0" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="30" name="asleep0" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="31" name="tired0" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="32" name="appetite0" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="33" name="failure0" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="34" name="concentr0" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="35" name="activity0" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="36" name="suic0" nullable="true" remarks="" size="4000" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="37" name="INSTITUTION" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="38" name="PROGRAM_CODE" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="39" name="WAVE" nullable="true" remarks="" size="10" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="40" name="SPECIALTY" nullable="true" remarks="" size="50" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="41" name="AFFILIATION" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="42" name="MEDICALSCHOOL" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="43" name="RECRUITMENTINSTITUTION" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
         <column autoUpdated="false" defaultValue="null" digits="0" id="44" name="RECRUITMENTSOURCE" nullable="true" remarks="" size="100" type="VARCHAR2" typeCode="12"/>
      </table>
   </tables>
   <routines>
      <routine deterministic="false" name="IHS_2023.FN_GUID_TO_RAW" type="FUNCTION">
         <comment/>
         <definition language="PL/SQL"><![CDATA[function fn_guid_to_raw ( guid in varchar2 ) return raw
-- use AUTHID CURRENT_USER to execute with the privileges and 
-- schema context of the calling user
AUTHID CURRENT_USER AS

    hex varchar2(32);
begin

    hex := substr(guid, 7, 2)
		|| substr(guid, 5, 2)
		|| substr(guid, 3, 2)
		|| substr(guid, 1, 2)
		--
		|| substr(guid, 12, 2)
		|| substr(guid, 10, 2)
		--
		|| substr(guid, 17, 2)
		|| substr(guid, 15, 2)
		-- 
		|| substr(guid, 20, 2)
		|| substr(guid, 22, 2)
		-- 
		|| substr(guid, 25, 12);

    return hextoraw(hex);

end;]]></definition>
         <parameters/>
      </routine>
      <routine deterministic="false" name="IHS_2023.FN_RAW_TO_GUID" type="FUNCTION">
         <comment/>
         <definition language="PL/SQL"><![CDATA[function fn_raw_to_guid( raw_guid in raw ) return varchar2
-- use AUTHID CURRENT_USER to execute with the privileges and 
-- schema context of the calling user
AUTHID CURRENT_USER AS

	hex varchar2(32);
begin

	hex := rawtohex(raw_guid);

	return lower(substr(hex, 7, 2) 
		|| substr(hex, 5, 2) 
		|| substr(hex, 3, 2) 
		|| substr(hex, 1, 2) 
		|| '-'
		|| substr(hex, 11, 2) 
		|| substr(hex, 9, 2) 
		|| '-'
		|| substr(hex, 15, 2) 
		|| substr(hex, 13, 2) 
		|| '-'
		|| substr(hex, 17, 4) 
		|| '-'
		|| substr(hex, 21, 12));

end;]]></definition>
         <parameters/>
      </routine>
      <routine deterministic="false" name="IHS_2023.PR_BATCH_UPDATE_IHS_DATA" type="PROCEDURE">
         <comment/>
         <definition language="PL/SQL"><![CDATA[procedure pr_batch_update_IHS_data (program_start_date varchar2 := '2023-04-01')
-- use AUTHID CURRENT_USER to execute with the privileges and
-- schema context of the calling user
AUTHID CURRENT_USER AS

begin
	pr_populate_IHS_data(program_start_date);
	pr_populate_IHS_HEALTHKITSAMPLES_data(program_start_date);	--4/18/2022: separated from pr_populate_IHS_data to handle unique constraint vaiolations
	pr_populate_IHS_AnalyticsEvents_data;	--added on 4/5/2022 to handle 6 additional AnalyticsEvents data files, no input parameter
	pr_populate_IHS_AnalyticsEvents_Email;	--added on 6/15/2022 to handle 6 additional detailed email AnalyticsEvents data files, no input parameter
	pr_FITBIT_intraday_activities(program_start_date);
	pr_INSERT_FITBIT_intraday_hrv(program_start_date);   --added on 11/2/2022
    pr_populate_IHS_Garmin_data;   --added on 5/25/2023

    pr_recent_Healthkit_dailydata; --program_start_date is not varchar2, instead it is DATE with default='01-APR-2023'
	pr_update_apple_watch_devices(program_start_date); 
	pr_daily_wearable_datacounts(program_start_date);	--4/25/2022: added to track daily wearable data counts (DAILY_WEARABLE_DATACOUNTS)

    PR_INSERT_SK_DATA;  --new code for IHS 2023, turned on 6/15/2023
    pr_update_LOAD_LOG; --new code for IHS 2023
    pr_IHS_data_refresh_log(program_start_date); --new code for IHS 2023
end;]]></definition>
         <parameters/>
      </routine>
      <routine deterministic="false" name="IHS_2023.PR_CLEAN_STG_TABLES" type="PROCEDURE">
         <comment/>
         <definition language="PL/SQL"><![CDATA[procedure pr_clean_stg_tables
-- use AUTHID CURRENT_USER to execute with the privileges and 
-- schema context of the calling user
AUTHID CURRENT_USER AS

begin

		--empty all the staging tables to handle no header and no record incoming data files

		EXECUTE IMMEDIATE 'truncate table STG_ANALYTICSEVENTS_EMAILNOTIFICATIONSENT';
		EXECUTE IMMEDIATE 'truncate table STG_ANALYTICSEVENTS_NOTIFICATIONSENT';
		EXECUTE IMMEDIATE 'truncate table STG_ANALYTICSEVENTS_PUSHNOTIFICATIONOPENED';
		EXECUTE IMMEDIATE 'truncate table STG_ANALYTICSEVENTS_PUSHNOTIFICATIONRECEIVED';
		EXECUTE IMMEDIATE 'truncate table STG_ANALYTICSEVENTS_PUSHNOTIFICATIONSENT';
		EXECUTE IMMEDIATE 'truncate table STG_ANALYTICSEVENTS_SURVEYSTEPVIEWED';
		EXECUTE IMMEDIATE 'truncate table STG_AUXILIARYDATA';
		EXECUTE IMMEDIATE 'truncate table STG_COMPETITIONS';
		EXECUTE IMMEDIATE 'truncate table STG_FITBITACTIVITYLOGS';
		EXECUTE IMMEDIATE 'truncate table STG_FITBITDAILYDATA';
		EXECUTE IMMEDIATE 'truncate table STG_FITBITDEVICES';
		EXECUTE IMMEDIATE 'truncate table STG_FITBITRESTINGHEARTRATES';
		EXECUTE IMMEDIATE 'truncate table STG_FITBITSLEEPLOGDETAILS';
		EXECUTE IMMEDIATE 'truncate table STG_FITBITSLEEPLOGS';
		EXECUTE IMMEDIATE 'truncate table STG_FITBIT_HEARTRATE';
		EXECUTE IMMEDIATE 'truncate table STG_FITBIT_STEPS';
		EXECUTE IMMEDIATE 'truncate table STG_HEALTHKITACTIVITYSUMMARIES';
		EXECUTE IMMEDIATE 'truncate table STG_HEALTHKITSAMPLES_APPLEEXERCISETIME';
		EXECUTE IMMEDIATE 'truncate table STG_HEALTHKITSAMPLES_APPLEEXERCISETIME_DELETED';
		EXECUTE IMMEDIATE 'truncate table STG_HEALTHKITSAMPLES_HEARTRATE';
		EXECUTE IMMEDIATE 'truncate table STG_HEALTHKITSAMPLES_HEARTRATEVARIABILITY';
		EXECUTE IMMEDIATE 'truncate table STG_HEALTHKITSAMPLES_HEARTRATEVARIABILITY_DELETED';
		EXECUTE IMMEDIATE 'truncate table STG_HEALTHKITSAMPLES_HEARTRATE_DELETED';
		EXECUTE IMMEDIATE 'truncate table STG_HEALTHKITSAMPLES_RESTINGHEARTRATE';
		EXECUTE IMMEDIATE 'truncate table STG_HEALTHKITSAMPLES_RESTINGHEARTRATE_DELETED';
		EXECUTE IMMEDIATE 'truncate table STG_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL';
		EXECUTE IMMEDIATE 'truncate table STG_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_DELETED';
		EXECUTE IMMEDIATE 'truncate table STG_HEALTHKITSAMPLES_STEPS';
		EXECUTE IMMEDIATE 'truncate table STG_HEALTHKITSAMPLES_STEPS_DELETED';
		EXECUTE IMMEDIATE 'truncate table STG_HEALTHKITSTATISTICS_DAILYSTEPS';
		EXECUTE IMMEDIATE 'truncate table STG_MANIFEST';
		EXECUTE IMMEDIATE 'truncate table STG_NOTIFICATIONS';
		EXECUTE IMMEDIATE 'truncate table STG_STUDYPARTICIPANTS';
		EXECUTE IMMEDIATE 'truncate table STG_SURVEYCONSENTSIGNATURERESULTS';
		EXECUTE IMMEDIATE 'truncate table STG_SURVEYDEFINITIONS';
		EXECUTE IMMEDIATE 'truncate table STG_SURVEYQUESTIONRESULTS';
		EXECUTE IMMEDIATE 'truncate table STG_SURVEYRESULTS';
		EXECUTE IMMEDIATE 'truncate table STG_SURVEYSTEPRESULTS';
		EXECUTE IMMEDIATE 'truncate table STG_SURVEYTASKS';

end;]]></definition>
         <parameters/>
      </routine>
      <routine deterministic="false" name="IHS_2023.PR_DAILY_WEARABLE_DATACOUNTS" type="PROCEDURE">
         <comment/>
         <definition language="PL/SQL"><![CDATA[procedure pr_daily_wearable_datacounts (program_start_date varchar2 := '2023-04-01')
-- use AUTHID CURRENT_USER to execute with the privileges and 
-- schema context of the calling user
AUTHID CURRENT_USER AS

	CNT_FITBIT_DAILYSTEP integer;
	CNT_APPLEWATCH_DAILYSTEP integer;
	CNT_FITBIT_RESTINGHEARTRATE integer;
	CNT_APPLEWATCH_RESTINGHEARTRATE integer;
	CNT_FITBIT_INTRADAYSTEPS integer;
	CNT_APPLEWATCH_INTRADAYSTEPS integer;
	CNT_FITBIT_INTRADAYHEARTRATE integer;
	CNT_APPLEWATCH_INTRADAYHEARTRATE integer;
	CNT_FITBIT_DAILYACTIVITY integer;
	CNT_FITBIT_INTRADAYSLEEP integer;
	CNT_FITBIT_DAILYSLEEP integer;
	CNT_HEALTHKIT_INTRADAYSLEEP integer;
	CNT_HEALTHKIT_DAILYSLEEP integer;
	CNT_HEALTHKIT_HEARTRATEVARIABILITY integer;
	CNT_HEALTHKIT_ACTIVITY integer;

	record_today number(1);

begin

	--1: CNT_Fitbit_dailystep
	select count(distinct s.ParticipantIdentifier) into CNT_Fitbit_dailystep
	from STUDYPARTICIPANTS p
	join stg_FITBITDAILYDATA s on p.ParticipantIdentifier = s.ParticipantIdentifier
    where s.TRACKERSTEPS > 0
	and substr(s."DATE",1,10) >= program_start_date
	;

	--2: CNT_Applewatch_dailystep
	select count(distinct s.ParticipantIdentifier) into CNT_Applewatch_dailystep
	from STUDYPARTICIPANTS p
	join stg_HEALTHKITSTATISTICS_DAILYSTEPS s on p.ParticipantIdentifier = s.ParticipantIdentifier
	where substr(s.STARTDATE,1,10) >= program_start_date
	;

	--3: CNT_Fitbit_RestingHeartRate
	select count(distinct s.ParticipantIdentifier) into CNT_Fitbit_RestingHeartRate
	from STUDYPARTICIPANTS p
	join stg_FITBITRESTINGHEARTRATES s on p.ParticipantIdentifier = s.ParticipantIdentifier
	where substr(s."DATE",1,10) >= program_start_date
	;

	--4: CNT_Applewatch_RestingHeartRate
	select count(distinct s.ParticipantIdentifier) into CNT_Applewatch_RestingHeartRate
	from STUDYPARTICIPANTS p
	join stg_HEALTHKITSAMPLES_RESTINGHEARTRATE s on p.ParticipantIdentifier = s.ParticipantIdentifier
	where substr(s.STARTDATE,1,10) >= program_start_date
	;

	--5: CNT_Fitbit_IntradaySteps
	select count(distinct s.ParticipantIdentifier) into CNT_Fitbit_IntradaySteps
	from STUDYPARTICIPANTS p
	join stg_FITBIT_STEPS s on p.ParticipantIdentifier = s.ParticipantIdentifier
	where s.RECORD_DATE >= program_start_date
	and s.record_time is not null
	;

	--6: CNT_Applewatch_IntradaySteps
	select count(distinct s.ParticipantIdentifier) into CNT_Applewatch_IntradaySteps
	from STUDYPARTICIPANTS p
	join stg_HEALTHKITSAMPLES_STEPS s on p.ParticipantIdentifier = s.ParticipantIdentifier
    where s.DeviceModel = 'Watch'
	and substr(s."DATE",1,10) >= program_start_date
	;

	--7: CNT_Fitbit_IntradayHeartRate
	select count(distinct s.ParticipantIdentifier) into CNT_Fitbit_IntradayHeartRate
	from STUDYPARTICIPANTS p
	join stg_FITBIT_HEARTRATE s on p.ParticipantIdentifier = s.ParticipantIdentifier
	where s.RECORD_DATE >= program_start_date
	and s.record_time is not null
	;

	--8: CNT_Applewatch_IntradayHeartRate
	select count(distinct s.ParticipantIdentifier) into CNT_Applewatch_IntradayHeartRate
	from STUDYPARTICIPANTS p
	join stg_HEALTHKITSAMPLES_HEARTRATE s on p.ParticipantIdentifier = s.ParticipantIdentifier
	where s.DEVICEMODEL = 'Watch'
	and substr(s."DATE",1,10) >= program_start_date
	;

	--9: CNT_Fitbit_DailyActivity
	select count(distinct s.ParticipantIdentifier) into CNT_Fitbit_DailyActivity
	from STUDYPARTICIPANTS p
	join stg_FITBITDAILYDATA s on p.ParticipantIdentifier = s.ParticipantIdentifier
	where substr(s."DATE",1,10) >= program_start_date
	;	

	--10: CNT_Fitbit_IntradaySleep
	select count(distinct s.ParticipantIdentifier) into CNT_Fitbit_IntradaySleep
	from STUDYPARTICIPANTS p
	join stg_FITBITSLEEPLOGDETAILS s on p.ParticipantIdentifier = s.ParticipantIdentifier
	where substr(s.STARTDATE,1,10) >= program_start_date
	;	

	--11: CNT_Fitbit_DailySleep
	select count(distinct s.ParticipantIdentifier) into CNT_Fitbit_DailySleep
	from STUDYPARTICIPANTS p
	join stg_FITBITSLEEPLOGS s on p.ParticipantIdentifier = s.ParticipantIdentifier
	where substr(s.STARTDATE,1,10) >= program_start_date
	;	

	--12: CNT_HealthKit_IntradaySleep
	select count(distinct s.ParticipantIdentifier) into CNT_HealthKit_IntradaySleep
	from STUDYPARTICIPANTS p
	join stg_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL s on p.ParticipantIdentifier = s.ParticipantIdentifier
    where s.VALUE in ('InBed', 'Asleep')
	and substr(s.STARTDATE,1,10) >= program_start_date
	;

	--13: CNT_HealthKit_DailySleep
	select count(distinct s.ParticipantIdentifier) into CNT_HealthKit_DailySleep
	from STUDYPARTICIPANTS p
	join stg_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL s on p.ParticipantIdentifier = s.ParticipantIdentifier
    where s.VALUE in ('InBed', 'Asleep')
	and substr(s.STARTDATE,1,10) >= program_start_date
	;	

	--14: CNT_HealthKit_HeartRateVariability
	select count(distinct s.ParticipantIdentifier) into CNT_HealthKit_HeartRateVariability
	from STUDYPARTICIPANTS p
	join stg_HEALTHKITSAMPLES_HEARTRATEVARIABILITY s on p.ParticipantIdentifier = s.ParticipantIdentifier
	where substr(s.STARTDATE,1,10) >= program_start_date
	;

	--15: CNT_HealthKit_Activity
	select count(distinct s.ParticipantIdentifier) into CNT_HealthKit_Activity
	from STUDYPARTICIPANTS p
	join stg_HEALTHKITSAMPLES_APPLEEXERCISETIME s on p.ParticipantIdentifier = s.ParticipantIdentifier
	where substr(s.STARTDATE,1,10) >= program_start_date
	;

	select count(*) into record_today from daily_wearable_datacounts 
	where trunc(insert_date) = trunc(sysdate)
	;

	if record_today = 0 then 
		insert into daily_wearable_datacounts (
			INSERT_DATE
			,CNT_FITBIT_DAILYSTEP
			,CNT_APPLEWATCH_DAILYSTEP
			,CNT_FITBIT_RESTINGHEARTRATE
			,CNT_APPLEWATCH_RESTINGHEARTRATE
			,CNT_FITBIT_INTRADAYSTEPS
			,CNT_APPLEWATCH_INTRADAYSTEPS
			,CNT_FITBIT_INTRADAYHEARTRATE
			,CNT_APPLEWATCH_INTRADAYHEARTRATE
			,CNT_FITBIT_DAILYACTIVITY
			,CNT_FITBIT_INTRADAYSLEEP
			,CNT_FITBIT_DAILYSLEEP
			,CNT_HEALTHKIT_INTRADAYSLEEP
			,CNT_HEALTHKIT_DAILYSLEEP
			,CNT_HEALTHKIT_HEARTRATEVARIABILITY
			,CNT_HEALTHKIT_ACTIVITY
		)
		values (
			sysdate
			--,INSERT_DATE
			,CNT_FITBIT_DAILYSTEP
			,CNT_APPLEWATCH_DAILYSTEP
			,CNT_FITBIT_RESTINGHEARTRATE
			,CNT_APPLEWATCH_RESTINGHEARTRATE
			,CNT_FITBIT_INTRADAYSTEPS
			,CNT_APPLEWATCH_INTRADAYSTEPS
			,CNT_FITBIT_INTRADAYHEARTRATE
			,CNT_APPLEWATCH_INTRADAYHEARTRATE
			,CNT_FITBIT_DAILYACTIVITY
			,CNT_FITBIT_INTRADAYSLEEP
			,CNT_FITBIT_DAILYSLEEP
			,CNT_HEALTHKIT_INTRADAYSLEEP
			,CNT_HEALTHKIT_DAILYSLEEP
			,CNT_HEALTHKIT_HEARTRATEVARIABILITY
			,CNT_HEALTHKIT_ACTIVITY
		)
		;
		commit;
	end if;

end;]]></definition>
         <parameters/>
      </routine>
      <routine deterministic="false" name="IHS_2023.PR_FITBIT_INTRADAY_ACTIVITIES" type="PROCEDURE">
         <comment/>
         <definition language="PL/SQL"><![CDATA[procedure pr_FITBIT_intraday_activities (program_start_date varchar2 := '2023-04-01')
-- use AUTHID CURRENT_USER to execute with the privileges and 
-- schema context of the calling user
AUTHID CURRENT_USER AS

	cursor c is
	select
		s.PARTICIPANTIDENTIFIER
		,to_date(s.record_date||' '||nvl(s.record_time, '00:00:00'), 'yyyy-mm-dd hh24:mi:ss') as record_date
		,s.metric_value
	from stg_fitbit_heartrate s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join fitbit_heartrate o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER 
		and to_date(s.record_date||' '||nvl(s.record_time, '00:00:00'), 'yyyy-mm-dd hh24:mi:ss') = o.record_date
	where length(s.PARTICIPANTIDENTIFIER) >= 13
		and s.RECORD_DATE >= program_start_date
		and s.record_time is not null
		and o.rowid is null
    order by s.PARTICIPANTIDENTIFIER, s.record_date, s.record_time
	;

	tmp_id varchar2(15) := NULL;
	pre_time date := NULL;

begin
	--------------------------------------------------------
	--  1 - Data insertion for Table fitbit_steps
	--------------------------------------------------------

	insert into fitbit_steps (
		PARTICIPANTIDENTIFIER
		,RECORD_DATE
		,METRIC_VALUE
	)
	select
		s.PARTICIPANTIDENTIFIER
		,to_date(s.record_date||' '||nvl(s.record_time, '00:00:00'), 'yyyy-mm-dd hh24:mi:ss') as record_date
		,s.metric_value
	from stg_fitbit_steps s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join fitbit_steps o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER 
		and to_date(s.record_date||' '||nvl(s.record_time, '00:00:00'), 'yyyy-mm-dd hh24:mi:ss') = o.record_date
	where length(s.PARTICIPANTIDENTIFIER) >= 13 
		and s.RECORD_DATE >= program_start_date
		and s.record_time is not null
		and o.rowid is null
	order by s.PARTICIPANTIDENTIFIER, s.record_date, s.record_time
	;
    commit;

	--------------------------------------------------------
	--  2 - Data insertion for Table fitbit_heartrate
	--------------------------------------------------------

	for rec in c loop
		if nvl(tmp_id, 'x') <> rec.PARTICIPANTIDENTIFIER then
			--commit for the previous ID		
			commit;  

			--insert the first HeartRate record for a new ID
			insert into fitbit_heartrate (
				PARTICIPANTIDENTIFIER
				,RECORD_DATE
				,METRIC_VALUE
			)
			values (
				rec.PARTICIPANTIDENTIFIER
				,rec.RECORD_DATE
				,rec.METRIC_VALUE
			);

			--track the ID and time
			tmp_id := rec.PARTICIPANTIDENTIFIER;
			pre_time := rec.record_date;
		elsif (rec.record_date - pre_time) * 24 * 60 * 60 >= 60 then 
			--record at every minute (60 seconds interval)
			insert into fitbit_heartrate (
				PARTICIPANTIDENTIFIER
				,RECORD_DATE
				,METRIC_VALUE
			)
			values (
				rec.PARTICIPANTIDENTIFIER
				,rec.RECORD_DATE
				,rec.METRIC_VALUE
			);

			--reset pre_time
			pre_time := rec.record_date;
		end if;
	end loop;
	commit;

end;]]></definition>
         <parameters/>
      </routine>
      <routine deterministic="false" name="IHS_2023.PR_IHS_DATA_REFRESH_LOG" type="PROCEDURE">
         <comment/>
         <definition language="PL/SQL"><![CDATA[procedure pr_IHS_data_refresh_log (program_start_date varchar2 := '2023-04-01')
/*------------------------------------------------------
Project: Intern Health Study 2023 (Care Evolution Data)
Description: Oracle procedure pr_IHS_data_refresh_log
Author: Siqing Hu (shu@med.umich.edu)
Created: 2023-03-01
Updated: 2023-12-05
------------------------------------------------------*/
-- use AUTHID CURRENT_USER to execute with the privileges and 
-- schema context of the calling user
AUTHID CURRENT_USER AS

	CNT_AUXILIARYDATA integer;
	--CNT_COMPETITIONS integer;   --no COMPETITIONS data yet
	CNT_FITBITACTIVITYLOGS integer;
	CNT_FITBITDAILYDATA integer;
	CNT_FITBITDEVICES integer;
	CNT_FITBITRESTINGHEARTRATES integer;
	CNT_FITBITSLEEPLOGDETAILS integer;
	CNT_FITBITSLEEPLOGS integer;
	CNT_HEALTHKITACTIVITYSUMMARIES integer;
	CNT_HEALTHKITSAMPLES_APPLEEXERCISETIME integer;
	CNT_HEALTHKITSAMPLES_APPLEEXERCISETIME_DELETED integer;
	CNT_HEALTHKITSAMPLES_HEARTRATE integer;
	CNT_HEALTHKITSAMPLES_HEARTRATEVARIABILITY integer;
	CNT_HEALTHKITSAMPLES_HEARTRATEVARIABILITY_DELETED integer;
	CNT_HEALTHKITSAMPLES_HEARTRATE_DELETED integer;
	CNT_HEALTHKITSAMPLES_RESTINGHEARTRATE integer;
	CNT_HEALTHKITSAMPLES_RESTINGHEARTRATE_DELETED integer;
	CNT_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL integer;
	CNT_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_DELETED integer;
	CNT_HEALTHKITSAMPLES_STEPS integer;
	CNT_HEALTHKITSAMPLES_STEPS_DELETED integer;
	CNT_HEALTHKITSTATISTICS_DAILYSTEPS integer;
	CNT_MANIFEST integer;
	--CNT_NOTIFICATIONS integer;  --no longer in IHS 2023
	CNT_STUDYPARTICIPANTS integer;
	CNT_SURVEYCONSENTSIGNATURERESULTS integer;
	CNT_SURVEYDEFINITIONS integer;
	CNT_SURVEYQUESTIONRESULTS integer;
	CNT_SURVEYRESULTS integer;
	CNT_SURVEYSTEPRESULTS integer;
	CNT_SURVEYTASKS integer;
	CNT_FITBIT_INTRADAY_HEARTRATE integer;
	CNT_FITBIT_INTRADAY_STEPS integer;
	CNT_FITBIT_HEARTRATE_FILES integer;
	CNT_FITBIT_STEPS_FILES integer;
	CNT_FITBIT_HEARTRATE_FILES_DATA integer;
	CNT_FITBIT_STEPS_FILES_DATA integer;
	CNT_FITBIT_HEARTRATE_FILES_ADD integer;
	CNT_FITBIT_STEPS_FILES_ADD integer;
	--added on 4/5/2022:
	CNT_ANALYTICSEVENTS_EMAILNOTIFICATIONSENT integer;
	CNT_ANALYTICSEVENTS_NOTIFICATIONSENT integer;
	CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONOPENED integer;
	CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONRECEIVED integer;
	CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONSENT integer;
	CNT_ANALYTICSEVENTS_SURVEYSTEPVIEWED integer;
	--aaded on 6/13/2022:
	CNT_ANALYTICSEVENTS_EMAILSEND integer;
	CNT_ANALYTICSEVENTS_EMAILDELIVERY integer;
	CNT_ANALYTICSEVENTS_EMAILOPEN integer;
	CNT_ANALYTICSEVENTS_EMAILCLICK integer;
	CNT_ANALYTICSEVENTS_EMAILBOUNCE integer;
	CNT_ANALYTICSEVENTS_EMAILCOMPLAINT integer;
	--added on 7/1/2022:
	CNT_HEALTHKITSTATISTICS_HOURLYSTEPS integer;

	--added on 11/2/2022:
	CNT_FITBIT_INTRADAY_HRV integer;

    --added for IHS 2023
    --CNT_SURVEYDICTIONARY integer;

    CNT_GARMINACTIVITYSUMMARY integer;
    CNT_GARMINDAILYSUMMARY integer;
    CNT_GARMINDAILYSUMMARY_SAMPLES integer;
    CNT_GARMINEPOCHSUMMARY integer;
    CNT_GARMINHRVSUMMARY integer;
    CNT_GARMINHRVSUMMARY_SAMPLES integer;
    CNT_GARMINMOVEIQACTIVITYSUMMARY integer;
    CNT_GARMINSLEEPSUMMARY integer;
    CNT_GARMINSLEEPSUMMARY_DURATION integer;
    CNT_GARMINSLEEPSUMMARY_SCORE integer;
    CNT_GARMINSTRESSDETAILSUMMARY integer;
    CNT_GARMINSTRESSDETAILSUMMARY_SAMPLES integer;
    CNT_GARMINTHIRDPARTYDAILYSUMMARY integer;
    CNT_GARMINTHIRDPARTYDAILYSUMMARY_SAMPLES integer;
    CNT_GARMINUSERMETRICSSUMMARY integer;

    CNT_SK_VISITS integer;
    CNT_SK_LIGHT integer;
    CNT_SK_USAGE integer;
    CNT_SK_KEYBOARD integer;
    --CNT_SK_DEVICE_USAGE integer;
    --CNT_SK_SPEECH  integer;

    --added on 12/5/2023:
    CNT_PROJECTDEVICEDATA integer;

	record_today number(1);

begin

	--1: AUXILIARYDATA
	select count(*) into CNT_AUXILIARYDATA
	from stg_AUXILIARYDATA s
	join AUXILIARYDATA o on fn_guid_to_raw(s.AUXILIARYDATAKEY) = o.AUXILIARYDATAKEY
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	;

	--2: CNT_competitions
	--select count(*) into CNT_competitions
	--from stg_competitions
	--;

	--3: FITBITACTIVITYLOGS
	select count(*) into CNT_FITBITACTIVITYLOGS
	from stg_FITBITACTIVITYLOGS s
	join FITBITACTIVITYLOGS o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
			and TO_UTC_TIMESTAMP_TZ(s.STARTDATE) = o.STARTDATE
			and TO_UTC_TIMESTAMP_TZ(s.ENDDATE) = o.ENDDATE  --7/26/2021: added to avoid double count
			and s.ACTIVITYTYPEID = o.ACTIVITYTYPEID --11/3/2021: modified
			and o.LASTMODIFIED = TO_UTC_TIMESTAMP_TZ(s.LASTMODIFIED)--modified on 10/19/2021
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date
	;
	--4: FITBITDAILYDATA
	select count(*) into CNT_FITBITDAILYDATA
	from stg_FITBITDAILYDATA s
	join FITBITDAILYDATA o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
			and to_date(substr(s."DATE",1,10), 'yyyy-mm-dd') = o.RECORD_DATE
			and o.MODIFIEDDATE = TO_UTC_TIMESTAMP_TZ(s.MODIFIEDDATE)--modified on 10/19/2021
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s."DATE",1,10) >= program_start_date
	;
	--5: FITBITDEVICES
	select count(*) into CNT_FITBITDEVICES
	from stg_FITBITDEVICES s
	join FITBITDEVICES o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
			and TO_UTC_TIMESTAMP_TZ(s."DATE") = o.RECORD_DATE
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	;
	--6: FITBITRESTINGHEARTRATES
	select count(*) into CNT_FITBITRESTINGHEARTRATES
	from stg_FITBITRESTINGHEARTRATES s
	join FITBITRESTINGHEARTRATES o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
			and to_date(substr(s."DATE",1,10), 'yyyy-mm-dd') = o.RECORD_DATE
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s."DATE",1,10) >= program_start_date
	;
	--7: FITBITSLEEPLOGDETAILS
	select count(*) into CNT_FITBITSLEEPLOGDETAILS
	from stg_FITBITSLEEPLOGDETAILS s
	join FITBITSLEEPLOGDETAILS o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
			and TO_UTC_TIMESTAMP_TZ(s.STARTDATE) = o.STARTDATE
			and TO_UTC_TIMESTAMP_TZ(s.ENDDATE) = o.ENDDATE  --7/26/2021: added to avoid double count
			and s.TYPE = o.TYPE
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date
	;
	--8: FITBITSLEEPLOGS
	select count(*) into CNT_FITBITSLEEPLOGS
	from stg_FITBITSLEEPLOGS s
	join FITBITSLEEPLOGS o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
			and TO_UTC_TIMESTAMP_TZ(s.STARTDATE) = o.STARTDATE
			and TO_UTC_TIMESTAMP_TZ(s.ENDDATE) = o.ENDDATE  --7/26/2021: added to avoid double count
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date
	;

	--9: HEALTHKITACTIVITYSUMMARIES
	select count(*) into CNT_HEALTHKITACTIVITYSUMMARIES
	from stg_HEALTHKITACTIVITYSUMMARIES s
	join HEALTHKITACTIVITYSUMMARIES o on fn_guid_to_raw(s.HEALTHKITACTIVITYSUMMARYKEY) = o.HEALTHKITACTIVITYSUMMARYKEY
	and s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date
	;

	--modified on 4/18/2022 to handle duplicated HEALTHKITSAMPLES records
	--10: HEALTHKITSAMPLES_APPLEEXERCISETIME
	--select count(*) into CNT_HEALTHKITSAMPLES_APPLEEXERCISETIME
	select count(distinct s.HEALTHKITSAMPLEKEY) into CNT_HEALTHKITSAMPLES_APPLEEXERCISETIME
	from stg_HEALTHKITSAMPLES_APPLEEXERCISETIME s
	join HEALTHKITSAMPLES_APPLEEXERCISETIME o on fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) = o.HEALTHKITSAMPLEKEY
	and s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date
	;
	--11: HEALTHKITSAMPLES_HEARTRATE
	select count(distinct s.HEALTHKITSAMPLEKEY) into CNT_HEALTHKITSAMPLES_HEARTRATE
	from stg_HEALTHKITSAMPLES_HEARTRATE s
	join HEALTHKITSAMPLES_HEARTRATE o on fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) = o.HEALTHKITSAMPLEKEY
	and s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date
	;
	--12: HEALTHKITSAMPLES_HEARTRATEVARIABILITY
	select count(distinct s.HEALTHKITSAMPLEKEY) into CNT_HEALTHKITSAMPLES_HEARTRATEVARIABILITY
	from stg_HEALTHKITSAMPLES_HEARTRATEVARIABILITY s
	join HEALTHKITSAMPLES_HEARTRATEVARIABILITY o on fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) = o.HEALTHKITSAMPLEKEY
	and s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date
	;	
	--13: HEALTHKITSAMPLES_RESTINGHEARTRATE
	select count(distinct s.HEALTHKITSAMPLEKEY) into CNT_HEALTHKITSAMPLES_RESTINGHEARTRATE
	from stg_HEALTHKITSAMPLES_RESTINGHEARTRATE s
	join HEALTHKITSAMPLES_RESTINGHEARTRATE o on fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) = o.HEALTHKITSAMPLEKEY
	and s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date
	;	
	--14: HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL
	select count(distinct s.HEALTHKITSAMPLEKEY) into CNT_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL
	from stg_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL s
	join HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL o on fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) = o.HEALTHKITSAMPLEKEY
	and s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date
	;	
	--15: HEALTHKITSAMPLES_STEPS
	select count(distinct s.HEALTHKITSAMPLEKEY) into CNT_HEALTHKITSAMPLES_STEPS
	from stg_HEALTHKITSAMPLES_STEPS s
	join HEALTHKITSAMPLES_STEPS o on fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) = o.HEALTHKITSAMPLEKEY
	and s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date
	;

	--16: HEALTHKITSAMPLES_APPLEEXERCISETIME_DELETED
	select count(*) into CNT_HEALTHKITSAMPLES_APPLEEXERCISETIME_DELETED
	from stg_HEALTHKITSAMPLES_APPLEEXERCISETIME_DELETED s
	join HEALTHKITSAMPLES_DELETED o on fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) = o.HEALTHKITSAMPLEKEY
	and s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.DELETEDDATE,1,10) >= program_start_date
	and data_type = 1
	;
	--17: HEALTHKITSAMPLES_HEARTRATE_DELETED
	select count(*) into CNT_HEALTHKITSAMPLES_HEARTRATE_DELETED
	from stg_HEALTHKITSAMPLES_HEARTRATE_DELETED s
	join HEALTHKITSAMPLES_DELETED o on fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) = o.HEALTHKITSAMPLEKEY
	and s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.DELETEDDATE,1,10) >= program_start_date
	and data_type = 2
	;
	--18: HEALTHKITSAMPLES_HEARTRATEVARIABILITY_DELETED
	select count(*) into CNT_HEALTHKITSAMPLES_HEARTRATEVARIABILITY_DELETED
	from stg_HEALTHKITSAMPLES_HEARTRATEVARIABILITY_DELETED s
	join HEALTHKITSAMPLES_DELETED o on fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) = o.HEALTHKITSAMPLEKEY
	and s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.DELETEDDATE,1,10) >= program_start_date
	and data_type = 3
	;
	--19: HEALTHKITSAMPLES_RESTINGHEARTRATE_DELETED
	select count(*) into CNT_HEALTHKITSAMPLES_RESTINGHEARTRATE_DELETED
	from stg_HEALTHKITSAMPLES_RESTINGHEARTRATE_DELETED s
	join HEALTHKITSAMPLES_DELETED o on fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) = o.HEALTHKITSAMPLEKEY
	and s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.DELETEDDATE,1,10) >= program_start_date
	and data_type = 4
	;
	--20: HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_DELETED
	select count(*) into CNT_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_DELETED
	from stg_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_DELETED s
	join HEALTHKITSAMPLES_DELETED o on fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) = o.HEALTHKITSAMPLEKEY
	and s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.DELETEDDATE,1,10) >= program_start_date
	and data_type = 5
	;
	--21: HEALTHKITSAMPLES_STEPS_DELETED
	select count(*) into CNT_HEALTHKITSAMPLES_STEPS_DELETED
	from stg_HEALTHKITSAMPLES_STEPS_DELETED s
	join HEALTHKITSAMPLES_DELETED o on fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) = o.HEALTHKITSAMPLEKEY
	and s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.DELETEDDATE,1,10) >= program_start_date
	and data_type = 6
	;
	--22: HEALTHKITSTATISTICS_DAILYSTEPS
	select count(*) into CNT_HEALTHKITSTATISTICS_DAILYSTEPS
	from stg_HEALTHKITSTATISTICS_DAILYSTEPS s
	join HEALTHKITSTATISTICS_DAILYSTEPS o on fn_guid_to_raw(s.HEALTHKITSTATISTICKEY) = o.HEALTHKITSTATISTICKEY
	and s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date
	;

	--23: MANIFEST
	select count(*) into CNT_MANIFEST
	from stg_MANIFEST s
	join MANIFEST o on TO_UTC_TIMESTAMP_TZ(s.EXPORTSTARTDATE) = o.EXPORTSTARTDATE
	;

	--24: NOTIFICATIONS (no longer in IHS 2023)
	--select count(*) into CNT_NOTIFICATIONS
	--from stg_NOTIFICATIONS s
	--join NOTIFICATIONS o on fn_guid_to_raw(s.ID) = o.ID
	--where length(s.PARTICIPANTIDENTIFIER) >= 13
	--;

	--25: STUDYPARTICIPANTS
	select count(*) into CNT_STUDYPARTICIPANTS
	from stg_STUDYPARTICIPANTS s
	join STUDYPARTICIPANTS o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	;

	--26: SURVEYCONSENTSIGNATURERESULTS
	select count(*) into CNT_SURVEYCONSENTSIGNATURERESULTS
	from stg_SURVEYCONSENTSIGNATURERESULTS s
	join SURVEYCONSENTSIGNATURERESULTS o on fn_guid_to_raw(s.SURVEYCONSENTSIGNATURERESULTKEY) = o.SURVEYCONSENTSIGNATURERESULTKEY
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	;
	--27: SURVEYDEFINITIONS
	select count(*) into CNT_SURVEYDEFINITIONS
	from stg_SURVEYDEFINITIONS s
	join SURVEYDEFINITIONS o on fn_guid_to_raw(s.SURVEYDEFINITIONKEY) = o.SURVEYDEFINITIONKEY
	;
	--28: SURVEYQUESTIONRESULTS
	select count(*) into CNT_SURVEYQUESTIONRESULTS
	from stg_SURVEYQUESTIONRESULTS s
	join SURVEYQUESTIONRESULTS o on fn_guid_to_raw(s.SURVEYQUESTIONRESULTKEY) = o.SURVEYQUESTIONRESULTKEY
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	;
	--29: SURVEYRESULTS 
	select count(*) into CNT_SURVEYRESULTS
	from stg_SURVEYRESULTS s
	join SURVEYRESULTS o on fn_guid_to_raw(s.SURVEYRESULTKEY) = o.SURVEYRESULTKEY
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	;
	--30: SURVEYSTEPRESULTS
	select count(*) into CNT_SURVEYSTEPRESULTS
	from stg_SURVEYSTEPRESULTS s
	join SURVEYSTEPRESULTS o on fn_guid_to_raw(s.SURVEYSTEPRESULTKEY) = o.SURVEYSTEPRESULTKEY
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	;
	--31: SURVEYTASKS
	select count(*) into CNT_SURVEYTASKS
	from stg_SURVEYTASKS s
	join SURVEYTASKS o on fn_guid_to_raw(s.SURVEYTASKKEY) = o.SURVEYTASKKEY
	and o.MODIFIEDDATE = TO_UTC_TIMESTAMP_TZ(s.MODIFIEDDATE)--modified on 10/19/2021
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	;

	--32: CNT_FITBIT_intraday_HEARTRATE
	select count(*) into CNT_FITBIT_intraday_HEARTRATE
	from stg_FITBIT_HEARTRATE s
	join fitbit_heartrate o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER 
		and to_date(s.record_date||' '||nvl(s.record_time, '00:00:00'), 'yyyy-mm-dd hh24:mi:ss') = o.record_date
	where length(s.PARTICIPANTIDENTIFIER) >= 13
		and s.RECORD_DATE >= program_start_date
		and s.record_time is not null
	;
	--33: CNT_FITBIT_intraday_STEPS
	select count(*) into CNT_FITBIT_intraday_STEPS
	from stg_FITBIT_STEPS s
	join fitbit_STEPS o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER 
		and to_date(s.record_date||' '||nvl(s.record_time, '00:00:00'), 'yyyy-mm-dd hh24:mi:ss') = o.record_date
	where length(s.PARTICIPANTIDENTIFIER) >= 13
		and s.RECORD_DATE >= program_start_date
		and s.record_time is not null
	;	
	--34: CNT_FITBIT_HEARTRATE_FILES (total incoming files)
	select count(*) into CNT_FITBIT_HEARTRATE_FILES
	from stg_FITBIT_HEARTRATE 
	where record_time is null
	;
	--35: CNT_FITBIT_STEPS_FILES (total incoming files)
	select count(*) into CNT_FITBIT_STEPS_FILES
	from stg_FITBIT_STEPS
	where record_time is null
	;
	--36: CNT_FITBIT_HEARTRATE_FILES_DATA (files with valid data)
	select count(distinct PARTICIPANTIDENTIFIER||RECORD_DATE) into CNT_FITBIT_HEARTRATE_FILES_DATA
	from stg_FITBIT_HEARTRATE s
	where s.record_time is not null
	;
	--37: CNT_FITBIT_STEPS_FILES_DATA (files with valid data)
	select count(distinct PARTICIPANTIDENTIFIER||RECORD_DATE) into CNT_FITBIT_STEPS_FILES_DATA
	from stg_FITBIT_STEPS s
	where s.record_time is not null
	;
	--38: CNT_FITBIT_HEARTRATE_FILES_ADD (files with valid data and PARTICIPANTIDENTIFIER)
	select count(distinct PARTICIPANTIDENTIFIER||RECORD_DATE) into CNT_FITBIT_HEARTRATE_FILES_ADD
	from stg_FITBIT_HEARTRATE s
	where length(s.PARTICIPANTIDENTIFIER) >= 13
		and s.RECORD_DATE >= program_start_date
		and s.record_time is not null
	;
	--39: CNT_FITBIT_STEPS_FILES_ADD (files with valid data and PARTICIPANTIDENTIFIER)
	select count(distinct PARTICIPANTIDENTIFIER||RECORD_DATE) into CNT_FITBIT_STEPS_FILES_ADD
	from stg_FITBIT_STEPS s
	where length(s.PARTICIPANTIDENTIFIER) >= 13
		and s.RECORD_DATE >= program_start_date
		and s.record_time is not null
	;

	--added on 4/5/2022:
	--40: CNT_ANALYTICSEVENTS_EMAILNOTIFICATIONSENT
	select count(*) into CNT_ANALYTICSEVENTS_EMAILNOTIFICATIONSENT
	from STG_AnalyticsEvents_EmailNotificationSent s
	join AnalyticsEvents_EmailNotificationSent o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	;

	--41: CNT_ANALYTICSEVENTS_NOTIFICATIONSENT
	select count(*) into CNT_ANALYTICSEVENTS_NOTIFICATIONSENT
	from STG_AnalyticsEvents_NotificationSent s
	join AnalyticsEvents_NotificationSent o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	;

	--42: CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONOPENED
	select count(*) into CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONOPENED
	from STG_AnalyticsEvents_PushNotificationOpened s
	join AnalyticsEvents_PushNotificationOpened o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	;

	--43: CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONRECEIVED
	select count(*) into CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONRECEIVED
	from STG_AnalyticsEvents_PushNotificationReceived s
	join AnalyticsEvents_PushNotificationReceived o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	;

	--44: CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONSENT
	select count(*) into CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONSENT
	from STG_AnalyticsEvents_PushNotificationSent s
	join AnalyticsEvents_PushNotificationSent o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	;

	--45: CNT_ANALYTICSEVENTS_SURVEYSTEPVIEWED
	select count(*) into CNT_ANALYTICSEVENTS_SURVEYSTEPVIEWED
	from STG_AnalyticsEvents_SurveyStepViewed s
	join AnalyticsEvents_SurveyStepViewed o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.EVENTID = o.EVENTID
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	;

	--added on 6/13/2022 and modified on 6/17/2022 to handle NULL PARTICIPANTIDENTIFIER
	--46: CNT_ANALYTICSEVENTS_EMAILSEND
	select count(*) into CNT_ANALYTICSEVENTS_EMAILSEND
	from STG_AnalyticsEvents_EmailSend s
	join AnalyticsEvents_EmailSend o on s.EMAILEVENTKEY = o.EMAILEVENTKEY
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	--where length(s.PARTICIPANTIDENTIFIER) >= 13
	;

	--47: CNT_ANALYTICSEVENTS_EMAILDELIVERY
	select count(*) into CNT_ANALYTICSEVENTS_EMAILDELIVERY
	from STG_AnalyticsEvents_EmailDelivery s
	join AnalyticsEvents_EmailDelivery o on s.EMAILEVENTKEY = o.EMAILEVENTKEY
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	--where length(s.PARTICIPANTIDENTIFIER) >= 13
	;

	--48: CNT_ANALYTICSEVENTS_EMAILOPEN
	select count(*) into CNT_ANALYTICSEVENTS_EMAILOPEN
	from STG_AnalyticsEvents_EmailOpen s
	join AnalyticsEvents_EmailOpen o on s.EMAILEVENTKEY = o.EMAILEVENTKEY
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	--where length(s.PARTICIPANTIDENTIFIER) >= 13
	;

	--49: CNT_ANALYTICSEVENTS_EMAILCLICK
	select count(*) into CNT_ANALYTICSEVENTS_EMAILCLICK
	from STG_AnalyticsEvents_EmailClick s
	join AnalyticsEvents_EmailClick o on s.EMAILEVENTKEY = o.EMAILEVENTKEY
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	--where length(s.PARTICIPANTIDENTIFIER) >= 13
	;

	--50: CNT_ANALYTICSEVENTS_EMAILBOUNCE
	select count(*) into CNT_ANALYTICSEVENTS_EMAILBOUNCE
	from STG_AnalyticsEvents_EmailBounce s
	join AnalyticsEvents_EmailBounce o on s.EMAILEVENTKEY = o.EMAILEVENTKEY
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	--where length(s.PARTICIPANTIDENTIFIER) >= 13
	;

	--51: CNT_ANALYTICSEVENTS_EMAILCOMPLAINT
	select count(*) into CNT_ANALYTICSEVENTS_EMAILCOMPLAINT
	from STG_AnalyticsEvents_EmailComplaint s
	join AnalyticsEvents_EmailComplaint o on s.EMAILEVENTKEY = o.EMAILEVENTKEY
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	--where length(s.PARTICIPANTIDENTIFIER) >= 13
	;

	--added on 7/1/2022:
	--52: CNT_HEALTHKITV2STATISTICS_HOURLYSTEPS
	select count(*) into CNT_HEALTHKITSTATISTICS_HOURLYSTEPS
	from stg_HEALTHKITSTATISTICS_HOURLYSTEPS s
	join HEALTHKITSTATISTICS_HOURLYSTEPS o on fn_guid_to_raw(s.HEALTHKITSTATISTICKEY) = o.HEALTHKITSTATISTICKEY
	and s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date
	;

	--added on 11/2/2022:
	--53: CNT_FITBIT_INTRADAY_HRV (tracking cumulative count instead)
	select count(*) into CNT_FITBIT_INTRADAY_HRV 
	from FITBIT_hrv
	;

	--added for IHS 2023
    --54: CNT_SURVEYDICTIONARY
    --select count(*) into CNT_SURVEYDICTIONARY
    --from SURVEYDICTIONARY
    --;

    --tracking cumulative counts
    select count(*) into CNT_GARMINACTIVITYSUMMARY from GARMINACTIVITYSUMMARY;
    select count(*) into CNT_GARMINDAILYSUMMARY from GARMINDAILYSUMMARY;
    select count(*) into CNT_GARMINDAILYSUMMARY_SAMPLES from GARMINDAILYSUMMARY_SAMPLES;
    select count(*) into CNT_GARMINEPOCHSUMMARY from GARMINEPOCHSUMMARY;
    select count(*) into CNT_GARMINHRVSUMMARY from GARMINHRVSUMMARY;
    select count(*) into CNT_GARMINHRVSUMMARY_SAMPLES from GARMINHRVSUMMARY_SAMPLES;
    select count(*) into CNT_GARMINMOVEIQACTIVITYSUMMARY from GARMINMOVEIQACTIVITYSUMMARY;
    select count(*) into CNT_GARMINSLEEPSUMMARY from GARMINSLEEPSUMMARY;
    select count(*) into CNT_GARMINSLEEPSUMMARY_DURATION from GARMINSLEEPSUMMARY_DURATION;
    select count(*) into CNT_GARMINSLEEPSUMMARY_SCORE from GARMINSLEEPSUMMARY_SCORE;
    select count(*) into CNT_GARMINSTRESSDETAILSUMMARY from GARMINSTRESSDETAILSUMMARY;
    select count(*) into CNT_GARMINSTRESSDETAILSUMMARY_SAMPLES from GARMINSTRESSDETAILSUMMARY_SAMPLES;
    select count(*) into CNT_GARMINTHIRDPARTYDAILYSUMMARY from GARMINTHIRDPARTYDAILYSUMMARY;
    select count(*) into CNT_GARMINTHIRDPARTYDAILYSUMMARY_SAMPLES from GARMINTHIRDPARTYDAILYSUMMARY_SAMPLES;
    select count(*) into CNT_GARMINUSERMETRICSSUMMARY from GARMINUSERMETRICSSUMMARY;

	select count(*) into CNT_SK_VISITS from SK_VISITS;
	select count(*) into CNT_SK_LIGHT from SK_LIGHT;
	select count(*) into CNT_SK_USAGE from SK_USAGE;
    select count(*) into CNT_SK_KEYBOARD
	from SK_KEYBOARD
    where load_date = trunc(sysdate)
	;
	--select count(*) into CNT_SK_DEVICE_USAGE 
	--from SK_DEVICE_USAGE
    --where load_date = trunc(sysdate)
	--;
	--select count(*) into CNT_SK_SPEECH 
	--from SK_SPEECH
    --where load_date = trunc(sysdate)
	--;

    --added on 12/5/2023:
	select count(*) into CNT_PROJECTDEVICEDATA from PROJECTDEVICEDATA;

	select count(*) into record_today from IHS_data_refresh_log 
	where trunc(refresh_date) = trunc(sysdate)
	;

	--if record_today = 0 then 
		insert into IHS_data_refresh_log (
			refresh_date
			,CNT_AUXILIARYDATA
			--,CNT_COMPETITIONS --no COMPETITIONS data yet
			,CNT_FITBITACTIVITYLOGS
			,CNT_FITBITDAILYDATA
			,CNT_FITBITDEVICES
			,CNT_FITBITRESTINGHEARTRATES
			,CNT_FITBITSLEEPLOGDETAILS
			,CNT_FITBITSLEEPLOGS
			,CNT_HEALTHKITACTIVITYSUMMARIES
			,CNT_HEALTHKITSAMPLES_APPLEEXERCISETIME
			,CNT_HEALTHKITSAMPLES_APPLEEXERCISETIME_DELETED
			,CNT_HEALTHKITSAMPLES_HEARTRATE
			,CNT_HEALTHKITSAMPLES_HEARTRATEVARIABILITY
			,CNT_HEALTHKITSAMPLES_HEARTRATEVARIABILITY_DELETED
			,CNT_HEALTHKITSAMPLES_HEARTRATE_DELETED
			,CNT_HEALTHKITSAMPLES_RESTINGHEARTRATE
			,CNT_HEALTHKITSAMPLES_RESTINGHEARTRATE_DELETED
			,CNT_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL
			,CNT_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_DELETED
			,CNT_HEALTHKITSAMPLES_STEPS
			,CNT_HEALTHKITSAMPLES_STEPS_DELETED
			,CNT_HEALTHKITSTATISTICS_DAILYSTEPS
			,CNT_MANIFEST
			--,CNT_NOTIFICATIONS    --no longer in IHS 2023
			,CNT_STUDYPARTICIPANTS
			,CNT_SURVEYCONSENTSIGNATURERESULTS
			,CNT_SURVEYDEFINITIONS
			,CNT_SURVEYQUESTIONRESULTS
			,CNT_SURVEYRESULTS
			,CNT_SURVEYSTEPRESULTS
			,CNT_SURVEYTASKS
			,CNT_FITBIT_INTRADAY_HEARTRATE
			,CNT_FITBIT_INTRADAY_STEPS
			,CNT_FITBIT_HEARTRATE_FILES
			,CNT_FITBIT_STEPS_FILES
			,CNT_FITBIT_HEARTRATE_FILES_DATA
			,CNT_FITBIT_STEPS_FILES_DATA
			,CNT_FITBIT_HEARTRATE_FILES_ADD
			,CNT_FITBIT_STEPS_FILES_ADD
			--added on 4/5/2022:
			,CNT_ANALYTICSEVENTS_EMAILNOTIFICATIONSENT
			,CNT_ANALYTICSEVENTS_NOTIFICATIONSENT
			,CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONOPENED
			,CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONRECEIVED
			,CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONSENT
			,CNT_ANALYTICSEVENTS_SURVEYSTEPVIEWED
			--added on 6/13/2022:
			,CNT_ANALYTICSEVENTS_EMAILSEND
			,CNT_ANALYTICSEVENTS_EMAILDELIVERY
			,CNT_ANALYTICSEVENTS_EMAILOPEN
			,CNT_ANALYTICSEVENTS_EMAILCLICK
			,CNT_ANALYTICSEVENTS_EMAILBOUNCE
			,CNT_ANALYTICSEVENTS_EMAILCOMPLAINT
			--added on 7/1/2022:
			,CNT_HEALTHKITSTATISTICS_HOURLYSTEPS
			--added on 11/2/2022:
			,CNT_FITBIT_INTRADAY_HRV

            --added for IHS 2023
            --,CNT_SURVEYDICTIONARY
            ,CNT_GARMINACTIVITYSUMMARY
            ,CNT_GARMINDAILYSUMMARY
            ,CNT_GARMINDAILYSUMMARY_SAMPLES
            ,CNT_GARMINEPOCHSUMMARY
            ,CNT_GARMINHRVSUMMARY
            ,CNT_GARMINHRVSUMMARY_SAMPLES
            ,CNT_GARMINMOVEIQACTIVITYSUMMARY
            ,CNT_GARMINSLEEPSUMMARY
            ,CNT_GARMINSLEEPSUMMARY_DURATION
            ,CNT_GARMINSLEEPSUMMARY_SCORE
            ,CNT_GARMINSTRESSDETAILSUMMARY
            ,CNT_GARMINSTRESSDETAILSUMMARY_SAMPLES
            ,CNT_GARMINTHIRDPARTYDAILYSUMMARY
            ,CNT_GARMINTHIRDPARTYDAILYSUMMARY_SAMPLES
            ,CNT_GARMINUSERMETRICSSUMMARY
            ,CNT_SK_VISITS
            ,CNT_SK_LIGHT
            ,CNT_SK_USAGE
            ,CNT_SK_KEYBOARD
            --,CNT_SK_DEVICE_USAGE
            --,CNT_SK_SPEECH

            --added on 12/5/2023:
            ,CNT_PROJECTDEVICEDATA
		)
		values (
			sysdate
			--trunc(sysdate)		--refresh_date
			,CNT_AUXILIARYDATA
			--,CNT_COMPETITIONS   --no COMPETITIONS data yet
			,CNT_FITBITACTIVITYLOGS
			,CNT_FITBITDAILYDATA
			,CNT_FITBITDEVICES
			,CNT_FITBITRESTINGHEARTRATES
			,CNT_FITBITSLEEPLOGDETAILS
			,CNT_FITBITSLEEPLOGS
			,CNT_HEALTHKITACTIVITYSUMMARIES
			,CNT_HEALTHKITSAMPLES_APPLEEXERCISETIME
			,CNT_HEALTHKITSAMPLES_APPLEEXERCISETIME_DELETED
			,CNT_HEALTHKITSAMPLES_HEARTRATE
			,CNT_HEALTHKITSAMPLES_HEARTRATEVARIABILITY
			,CNT_HEALTHKITSAMPLES_HEARTRATEVARIABILITY_DELETED
			,CNT_HEALTHKITSAMPLES_HEARTRATE_DELETED
			,CNT_HEALTHKITSAMPLES_RESTINGHEARTRATE
			,CNT_HEALTHKITSAMPLES_RESTINGHEARTRATE_DELETED
			,CNT_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL
			,CNT_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_DELETED
			,CNT_HEALTHKITSAMPLES_STEPS
			,CNT_HEALTHKITSAMPLES_STEPS_DELETED
			,CNT_HEALTHKITSTATISTICS_DAILYSTEPS
			,CNT_MANIFEST
			--,CNT_NOTIFICATIONS    --no longer in IHS 2023
			,CNT_STUDYPARTICIPANTS
			,CNT_SURVEYCONSENTSIGNATURERESULTS
			,CNT_SURVEYDEFINITIONS
			,CNT_SURVEYQUESTIONRESULTS
			,CNT_SURVEYRESULTS
			,CNT_SURVEYSTEPRESULTS
			,CNT_SURVEYTASKS
			,CNT_FITBIT_INTRADAY_HEARTRATE
			,CNT_FITBIT_INTRADAY_STEPS
			,CNT_FITBIT_HEARTRATE_FILES
			,CNT_FITBIT_STEPS_FILES
			,CNT_FITBIT_HEARTRATE_FILES_DATA
			,CNT_FITBIT_STEPS_FILES_DATA
			,CNT_FITBIT_HEARTRATE_FILES_ADD
			,CNT_FITBIT_STEPS_FILES_ADD
			--added on 4/5/2022:
			,CNT_ANALYTICSEVENTS_EMAILNOTIFICATIONSENT
			,CNT_ANALYTICSEVENTS_NOTIFICATIONSENT
			,CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONOPENED
			,CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONRECEIVED
			,CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONSENT
			,CNT_ANALYTICSEVENTS_SURVEYSTEPVIEWED
			--added on 6/13/2022:
			,CNT_ANALYTICSEVENTS_EMAILSEND
			,CNT_ANALYTICSEVENTS_EMAILDELIVERY
			,CNT_ANALYTICSEVENTS_EMAILOPEN
			,CNT_ANALYTICSEVENTS_EMAILCLICK
			,CNT_ANALYTICSEVENTS_EMAILBOUNCE
			,CNT_ANALYTICSEVENTS_EMAILCOMPLAINT
			--added on 7/1/2022:
			,CNT_HEALTHKITSTATISTICS_HOURLYSTEPS
			--added on 11/2/2022:
			,CNT_FITBIT_INTRADAY_HRV

            --added for IHS 2023
            --,CNT_SURVEYDICTIONARY
            ,CNT_GARMINACTIVITYSUMMARY
            ,CNT_GARMINDAILYSUMMARY
            ,CNT_GARMINDAILYSUMMARY_SAMPLES
            ,CNT_GARMINEPOCHSUMMARY
            ,CNT_GARMINHRVSUMMARY
            ,CNT_GARMINHRVSUMMARY_SAMPLES
            ,CNT_GARMINMOVEIQACTIVITYSUMMARY
            ,CNT_GARMINSLEEPSUMMARY
            ,CNT_GARMINSLEEPSUMMARY_DURATION
            ,CNT_GARMINSLEEPSUMMARY_SCORE
            ,CNT_GARMINSTRESSDETAILSUMMARY
            ,CNT_GARMINSTRESSDETAILSUMMARY_SAMPLES
            ,CNT_GARMINTHIRDPARTYDAILYSUMMARY
            ,CNT_GARMINTHIRDPARTYDAILYSUMMARY_SAMPLES
            ,CNT_GARMINUSERMETRICSSUMMARY
            ,CNT_SK_VISITS
            ,CNT_SK_LIGHT
            ,CNT_SK_USAGE
            ,CNT_SK_KEYBOARD
            --,CNT_SK_DEVICE_USAGE
            --,CNT_SK_SPEECH 

            --added on 12/5/2023:
            ,CNT_PROJECTDEVICEDATA            
		)
		;
		commit;
	--end if;
end;]]></definition>
         <parameters/>
      </routine>
      <routine deterministic="false" name="IHS_2023.PR_INSERT_FITBIT_INTRADAY_HRV" type="PROCEDURE">
         <comment/>
         <definition language="PL/SQL"><![CDATA[procedure PR_INSERT_FITBIT_INTRADAY_HRV (program_start_date varchar2 := '2023-04-01')
-- use AUTHID CURRENT_USER to execute with the privileges and
-- schema context of the calling user
AUTHID CURRENT_USER AS

begin
	--------------------------------------------------------
	--  Data insertion for Table fitbit_hrv
	--------------------------------------------------------

	insert into fitbit_hrv (
		RECORD_DATE
		,RMSSD
		,COVERAGE
		,HF
		,LF
		,PARTICIPANTIDENTIFIER
	)
	--only insert new records:
	select
		to_date(RECORD_DATE, 'yyyy-mm-dd"T"hh24:mi:ss."000"') as RECORD_DATE
		,RMSSD
		,COVERAGE
		,HF
		,LF
		,s.PARTICIPANTIDENTIFIER
	from stg_fitbit_hrv s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
		and substr(s.RECORD_DATE, 1, 10) >= program_start_date
		and s.RMSSD is not null
	minus
	select
		RECORD_DATE
		,RMSSD
		,COVERAGE
		,HF
		,LF
		,PARTICIPANTIDENTIFIER
	from fitbit_hrv
	;
    commit;

end;]]></definition>
         <parameters/>
      </routine>
      <routine deterministic="false" name="IHS_2023.PR_INSERT_SK_DATA" type="PROCEDURE">
         <comment/>
         <definition language="PL/SQL"><![CDATA[procedure PR_INSERT_SK_DATA
-- use AUTHID CURRENT_USER to execute with the privileges and
-- schema context of the calling user
AUTHID CURRENT_USER AS

    cursor c is
        select
            s.LUX
            ,s.CHROMATICITY_X
            ,s.CHROMATICITY_Y
            ,s.PLACEMENT
            ,s.EVENT_TIMESTAMP  --already in TIMESTAMP(6) WITH TIME ZONE
            ,s.DEVICE_TYPE
            ,s.PARTICIPANT_ID
            --,s.DEVICE_ID
        from SK_LIGHT_int s
        order by s.PARTICIPANT_ID asc, s.DEVICE_TYPE, s.EVENT_TIMESTAMP asc
    ;

	tmp_PARTICIPANT_ID varchar2(15) := 'x';
    tmp_DEVICE_TYPE varchar2(15) := 'x';
	pre_TIMESTAMP TIMESTAMP(6) WITH TIME ZONE := NULL;

    cnt_PARTICIPANT pls_integer := 0;
    seq_interval pls_integer := 200;
    lower_seq pls_integer := 1;
    upper_seq pls_integer := 200;

begin
	--------------------------------------------------------
	--  Data insertion for Table SK_VISITS
	--------------------------------------------------------
    --remove old records
    delete from SK_VISITS where rowid in (
        select o.rowid 
        from stg_SK_VISITS s
        join STUDYPARTICIPANTS p on s.PARTICIPANT_ID = p.PARTICIPANTIDENTIFIER
        left join SK_VISITS o on s.PARTICIPANT_ID = o.PARTICIPANT_ID
            and TO_UTC_TIMESTAMP_TZ(s.EVENT_TIMESTAMP) = o.EVENT_TIMESTAMP
            and TO_UTC_TIMESTAMP_TZ(s.DEPART_START) = o.DEPART_START
            and TO_UTC_TIMESTAMP_TZ(s.ARRIVAL_START) = o.ARRIVAL_START
        where length(s.PARTICIPANT_ID) >= 13
        and o.rowid is not null
        )
    ;
    --insert new records
    insert into SK_VISITS 
    (
        EVENT_TIMESTAMP
        ,DEPART_START
        ,DEPART_DURATION
        ,LOCATIONCATEGORY
        ,ARRIVAL_START
        ,ARRIVAL_DURATION
        ,IDENTIFIER
        ,DISTANCEFROMHOME
        ,DEVICE_TYPE
        ,PARTICIPANT_ID
        --,DEVICE_ID
    )
    select distinct
        TO_UTC_TIMESTAMP_TZ(s.EVENT_TIMESTAMP) as EVENT_TIMESTAMP
        ,TO_UTC_TIMESTAMP_TZ(s.DEPART_START) as DEPART_START
        ,s.DEPART_DURATION
        ,l.category_val as LOCATIONCATEGORY
        ,TO_UTC_TIMESTAMP_TZ(s.ARRIVAL_START) as ARRIVAL_START
        ,s.ARRIVAL_DURATION
        ,s.IDENTIFIER
        ,s.DISTANCEFROMHOME
        ,d.category_val as DEVICE_TYPE
        ,s.PARTICIPANT_ID
        --,s.DEVICE_ID
    from stg_SK_VISITS s
    join STUDYPARTICIPANTS p on s.PARTICIPANT_ID = p.PARTICIPANTIDENTIFIER
    join SK_lookup d on d.data_type = 'DEVICE_TYPE' and lower(d.category_txt) = lower(s.DEVICE_TYPE)
    join SK_lookup l on l.data_type = 'VISIT_LOCATION_CATEGORY' and lower(l.category_txt) = lower(s.LOCATIONCATEGORY)
    left join SK_VISITS o on s.PARTICIPANT_ID = o.PARTICIPANT_ID
        and TO_UTC_TIMESTAMP_TZ(s.EVENT_TIMESTAMP) = o.EVENT_TIMESTAMP
        and TO_UTC_TIMESTAMP_TZ(s.DEPART_START) = o.DEPART_START
        and TO_UTC_TIMESTAMP_TZ(s.ARRIVAL_START) = o.ARRIVAL_START
    where length(s.PARTICIPANT_ID) >= 13 and s.ARRIVAL_START is not null
    and o.rowid is null
    ;
    commit;

	--------------------------------------------------------
	--  Data insertion for Table SK_USAGE
	--------------------------------------------------------
    /*
    --two different types of data files and they could have same EVENT_TIMESTAMP
    --require joining with message and phone call related fields to remove old records and/or filter any duplicated records
    --no de-duplication done at Michigan side (depends on CareEv to deliver new data only)

    --remove old records
    delete from SK_USAGE where rowid in (
        select o.rowid 
        from stg_SK_USAGE s
        join STUDYPARTICIPANTS p on s.PARTICIPANT_ID = p.PARTICIPANTIDENTIFIER
        left join SK_USAGE o on s.PARTICIPANT_ID = o.PARTICIPANT_ID
            and TO_UTC_TIMESTAMP_TZ(s.EVENT_TIMESTAMP) = o.EVENT_TIMESTAMP
            and s.DURATION = o.DURATION
        where length(s.PARTICIPANT_ID) >= 13
        and o.rowid is not null
        )
    ;
    */
    --insert new records
    insert into SK_USAGE
    (
        EVENT_TIMESTAMP
        ,TOTALINCOMINGCALLS
        ,TOTALOUTGOINGCALLS
        ,TOTALPHONECALLDURATION
        ,TOTALUNIQUECONTACTS
        ,DURATION
        ,TOTALINCOMINGMESSAGES
        ,TOTALOUTGOINGMESSAGES
        ,DEVICE_TYPE
        ,PARTICIPANT_ID
        --,DEVICE_ID
    )
    select distinct
        TO_UTC_TIMESTAMP_TZ(s.EVENT_TIMESTAMP) as EVENT_TIMESTAMP
        ,s.TOTALINCOMINGCALLS
        ,s.TOTALOUTGOINGCALLS
        ,s.TOTALPHONECALLDURATION
        ,s.TOTALUNIQUECONTACTS
        ,s.DURATION
        ,s.TOTALINCOMINGMESSAGES
        ,s.TOTALOUTGOINGMESSAGES
        ,d.category_val as DEVICE_TYPE
        ,s.PARTICIPANT_ID
        --,s.DEVICE_ID
    from stg_SK_USAGE s
    join STUDYPARTICIPANTS p on s.PARTICIPANT_ID = p.PARTICIPANTIDENTIFIER
    join SK_lookup d on d.data_type = 'DEVICE_TYPE' and lower(d.category_txt) = lower(s.DEVICE_TYPE)
    --left join SK_USAGE o on s.PARTICIPANT_ID = o.PARTICIPANT_ID
    --    and TO_UTC_TIMESTAMP_TZ(s.EVENT_TIMESTAMP) = o.EVENT_TIMESTAMP
    --    and s.DURATION = o.DURATION
    where length(s.PARTICIPANT_ID) >= 13
    --and o.rowid is null
    ;
    commit;

	--------------------------------------------------------
	--  Data insertion for Table SK_KEYBOARD
	--------------------------------------------------------
    insert into SK_KEYBOARD
        (
        CONTENT_JSON
        ,DEVICE_TYPE
        ,PARTICIPANT_ID
        --,DEVICE_ID
        ,LOAD_DATE
    )
    select
        s.CONTENT_JSON
        ,d.category_val as DEVICE_TYPE
        ,s.PARTICIPANT_ID
        --,s.DEVICE_ID
        ,trunc(sysdate) load_date
    from STG_SK_KEYBOARD s
    join STUDYPARTICIPANTS p on s.PARTICIPANT_ID = p.PARTICIPANTIDENTIFIER
    join SK_lookup d on d.data_type = 'DEVICE_TYPE' and lower(d.category_txt) = lower(s.DEVICE_TYPE)
    where length(s.PARTICIPANT_ID) >= 13
    ;

	--------------------------------------------------------
	--  Data insertion for Table SK_LIGHT
	--------------------------------------------------------
    --EXECUTE IMMEDIATE 'truncate table SK_LIGHT_int';
    --insert daily new records with EVENT_TIMESTAMP data conversion into an intermediate table first
    --for handling the different time zone timestamps consistently

    EXECUTE IMMEDIATE 'truncate table SK_LIGHT_PARTICIPANTs';
    EXECUTE IMMEDIATE 'truncate table SK_LIGHT_int';
    --EXECUTE IMMEDIATE 'truncate table SK_LIGHT_test';

    insert into SK_LIGHT_PARTICIPANTs (
        ID_SEQ
        ,PARTICIPANT_ID)
        with qq as 
        (
            select distinct s.PARTICIPANT_ID
            from stg_SK_LIGHT s
            join STUDYPARTICIPANTS p on s.PARTICIPANT_ID = p.PARTICIPANTIDENTIFIER
            order by s.PARTICIPANT_ID asc
        )
        select rownum, PARTICIPANT_ID
        from qq
        order by PARTICIPANT_ID asc
    ;
    commit;

    select count(*) into cnt_PARTICIPANT from SK_LIGHT_PARTICIPANTs;

    for i in 1 .. CEIL(cnt_PARTICIPANT/seq_interval) loop

        lower_seq := (i-1) * seq_interval + 1;
        upper_seq := i * seq_interval;

        insert into SK_LIGHT_int
        (
            LUX
            ,CHROMATICITY_X
            ,CHROMATICITY_Y
            ,PLACEMENT
            ,EVENT_TIMESTAMP
            ,DEVICE_TYPE
            ,PARTICIPANT_ID
            --,DEVICE_ID
        )
        select 
            s.LUX
            ,s.CHROMATICITY_X
            ,s.CHROMATICITY_Y
            ,l.category_val as PLACEMENT
            ,TO_UTC_TIMESTAMP_TZ(s.EVENT_TIMESTAMP) as EVENT_TIMESTAMP
            ,d.category_val as DEVICE_TYPE
            ,s.PARTICIPANT_ID
            --,s.DEVICE_ID
        from stg_SK_LIGHT s
        join SK_LIGHT_PARTICIPANTs p on s.PARTICIPANT_ID = p.PARTICIPANT_ID
        join SK_lookup d on d.data_type = 'DEVICE_TYPE' and lower(d.category_txt) = lower(s.DEVICE_TYPE)
        join SK_lookup l on l.data_type = 'LIGHT_SENSOR_PLACEMENT' and lower(l.category_txt) = lower(s.PLACEMENT)
        where p.ID_SEQ between lower_seq and upper_seq
        ;
        commit;
    end loop;

    for rec in c loop
        if ( (tmp_PARTICIPANT_ID <> rec.PARTICIPANT_ID) or (tmp_DEVICE_TYPE <> rec.DEVICE_TYPE) ) then
            --commit for the previous PARTICIPANT_ID and DEVICE_TYPE
            commit;

            --insert first record for a new PARTICIPANT_ID and/or DEVICE_TYPE
            insert into SK_LIGHT (
                LUX
                ,CHROMATICITY_X
                ,CHROMATICITY_Y
                ,PLACEMENT
                ,EVENT_TIMESTAMP
                ,DEVICE_TYPE
                ,PARTICIPANT_ID
                --,DEVICE_ID
            )
            values (
                rec.LUX
                ,rec.CHROMATICITY_X
                ,rec.CHROMATICITY_Y
                ,rec.PLACEMENT
                ,rec.EVENT_TIMESTAMP
                ,rec.DEVICE_TYPE
                ,rec.PARTICIPANT_ID
                --,rec.DEVICE_ID
            );

            --track the PARTICIPANT_ID, DEVICE_TYPE, and TIMESTAMP
            tmp_PARTICIPANT_ID := rec.PARTICIPANT_ID;
            tmp_DEVICE_TYPE := rec.DEVICE_TYPE;
            pre_TIMESTAMP := rec.EVENT_TIMESTAMP;
        elsif rec.EVENT_TIMESTAMP - pre_TIMESTAMP >= '+00 00:10:00.000000' then
            --record at every 10 minutes
            insert into SK_LIGHT (
                LUX
                ,CHROMATICITY_X
                ,CHROMATICITY_Y
                ,PLACEMENT
                ,EVENT_TIMESTAMP
                ,DEVICE_TYPE
                ,PARTICIPANT_ID
                --,DEVICE_ID
                        )
            values (
                rec.LUX
                ,rec.CHROMATICITY_X
                ,rec.CHROMATICITY_Y
                ,rec.PLACEMENT
                ,rec.EVENT_TIMESTAMP
                ,rec.DEVICE_TYPE
                ,rec.PARTICIPANT_ID
                --,rec.DEVICE_ID
            );

            --reset pre_TIMESTAMP to current EVENT_TIMESTAMP
            pre_TIMESTAMP := rec.EVENT_TIMESTAMP;
        end if;
    end loop;
    commit;

end;]]></definition>
         <parameters/>
      </routine>
      <routine deterministic="false" name="IHS_2023.PR_INSERT_SK_LIGHT_IMP" type="PROCEDURE">
         <comment/>
         <definition language="PL/SQL"><![CDATA[procedure PR_INSERT_SK_LIGHT_IMP
-- use AUTHID CURRENT_USER to execute with the privileges and
-- schema context of the calling user
AUTHID CURRENT_USER AS

    cursor c is
        select
            s.LUX
            ,s.CHROMATICITY_X
            ,s.CHROMATICITY_Y
            ,s.PLACEMENT
            ,s.EVENT_TIMESTAMP  --already in TIMESTAMP(6) WITH TIME ZONE
            ,s.DEVICE_TYPE
            ,s.PARTICIPANT_ID
            --,s.DEVICE_ID
        from SK_LIGHT_int s
        order by s.PARTICIPANT_ID asc, s.DEVICE_TYPE, s.EVENT_TIMESTAMP asc
    ;

	tmp_PARTICIPANT_ID varchar2(15) := 'x';
    tmp_DEVICE_TYPE varchar2(15) := 'x';
	pre_TIMESTAMP TIMESTAMP(6) WITH TIME ZONE := NULL;

    cnt_PARTICIPANT pls_integer := 0;
    seq_interval pls_integer := 200;
    lower_seq pls_integer := 1;
    upper_seq pls_integer := 200;

begin
	--------------------------------------------------------
	--  Data insertion for Table SK_LIGHT
	--------------------------------------------------------
    --EXECUTE IMMEDIATE 'truncate table SK_LIGHT_int';
    --insert daily new records with EVENT_TIMESTAMP data conversion into an intermediate table first
    --for handling the different time zone timestamps consistently

    EXECUTE IMMEDIATE 'truncate table SK_LIGHT_PARTICIPANTs';
    EXECUTE IMMEDIATE 'truncate table SK_LIGHT_int';
    EXECUTE IMMEDIATE 'truncate table SK_LIGHT_test';

    insert into SK_LIGHT_PARTICIPANTs (
        ID_SEQ
        ,PARTICIPANT_ID)
        with qq as 
        (
            select distinct s.PARTICIPANT_ID
            from stg_SK_LIGHT s
            join STUDYPARTICIPANTS p on s.PARTICIPANT_ID = p.PARTICIPANTIDENTIFIER
            order by s.PARTICIPANT_ID asc
        )
        select rownum, PARTICIPANT_ID
        from qq
        order by PARTICIPANT_ID asc
    ;
    commit;

    select count(*) into cnt_PARTICIPANT from SK_LIGHT_PARTICIPANTs;

    for i in 1 .. CEIL(cnt_PARTICIPANT/seq_interval) loop

        lower_seq := (i-1) * seq_interval + 1;
        upper_seq := i * seq_interval;

        insert into SK_LIGHT_int
        (
            LUX
            ,CHROMATICITY_X
            ,CHROMATICITY_Y
            ,PLACEMENT
            ,EVENT_TIMESTAMP
            ,DEVICE_TYPE
            ,PARTICIPANT_ID
            --,DEVICE_ID
        )
        select 
            s.LUX
            ,s.CHROMATICITY_X
            ,s.CHROMATICITY_Y
            ,l.category_val as PLACEMENT
            ,TO_UTC_TIMESTAMP_TZ(s.EVENT_TIMESTAMP) as EVENT_TIMESTAMP
            ,d.category_val as DEVICE_TYPE
            ,s.PARTICIPANT_ID
            --,s.DEVICE_ID
        from stg_SK_LIGHT s
        join SK_LIGHT_PARTICIPANTs p on s.PARTICIPANT_ID = p.PARTICIPANT_ID
        join SK_lookup d on d.data_type = 'DEVICE_TYPE' and lower(d.category_txt) = lower(s.DEVICE_TYPE)
        join SK_lookup l on l.data_type = 'LIGHT_SENSOR_PLACEMENT' and lower(l.category_txt) = lower(s.PLACEMENT)
        where p.ID_SEQ between lower_seq and upper_seq
        ;
        commit;
    end loop;

    for rec in c loop
        if ( (tmp_PARTICIPANT_ID <> rec.PARTICIPANT_ID) or (tmp_DEVICE_TYPE <> rec.DEVICE_TYPE) ) then
            --commit for the previous PARTICIPANT_ID and DEVICE_TYPE
            commit;

            --insert first record for a new PARTICIPANT_ID and/or DEVICE_TYPE
            insert into SK_LIGHT_test (
                LUX
                ,CHROMATICITY_X
                ,CHROMATICITY_Y
                ,PLACEMENT
                ,EVENT_TIMESTAMP
                ,DEVICE_TYPE
                ,PARTICIPANT_ID
                --,DEVICE_ID
            )
            values (
                rec.LUX
                ,rec.CHROMATICITY_X
                ,rec.CHROMATICITY_Y
                ,rec.PLACEMENT
                ,rec.EVENT_TIMESTAMP
                ,rec.DEVICE_TYPE
                ,rec.PARTICIPANT_ID
                --,rec.DEVICE_ID
            );

            --track the PARTICIPANT_ID, DEVICE_TYPE, and TIMESTAMP
            tmp_PARTICIPANT_ID := rec.PARTICIPANT_ID;
            tmp_DEVICE_TYPE := rec.DEVICE_TYPE;
            pre_TIMESTAMP := rec.EVENT_TIMESTAMP;
        elsif rec.EVENT_TIMESTAMP - pre_TIMESTAMP >= '+00 00:10:00.000000' then
            --record at every 10 minutes
            insert into SK_LIGHT_test (
                LUX
                ,CHROMATICITY_X
                ,CHROMATICITY_Y
                ,PLACEMENT
                ,EVENT_TIMESTAMP
                ,DEVICE_TYPE
                ,PARTICIPANT_ID
                --,DEVICE_ID
                        )
            values (
                rec.LUX
                ,rec.CHROMATICITY_X
                ,rec.CHROMATICITY_Y
                ,rec.PLACEMENT
                ,rec.EVENT_TIMESTAMP
                ,rec.DEVICE_TYPE
                ,rec.PARTICIPANT_ID
                --,rec.DEVICE_ID
            );

            --reset pre_TIMESTAMP to current EVENT_TIMESTAMP
            pre_TIMESTAMP := rec.EVENT_TIMESTAMP;
        end if;
    end loop;
    commit;

end;]]></definition>
         <parameters/>
      </routine>
      <routine deterministic="false" name="IHS_2023.PR_POPULATE_IHS_ANALYTICSEVENTS_DATA" type="PROCEDURE">
         <comment/>
         <definition language="PL/SQL"><![CDATA[procedure pr_populate_IHS_AnalyticsEvents_data
-- use AUTHID CURRENT_USER to execute with the privileges and 
-- schema context of the calling user
AUTHID CURRENT_USER AS

begin

--------------------------------------------------------
--  25-1 - Data insertion for Table AnalyticsEvents_EmailNotificationSent
--------------------------------------------------------
	insert into AnalyticsEvents_EmailNotificationSent (
		PARTICIPANTIDENTIFIER
		,EVENT_TIMESTAMP
		,NOTIFICATIONIDENTIFIER
		,SUBJECT
		,SENT_TO
		,PARTICIPANTID
	)
	select
		s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") as EVENT_TIMESTAMP
		,s.NOTIFICATIONIDENTIFIER
		,s.SUBJECT
		,s."TO"
		,s.PARTICIPANTID
	from STG_AnalyticsEvents_EmailNotificationSent s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join AnalyticsEvents_EmailNotificationSent o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and o.rowid is null
	;

--------------------------------------------------------
--  25-2 - Data insertion for Table AnalyticsEvents_NotificationSent
--------------------------------------------------------
	insert into AnalyticsEvents_NotificationSent (
		PARTICIPANTIDENTIFIER
		,EVENT_TIMESTAMP
		,CONTENTVERSION
		,NOTIFICATIONIDENTIFIER
		,NOTIFICATIONTYPE
		,RECIPIENTS
		,STATUSCODE
		,TARGETCUSTOMFIELD
		,PARTICIPANTID
	)
	select
		s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") as EVENT_TIMESTAMP
		,s.CONTENTVERSION
		,s.NOTIFICATIONIDENTIFIER
		,s.NOTIFICATIONTYPE
		,s.RECIPIENTS
		,s.STATUSCODE
		,s.TARGETCUSTOMFIELD
		,s.PARTICIPANTID
	from STG_AnalyticsEvents_NotificationSent s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join AnalyticsEvents_NotificationSent o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and o.rowid is null
	;

--------------------------------------------------------
--  25-3 - Data insertion for Table AnalyticsEvents_PushNotificationOpened
--------------------------------------------------------
	insert into AnalyticsEvents_PushNotificationOpened (
		PARTICIPANTIDENTIFIER
		,EVENT_TIMESTAMP
		,DEVICEIDENTIFIER
		,NOTIFICATIONIDENTIFIER
		,PARTICIPANTID
		--new field since 10/14/2022
		,PushEventKey
	)
	select
		s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") as EVENT_TIMESTAMP
		,s.DEVICEIDENTIFIER
		,s.NOTIFICATIONIDENTIFIER
		,s.PARTICIPANTID
		,s.PushEventKey
	from STG_AnalyticsEvents_PushNotificationOpened s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join AnalyticsEvents_PushNotificationOpened o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and o.rowid is null
	;

--------------------------------------------------------
--  25-4 - Data insertion for Table AnalyticsEvents_PushNotificationReceived
--------------------------------------------------------
	insert into AnalyticsEvents_PushNotificationReceived (
		PARTICIPANTIDENTIFIER
		,EVENT_TIMESTAMP
		,DEVICEIDENTIFIER
		,NOTIFICATIONIDENTIFIER
		,PARTICIPANTID
		--new field since 10/14/2022
		,PushEventKey
	)
	select
		s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") as EVENT_TIMESTAMP
		,s.DEVICEIDENTIFIER
		,s.NOTIFICATIONIDENTIFIER
		,s.PARTICIPANTID
		,s.PushEventKey
	from STG_AnalyticsEvents_PushNotificationReceived s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join AnalyticsEvents_PushNotificationReceived o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and o.rowid is null
	;

--------------------------------------------------------
--  25-5 - Data insertion for Table AnalyticsEvents_PushNotificationSent
--------------------------------------------------------
	insert into AnalyticsEvents_PushNotificationSent (
		PARTICIPANTIDENTIFIER
		,EVENT_TIMESTAMP
		,BODY
		,NOTIFICATIONIDENTIFIER
		,TITLE
		,PARTICIPANTID
		--new fields since 10/14/2022
		,PushEventKey
		,DeviceIdentifier
	)
	select
		s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") as EVENT_TIMESTAMP
		,s.BODY
		,s.NOTIFICATIONIDENTIFIER
		,s.TITLE
		,s.PARTICIPANTID
		,s.PushEventKey
		,s.DeviceIdentifier
	from STG_AnalyticsEvents_PushNotificationSent s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join AnalyticsEvents_PushNotificationSent o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and o.rowid is null
	;

--------------------------------------------------------
--  25-6 - Data insertion for Table AnalyticsEvents_SurveyStepViewed
--------------------------------------------------------
	insert into AnalyticsEvents_SurveyStepViewed (
		PARTICIPANTIDENTIFIER
		,EVENT_TIMESTAMP
		,CLIENTLOCALTIMESTAMP
		,EVENTID
		,STEPIDENTIFIER
		,SURVEYID
		,SURVEYSESSIONID
		,SURVEYVERSION
		,TASKID
		,TASKRUNUUID
		,PARTICIPANTID
	)
	select
		s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") as EVENT_TIMESTAMP
		,to_date(substr(s.CLIENTLOCALTIMESTAMP, 1, LENGTH(s.CLIENTLOCALTIMESTAMP) - 3), 'fmmm/dd/yyyy hh24:mi:ss') as CLIENTLOCALTIMESTAMP
		,s.EVENTID
		,s.STEPIDENTIFIER
		,s.SURVEYID
		,s.SURVEYSESSIONID
		,s.SURVEYVERSION
		,s.TASKID
		,s.TASKRUNUUID
		,s.PARTICIPANTID
	from STG_AnalyticsEvents_SurveyStepViewed s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join AnalyticsEvents_SurveyStepViewed o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.EVENTID = o.EVENTID
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and o.rowid is null
	;

--- commit for all insertions! ---
	commit;

end;]]></definition>
         <parameters/>
      </routine>
      <routine deterministic="false" name="IHS_2023.PR_POPULATE_IHS_ANALYTICSEVENTS_EMAIL" type="PROCEDURE">
         <comment/>
         <definition language="PL/SQL"><![CDATA[procedure pr_populate_IHS_AnalyticsEvents_Email
-- use AUTHID CURRENT_USER to execute with the privileges and
-- schema context of the calling user
AUTHID CURRENT_USER AS

begin

--------------------------------------------------------
--  26-1 - Data insertion for Table AnalyticsEvents_EmailBounce
--------------------------------------------------------
	insert into AnalyticsEvents_EmailBounce (
		PARTICIPANTIDENTIFIER
		,EVENT_TIMESTAMP
		,PARTICIPANTID
		,EMAILEVENTKEY
		,MAILDESTINATION
		,MAILTIMESTAMP
		,MAILSOURCE
		,MAILMESSAGEID
		,NOTIFICATIONIDENTIFIER
		,FROMDOMAIN
		,LOCALECODE
		,BOUNCETYPE
		,BOUNCESUBTYPE
	)
	select
		s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") as EVENT_TIMESTAMP
		,s.PARTICIPANTID
		,s.EMAILEVENTKEY
		,s.MAILDESTINATION
		,TO_UTC_TIMESTAMP_TZ(s.MAILTIMESTAMP) as MAILTIMESTAMP
		,s.MAILSOURCE
		,s.MAILMESSAGEID
		,s.NOTIFICATIONIDENTIFIER
		,s.FROMDOMAIN
		,s.LOCALECODE
		,s.BOUNCETYPE
		,s.BOUNCESUBTYPE
	from STG_AnalyticsEvents_EmailBounce s
	left join AnalyticsEvents_EmailBounce o on s.EMAILEVENTKEY = o.EMAILEVENTKEY
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	where o.rowid is null
	;

--------------------------------------------------------
--  26-2 - Data insertion for Table AnalyticsEvents_EmailClick
--------------------------------------------------------
	insert into AnalyticsEvents_EmailClick (
		PARTICIPANTIDENTIFIER
		,EVENT_TIMESTAMP
		,PARTICIPANTID
		,EMAILEVENTKEY
		,MAILDESTINATION
		,MAILTIMESTAMP
		,MAILSOURCE
		,MAILMESSAGEID
		,NOTIFICATIONIDENTIFIER
		,FROMDOMAIN
		,LOCALECODE
		,CLICKTIMESTAMP
		,CLICKUSERAGENT
		,CLICKIPADDRESS
		,CLICKLINK
		,CLICKLINKTAGS
	)
	select
		s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") as EVENT_TIMESTAMP
		,s.PARTICIPANTID
		,s.EMAILEVENTKEY
		,s.MAILDESTINATION
		,TO_UTC_TIMESTAMP_TZ(s.MAILTIMESTAMP) as MAILTIMESTAMP
		,s.MAILSOURCE
		,s.MAILMESSAGEID
		,s.NOTIFICATIONIDENTIFIER
		,s.FROMDOMAIN
		,s.LOCALECODE
		,TO_UTC_TIMESTAMP_TZ(s.CLICKTIMESTAMP) as CLICKTIMESTAMP
		,s.CLICKUSERAGENT
		,s.CLICKIPADDRESS
		,s.CLICKLINK
		,s.CLICKLINKTAGS
	from STG_AnalyticsEvents_EmailClick s
	left join AnalyticsEvents_EmailClick o on s.EMAILEVENTKEY = o.EMAILEVENTKEY
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	where o.rowid is null
	;

--------------------------------------------------------
--  26-3 - Data insertion for Table AnalyticsEvents_EmailComplaint
--------------------------------------------------------
	insert into AnalyticsEvents_EmailComplaint (
		PARTICIPANTIDENTIFIER
		,EVENT_TIMESTAMP
		,PARTICIPANTID
		,EMAILEVENTKEY
		,MAILDESTINATION
		,MAILTIMESTAMP
		,MAILSOURCE
		,MAILMESSAGEID
		,NOTIFICATIONIDENTIFIER
		,FROMDOMAIN
		,LOCALECODE
		,COMPLAINTTYPE
		,COMPLAINTUSERAGENT
	)
	select
		s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") as EVENT_TIMESTAMP
		,s.PARTICIPANTID
		,s.EMAILEVENTKEY
		,s.MAILDESTINATION
		,TO_UTC_TIMESTAMP_TZ(s.MAILTIMESTAMP) as MAILTIMESTAMP
		,s.MAILSOURCE
		,s.MAILMESSAGEID
		,s.NOTIFICATIONIDENTIFIER
		,s.FROMDOMAIN
		,s.LOCALECODE
		,s.COMPLAINTTYPE
		,s.COMPLAINTUSERAGENT
	from STG_AnalyticsEvents_EmailComplaint s
	left join AnalyticsEvents_EmailComplaint o on s.EMAILEVENTKEY = o.EMAILEVENTKEY
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	where o.rowid is null
	;

--------------------------------------------------------
--  26-4 - Data insertion for Table AnalyticsEvents_EmailDelivery
--------------------------------------------------------
	insert into AnalyticsEvents_EmailDelivery (
		PARTICIPANTIDENTIFIER
		,EVENT_TIMESTAMP
		,PARTICIPANTID
		,EMAILEVENTKEY
		,MAILDESTINATION
		,MAILTIMESTAMP
		,MAILSOURCE
		,MAILMESSAGEID
		,NOTIFICATIONIDENTIFIER
		,FROMDOMAIN
		,LOCALECODE
		,DELIVERYRECIPIENT
		,DELIVERYTIMESTAMP
	)
	select
		s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") as EVENT_TIMESTAMP
		,s.PARTICIPANTID
		,s.EMAILEVENTKEY
		,s.MAILDESTINATION
		,TO_UTC_TIMESTAMP_TZ(s.MAILTIMESTAMP) as MAILTIMESTAMP
		,s.MAILSOURCE
		,s.MAILMESSAGEID
		,s.NOTIFICATIONIDENTIFIER
		,s.FROMDOMAIN
		,s.LOCALECODE
		,s.DELIVERYRECIPIENT
		,TO_UTC_TIMESTAMP_TZ(s.DELIVERYTIMESTAMP) as DELIVERYTIMESTAMP
	from STG_AnalyticsEvents_EmailDelivery s
	left join AnalyticsEvents_EmailDelivery o on s.EMAILEVENTKEY = o.EMAILEVENTKEY
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	where o.rowid is null
	;

--------------------------------------------------------
--  26-5 - Data insertion for Table AnalyticsEvents_EmailOpen
--------------------------------------------------------
	insert into AnalyticsEvents_EmailOpen (
		PARTICIPANTIDENTIFIER
		,EVENT_TIMESTAMP
		,PARTICIPANTID
		,EMAILEVENTKEY
		,MAILDESTINATION
		,MAILTIMESTAMP
		,MAILSOURCE
		,MAILMESSAGEID
		,NOTIFICATIONIDENTIFIER
		,FROMDOMAIN
		,LOCALECODE
		,OPENTIMESTAMP
		,OPENUSERAGENT
		,OPENIPADDRESS
	)
	select
		s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") as EVENT_TIMESTAMP
		,s.PARTICIPANTID
		,s.EMAILEVENTKEY
		,s.MAILDESTINATION
		,TO_UTC_TIMESTAMP_TZ(s.MAILTIMESTAMP) as MAILTIMESTAMP
		,s.MAILSOURCE
		,s.MAILMESSAGEID
		,s.NOTIFICATIONIDENTIFIER
		,s.FROMDOMAIN
		,s.LOCALECODE
		,TO_UTC_TIMESTAMP_TZ(s.OPENTIMESTAMP) as OPENTIMESTAMP
		,s.OPENUSERAGENT
		,s.OPENIPADDRESS
	from STG_AnalyticsEvents_EmailOpen s
	left join AnalyticsEvents_EmailOpen o on s.EMAILEVENTKEY = o.EMAILEVENTKEY
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	where o.rowid is null
	;

--------------------------------------------------------
--  26-6 - Data insertion for Table AnalyticsEvents_EmailSend
--------------------------------------------------------
	insert into AnalyticsEvents_EmailSend (
		PARTICIPANTIDENTIFIER
		,EVENT_TIMESTAMP
		,PARTICIPANTID
		,EMAILEVENTKEY
		,MAILDESTINATION
		,MAILTIMESTAMP
		,MAILSOURCE
		,MAILMESSAGEID
		,NOTIFICATIONIDENTIFIER
		,FROMDOMAIN
		,LOCALECODE
	)
	select
		s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") as EVENT_TIMESTAMP
		,s.PARTICIPANTID
		,s.EMAILEVENTKEY
		,s.MAILDESTINATION
		,TO_UTC_TIMESTAMP_TZ(s.MAILTIMESTAMP) as MAILTIMESTAMP
		,s.MAILSOURCE
		,s.MAILMESSAGEID
		,s.NOTIFICATIONIDENTIFIER
		,s.FROMDOMAIN
		,s.LOCALECODE
	from STG_AnalyticsEvents_EmailSend s
	left join AnalyticsEvents_EmailSend o on s.EMAILEVENTKEY = o.EMAILEVENTKEY
	and TO_UTC_TIMESTAMP_TZ(s."TIMESTAMP") = o.EVENT_TIMESTAMP
	and s.NOTIFICATIONIDENTIFIER = o.NOTIFICATIONIDENTIFIER
	where o.rowid is null
	;


--- commit for all insertions! ---
	commit;

end;]]></definition>
         <parameters/>
      </routine>
      <routine deterministic="false" name="IHS_2023.PR_POPULATE_IHS_DATA" type="PROCEDURE">
         <comment/>
         <definition language="PL/SQL"><![CDATA[procedure pr_populate_IHS_data (program_start_date varchar2 := '2023-04-01')
/*------------------------------------------------------
Project: Intern Health Study 2023 (Care Evolution Data)
Description: Oracle procedure pr_populate_IHS_data
Author: Siqing Hu (shu@med.umich.edu)
Created: 2022-03-30
Updated: 2023-12-05
------------------------------------------------------*/
-- use AUTHID CURRENT_USER to execute with the privileges and 
-- schema context of the calling user
AUTHID CURRENT_USER AS

	--declare
	cursor c is 
	with participants as (
	select
		s.PARTICIPANTIDENTIFIER
		--,fn_guid_to_raw(s.GLOBALKEY) as GLOBALKEY		--not in 2022 data
		,s.EMAILADDRESS
		,s.MIDDLENAME
		,s.FIRSTNAME
		,s.LASTNAME
		,s.GENDER
		,to_date(s.DATEOFBIRTH,'yyyy-mm-dd') as DATEOFBIRTH
		,s.SECONDARYIDENTIFIER
		,s.POSTALCODE
		,TO_UTC_TIMESTAMP_TZ(s.ENROLLMENTDATE) as ENROLLMENTDATE
		,s.EVENTDATES  	--json object, field changed from EVENTDATE to EVENTDATES (3/29/2022)
		,s.CUSTOMFIELDS  --json object
		--added on 7/1/2022:
		,s.UTCOFFSET
		,s.TIMEZONE
		,s.PREFERREDLANGUAGE
	from stg_STUDYPARTICIPANTS s
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	)
	select n.*, o.rowid old_row
	from participants n
	left join STUDYPARTICIPANTS o on n.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	order by case when o.rowid is not null then 1 else 2 end asc    --old goes first
		--,n.PARTICIPANTIDENTIFIER asc
	;

begin

--------------------------------------------------------
--  1 - Data insertion for Table STUDYPARTICIPANTS
--------------------------------------------------------

	--updated on 7/1/2022:
	for rec in c loop
		if rec.old_row is not null then
			update STUDYPARTICIPANTS set
				EMAILADDRESS = rec.EMAILADDRESS
				,MIDDLENAME = rec.MIDDLENAME
				,FIRSTNAME = rec.FIRSTNAME 
				,LASTNAME = rec.LASTNAME
				,GENDER = rec.GENDER
				,DATEOFBIRTH = rec.DATEOFBIRTH 
				,SECONDARYIDENTIFIER = rec.SECONDARYIDENTIFIER 
				,POSTALCODE = rec.POSTALCODE
				,ENROLLMENTDATE = rec.ENROLLMENTDATE
				,EVENTDATES = rec.EVENTDATES
				,CUSTOMFIELDS = rec.CUSTOMFIELDS
				,UTCOFFSET = rec.UTCOFFSET
				,TIMEZONE = rec.TIMEZONE
				,PREFERREDLANGUAGE = rec.PREFERREDLANGUAGE
			where rowid = rec.old_row;
		else
			insert into STUDYPARTICIPANTS (
				PARTICIPANTIDENTIFIER
				--,GLOBALKEY
				,EMAILADDRESS
				,MIDDLENAME
				,FIRSTNAME
				,LASTNAME
				,GENDER
				,DATEOFBIRTH
				,SECONDARYIDENTIFIER
				,POSTALCODE
				,ENROLLMENTDATE
				,EVENTDATES
				,CUSTOMFIELDS
				,UTCOFFSET
				,TIMEZONE
				,PREFERREDLANGUAGE
			) 
			VALUES (
				rec.PARTICIPANTIDENTIFIER
				--,rec.GLOBALKEY
				,rec.EMAILADDRESS
				,rec.MIDDLENAME
				,rec.FIRSTNAME
				,rec.LASTNAME
				,rec.GENDER
				,rec.DATEOFBIRTH
				,rec.SECONDARYIDENTIFIER
				,rec.POSTALCODE
				,rec.ENROLLMENTDATE
				,rec.EVENTDATES
				,rec.CUSTOMFIELDS
				,rec.UTCOFFSET
				,rec.TIMEZONE
				,rec.PREFERREDLANGUAGE
			);
		end if;
	end loop;	
	commit;

--------------------------------------------------------
--  2 - Data insertion for Table SURVEYDEFINITIONS
--------------------------------------------------------
	--fully refreshed!
	EXECUTE IMMEDIATE 'truncate table SURVEYDEFINITIONS'; 

	insert into SURVEYDEFINITIONS (
		SURVEYDEFINITIONKEY
		,SURVEYKEY
		,SURVEYNAME
		,VERSIONNUMBER
		,INSERTEDDATE
		,DEFINITION
	)
	select
		fn_guid_to_raw(SURVEYDEFINITIONKEY) as SURVEYDEFINITIONKEY
		,fn_guid_to_raw(SURVEYKEY) as SURVEYKEY
		,SURVEYNAME
		,VERSIONNUMBER
		,TO_UTC_TIMESTAMP_TZ(INSERTEDDATE) as INSERTEDDATE
		,DEFINITION
	from stg_SURVEYDEFINITIONS
	order by SURVEYNAME asc
	,to_number(VERSIONNUMBER) desc
	;
	commit;

--------------------------------------------------------
--  3 - Data insertion for Table SURVEYTASKS
--------------------------------------------------------

	delete from SURVEYTASKS where rowid in ( 
		select o.rowid
			from stg_SURVEYTASKS s
			join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
			join SURVEYTASKS o on fn_guid_to_raw(s.SURVEYTASKKEY) = o.SURVEYTASKKEY
		where o.MODIFIEDDATE < TO_UTC_TIMESTAMP_TZ(s.MODIFIEDDATE)
		and length(s.PARTICIPANTIDENTIFIER) >= 13  --11/3/2021: modified to prevent function call error
		)
	;

	insert into SURVEYTASKS (
		SURVEYTASKKEY
		,PARTICIPANTIDENTIFIER
		,SURVEYKEY
		,SURVEYNAME
		,STATUS
		,DUEDATE
		,INSERTEDDATE
		,CREATEDBY
		,MODIFIEDDATE
	)
	select
		fn_guid_to_raw(s.SURVEYTASKKEY) as SURVEYTASKKEY
		,s.PARTICIPANTIDENTIFIER
		,fn_guid_to_raw(s.SURVEYKEY) as SURVEYKEY
		,s.SURVEYNAME
		,s.STATUS
		,TO_UTC_TIMESTAMP_TZ(s.DUEDATE) as DUEDATE
		,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
		,s.CREATEDBY
		,TO_UTC_TIMESTAMP_TZ(s.MODIFIEDDATE) as MODIFIEDDATE
	from stg_SURVEYTASKS s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join SURVEYTASKS o on fn_guid_to_raw(s.SURVEYTASKKEY) = o.SURVEYTASKKEY
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  4 - Data insertion for Table SURVEYRESULTS
--------------------------------------------------------

	insert into SURVEYRESULTS (
		SURVEYRESULTKEY
		,SURVEYKEY
		,SURVEYNAME
		,SURVEYVERSION
		,PARTICIPANTIDENTIFIER
		,SURVEYTASKKEY
		,TYPE
		,STARTDATE
		,ENDDATE
		,DEVICEPLATFORM
		,DEVICENAME
		,DEVICEOSVERSION
		,INSERTEDDATE
	)
	select
		fn_guid_to_raw(s.SURVEYRESULTKEY) as SURVEYRESULTKEY
		,fn_guid_to_raw(s.SURVEYKEY) as SURVEYKEY
		,s.SURVEYNAME
		,s.SURVEYVERSION
		,s.PARTICIPANTIDENTIFIER
		,fn_guid_to_raw(s.SURVEYTASKKEY) as SURVEYTASKKEY
		,s.TYPE
		,TO_UTC_TIMESTAMP_TZ(s.STARTDATE) as STARTDATE
		,TO_UTC_TIMESTAMP_TZ(s.ENDDATE) as ENDDATE
		,s.DEVICEPLATFORM
		,s.DEVICENAME
		,s.DEVICEOSVERSION
		,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
	from stg_SURVEYRESULTS s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join SURVEYTASKS f on fn_guid_to_raw(s.SURVEYTASKKEY) = f.SURVEYTASKKEY  --SURVEYTASKKEY only partially populated in stg_SURVEYRESULTS
	left join SURVEYRESULTS o on fn_guid_to_raw(s.SURVEYRESULTKEY) = o.SURVEYRESULTKEY
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date	--modified 3/30/2022
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  5 - Data insertion for Table SURVEYSTEPRESULTS
--------------------------------------------------------

	insert into SURVEYSTEPRESULTS (
		SURVEYSTEPRESULTKEY
		,SURVEYRESULTKEY
		,PARTICIPANTIDENTIFIER
		,STEPIDENTIFIER
		,STARTDATE
		,ENDDATE
	)
	select
		fn_guid_to_raw(s.SURVEYSTEPRESULTKEY) as SURVEYSTEPRESULTKEY
		,fn_guid_to_raw(s.SURVEYRESULTKEY) as SURVEYRESULTKEY
		,s.PARTICIPANTIDENTIFIER
		,s.STEPIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s.STARTDATE) as STARTDATE
		,TO_UTC_TIMESTAMP_TZ(s.ENDDATE) as ENDDATE
	from stg_SURVEYSTEPRESULTS s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	join SURVEYRESULTS f on fn_guid_to_raw(s.SURVEYRESULTKEY) = f.SURVEYRESULTKEY
	left join SURVEYSTEPRESULTS o on fn_guid_to_raw(s.SURVEYSTEPRESULTKEY) = o.SURVEYSTEPRESULTKEY
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date	--modified 3/30/2022
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  6 - Data insertion for Table SURVEYCONSENTSIGNATURERESULTS
--------------------------------------------------------

	insert into SURVEYCONSENTSIGNATURERESULTS (
		SURVEYCONSENTSIGNATURERESULTKEY
		,SURVEYSTEPRESULTKEY
		,SURVEYRESULTKEY
		,PARTICIPANTIDENTIFIER
		,RESULTIDENTIFIER
		,CONSENTED
		,SIGNATUREIDENTIFIER
		,SIGNATURETITLE
		,SIGNATUREGIVENNAME
		,SIGNATUREFAMILYNAME
		,SIGNATUREDATE
		,STARTDATE
		,ENDDATE
	)
	select
		fn_guid_to_raw(s.SURVEYCONSENTSIGNATURERESULTKEY) as SURVEYCONSENTSIGNATURERESULTKEY
		,fn_guid_to_raw(s.SURVEYSTEPRESULTKEY) as SURVEYSTEPRESULTKEY
		,fn_guid_to_raw(s.SURVEYRESULTKEY) as SURVEYRESULTKEY
		,s.PARTICIPANTIDENTIFIER
		,s.RESULTIDENTIFIER
		,case when s.CONSENTED = 'True' then 'Y' end CONSENTED
		,s.SIGNATUREIDENTIFIER
		,s.SIGNATURETITLE
		,s.SIGNATUREGIVENNAME
		,s.SIGNATUREFAMILYNAME
		,s.SIGNATUREDATE
		,TO_UTC_TIMESTAMP_TZ(s.STARTDATE) as STARTDATE
		,TO_UTC_TIMESTAMP_TZ(s.ENDDATE) as ENDDATE
	from stg_SURVEYCONSENTSIGNATURERESULTS s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	join SURVEYSTEPRESULTS f1 on fn_guid_to_raw(s.SURVEYSTEPRESULTKEY) = f1.SURVEYSTEPRESULTKEY
	join SURVEYRESULTS f2 on fn_guid_to_raw(s.SURVEYRESULTKEY) = f2.SURVEYRESULTKEY
	left join SURVEYCONSENTSIGNATURERESULTS o on fn_guid_to_raw(s.SURVEYCONSENTSIGNATURERESULTKEY) = o.SURVEYCONSENTSIGNATURERESULTKEY
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date	--modified 3/30/2022
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  7 - Data insertion for Table SURVEYQUESTIONRESULTS
--------------------------------------------------------

	insert into SURVEYQUESTIONRESULTS (
		SURVEYQUESTIONRESULTKEY
		,SURVEYSTEPRESULTKEY
		,SURVEYRESULTKEY
		,PARTICIPANTIDENTIFIER
		,RESULTIDENTIFIER
		,ANSWERS
		,STARTDATE
		,ENDDATE
	)
	select
		fn_guid_to_raw(s.SURVEYQUESTIONRESULTKEY) as SURVEYQUESTIONRESULTKEY
		,fn_guid_to_raw(s.SURVEYSTEPRESULTKEY) as SURVEYSTEPRESULTKEY
		,fn_guid_to_raw(s.SURVEYRESULTKEY) as SURVEYRESULTKEY
		,s.PARTICIPANTIDENTIFIER
		,s.RESULTIDENTIFIER
		,s.ANSWERS
		,TO_UTC_TIMESTAMP_TZ(s.STARTDATE) as STARTDATE
		,TO_UTC_TIMESTAMP_TZ(s.ENDDATE) as ENDDATE 
	from stg_SURVEYQUESTIONRESULTS s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	join SURVEYSTEPRESULTS f1 on fn_guid_to_raw(s.SURVEYSTEPRESULTKEY) = f1.SURVEYSTEPRESULTKEY
	join SURVEYRESULTS f2 on fn_guid_to_raw(s.SURVEYRESULTKEY) = f2.SURVEYRESULTKEY
	left join SURVEYQUESTIONRESULTS o on fn_guid_to_raw(s.SURVEYQUESTIONRESULTKEY) = o.SURVEYQUESTIONRESULTKEY
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date	--modified 3/30/2022
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  8 - Data insertion for Table AUXILIARYDATA
--------------------------------------------------------
	--log to track the uploaded data files by the study team
	insert into AUXILIARYDATA (
		AUXILIARYDATAKEY
		,PARTICIPANTIDENTIFIER
		,FILENAME
		,UPLOADDATE
		,UPLOADEDBY
		,OBSERVATIONDATE
	)
	select 
		fn_guid_to_raw(s.AUXILIARYDATAKEY) as AUXILIARYDATAKEY
		,s.PARTICIPANTIDENTIFIER
		,s.FILENAME
		,TO_UTC_TIMESTAMP_TZ(s.UPLOADDATE) as UPLOADDATE
		,s.UPLOADEDBY
		,TO_UTC_TIMESTAMP_TZ(s.OBSERVATIONDATE) as OBSERVATIONDATE
	from stg_AUXILIARYDATA s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join AUXILIARYDATA o on fn_guid_to_raw(s.AUXILIARYDATAKEY) = o.AUXILIARYDATAKEY
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  9 - Data insertion for Table FITBITACTIVITYLOGS
--------------------------------------------------------

	delete from FITBITACTIVITYLOGS where rowid in (
		select o.rowid
		from stg_FITBITACTIVITYLOGS s
		join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
		join FITBITACTIVITYLOGS o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
			and TO_UTC_TIMESTAMP_TZ(s.STARTDATE) = o.STARTDATE
			and TO_UTC_TIMESTAMP_TZ(s.ENDDATE) = o.ENDDATE --11/3/2021: modified to enforce uniqueness
			and s.ACTIVITYTYPEID = o.ACTIVITYTYPEID
		where o.LASTMODIFIED < TO_UTC_TIMESTAMP_TZ(s.LASTMODIFIED)
		and length(s.PARTICIPANTIDENTIFIER) >= 13  --11/3/2021: modified to prevent function call error
	)
	;

	insert into FITBITACTIVITYLOGS (
		PARTICIPANTIDENTIFIER
		,STARTDATE
		--,STARTDATE_UTC
		,ENDDATE
		,ACTIVEDURATION
		,ACTIVITYNAME
		,ACTIVITYTYPEID
		,AVERAGEHEARTRATE
		,CALORIES
		,DURATION
		,LASTMODIFIED
		,LOGTYPE
		,MANUALVALUESPECIFIEDCALORIES
		,MANUALVALUESPECIFIEDDISTANCE
		,MANUALVALUESPECIFIEDSTEPS
		,ORIGINALDURATION
		,ORIGINALSTARTTIME
		,STEPS
		,HEARTRATEZONEOUTOFRANGEMAX
		,HEARTRATEZONEOUTOFRANGEMIN
		,HEARTRATEZONEOUTOFRANGEMINUTES
		,HEARTRATEZONEFATBURNMAX
		,HEARTRATEZONEFATBURNMIN
		,HEARTRATEZONEFATBURNMINUTES
		,HEARTRATEZONECARDIOMAX
		,HEARTRATEZONECARDIOMIN
		,HEARTRATEZONECARDIOMINUTES
		,HEARTRATEZONEPEAKMAX
		,HEARTRATEZONEPEAKMIN
		,HEARTRATEZONEPEAKMINUTES
		,SEDENTARYMINUTES
		,LIGHTLYMINUTES
		,FAIRLYMINUTES
		,VERYMINUTES
	)
	select 
		s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s.STARTDATE) as STARTDATE
		--,TO_UTC_TIMESTAMP_TZ(s.STARTDATE_UTC) as STARTDATE_UTC
		,TO_UTC_TIMESTAMP_TZ(s.ENDDATE) as ENDDATE
		,s.ACTIVEDURATION
		,s.ACTIVITYNAME
		,s.ACTIVITYTYPEID
		,s.AVERAGEHEARTRATE
		,s.CALORIES
		,s.DURATION
		,TO_UTC_TIMESTAMP_TZ(s.LASTMODIFIED) as LASTMODIFIED
		,s.LOGTYPE
		,s.MANUALVALUESPECIFIEDCALORIES
		,s.MANUALVALUESPECIFIEDDISTANCE
		,s.MANUALVALUESPECIFIEDSTEPS
		,s.ORIGINALDURATION
		,TO_UTC_TIMESTAMP_TZ(s.ORIGINALSTARTTIME) as ORIGINALSTARTTIME
		,s.STEPS
		,s.HEARTRATEZONEOUTOFRANGEMAX
		,s.HEARTRATEZONEOUTOFRANGEMIN
		,s.HEARTRATEZONEOUTOFRANGEMINUTES
		,s.HEARTRATEZONEFATBURNMAX
		,s.HEARTRATEZONEFATBURNMIN
		,s.HEARTRATEZONEFATBURNMINUTES
		,s.HEARTRATEZONECARDIOMAX
		,s.HEARTRATEZONECARDIOMIN
		,s.HEARTRATEZONECARDIOMINUTES
		,s.HEARTRATEZONEPEAKMAX
		,s.HEARTRATEZONEPEAKMIN
		,s.HEARTRATEZONEPEAKMINUTES
		,s.SEDENTARYMINUTES
		,s.LIGHTLYMINUTES
		,s.FAIRLYMINUTES
		,s.VERYMINUTES
	from stg_FITBITACTIVITYLOGS s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join FITBITACTIVITYLOGS o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
		and TO_UTC_TIMESTAMP_TZ(s.STARTDATE) = o.STARTDATE
		and TO_UTC_TIMESTAMP_TZ(s.ENDDATE) = o.ENDDATE --11/3/2021: modified to enforce uniqueness
		and s.ACTIVITYTYPEID = o.ACTIVITYTYPEID       --6/10/2021: modified to handle the duplicates logged at the same time
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  10 - Data insertion for Table FITBITDAILYDATA
--------------------------------------------------------

	delete from FITBITDAILYDATA where rowid in (
		select o.rowid
		from stg_FITBITDAILYDATA s
		join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
		join FITBITDAILYDATA o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
			and to_date(substr(s."DATE",1,10), 'yyyy-mm-dd') = o.RECORD_DATE
		where o.MODIFIEDDATE < TO_UTC_TIMESTAMP_TZ(s.MODIFIEDDATE)
		and length(s.PARTICIPANTIDENTIFIER) >= 13  --11/3/2021: modified to prevent function call error
		)
	;

	insert into FITBITDAILYDATA (
		PARTICIPANTIDENTIFIER
		,RECORD_DATE
		,ACTIVITYCALORIES
		,BODYBMI
		,BODYFAT
		,BODYFATLOG
		,BODYFATLOGSOURCE
		,BODYWEIGHT
		,BODYWEIGHTLOGBODYWEIGHT
		,BODYWEIGHTLOGBMI
		,BODYWEIGHTLOGFAT
		,BODYWEIGHTLOGSOURCE
		,CALORIES
		,CALORIESBMR
		,DISTANCE
		,ELEVATION
		,FLOORS
		,FOODCALORIESIN
		,HEARTRATEINTRADAYCOUNT
		,HEARTRATEZONEOUTOFRANGECALORIESOUT
		,HEARTRATEZONEOUTOFRANGEMAX
		,HEARTRATEZONEOUTOFRANGEMIN
		,HEARTRATEZONEOUTOFRANGEMINUTES
		,HEARTRATEZONEFATBURNCALORIESOUT
		,HEARTRATEZONEFATBURNMAX
		,HEARTRATEZONEFATBURNMIN
		,HEARTRATEZONEFATBURNMINUTES
		,HEARTRATEZONECARDIOCALORIESOUT
		,HEARTRATEZONECARDIOMAX
		,HEARTRATEZONECARDIOMIN
		,HEARTRATEZONECARDIOMINUTES
		,HEARTRATEZONEPEAKCALORIESOUT
		,HEARTRATEZONEPEAKMAX
		,HEARTRATEZONEPEAKMIN
		,HEARTRATEZONEPEAKMINUTES
		,MINUTESFAIRLYACTIVE
		,MINUTESLIGHTLYACTIVE
		,MINUTESSEDENTARY
		,MINUTESVERYACTIVE
		,RESTINGHEARTRATE
		,STEPS
		,TRACKERACTIVITYCALORIES
		,TRACKERCALORIES
		,TRACKERDISTANCE
		,TRACKERELEVATION
		,TRACKERFLOORS
		,TRACKERMINUTESFAIRLYACTIVE
		,TRACKERMINUTESLIGHTLYACTIVE
		,TRACKERMINUTESSEDENTARY
		,TRACKERMINUTESVERYACTIVE
		,TRACKERSTEPS
		,WATER
		,MODIFIEDDATE
		,HEARTRATEINTRADAYMINUTECOUNT  --new field added on 3/29/2022
		--9/23/2022: add the below six fields
		,BREATHINGRATE
		,HRVDAILYRMSSD
		,HRVDEEPRMSSD
		,SPO2AVG
		,SPO2MIN
		,SPO2MAX
	)
	select 
		s.PARTICIPANTIDENTIFIER
		,to_date(substr(s."DATE",1,10), 'yyyy-mm-dd') as RECORD_DATE
		,s.ACTIVITYCALORIES
		,s.BODYBMI
		,s.BODYFAT
		,s.BODYFATLOG
		,s.BODYFATLOGSOURCE
		,s.BODYWEIGHT
		,s.BODYWEIGHTLOGBODYWEIGHT
		,s.BODYWEIGHTLOGBMI
		,s.BODYWEIGHTLOGFAT
		,s.BODYWEIGHTLOGSOURCE
		,s.CALORIES
		,s.CALORIESBMR
		,s.DISTANCE
		,s.ELEVATION
		,s.FLOORS
		,s.FOODCALORIESIN
		,s.HEARTRATEINTRADAYCOUNT
		,s.HEARTRATEZONEOUTOFRANGECALORIESOUT
		,s.HEARTRATEZONEOUTOFRANGEMAX
		,s.HEARTRATEZONEOUTOFRANGEMIN
		,s.HEARTRATEZONEOUTOFRANGEMINUTES
		,s.HEARTRATEZONEFATBURNCALORIESOUT
		,s.HEARTRATEZONEFATBURNMAX
		,s.HEARTRATEZONEFATBURNMIN
		,s.HEARTRATEZONEFATBURNMINUTES
		,s.HEARTRATEZONECARDIOCALORIESOUT
		,s.HEARTRATEZONECARDIOMAX
		,s.HEARTRATEZONECARDIOMIN
		,s.HEARTRATEZONECARDIOMINUTES
		,s.HEARTRATEZONEPEAKCALORIESOUT
		,s.HEARTRATEZONEPEAKMAX
		,s.HEARTRATEZONEPEAKMIN
		,s.HEARTRATEZONEPEAKMINUTES
		,s.MINUTESFAIRLYACTIVE
		,s.MINUTESLIGHTLYACTIVE
		,s.MINUTESSEDENTARY
		,s.MINUTESVERYACTIVE
		,s.RESTINGHEARTRATE
		,s.STEPS
		,s.TRACKERACTIVITYCALORIES
		,s.TRACKERCALORIES
		,s.TRACKERDISTANCE
		,s.TRACKERELEVATION
		,s.TRACKERFLOORS
		,s.TRACKERMINUTESFAIRLYACTIVE
		,s.TRACKERMINUTESLIGHTLYACTIVE
		,s.TRACKERMINUTESSEDENTARY
		,s.TRACKERMINUTESVERYACTIVE
		,s.TRACKERSTEPS
		,s.WATER
		,TO_UTC_TIMESTAMP_TZ(s.MODIFIEDDATE) as MODIFIEDDATE
		,s.HEARTRATEINTRADAYMINUTECOUNT
		--9/23/2022: add the below six fields
		,s.BREATHINGRATE
		,s.HRVDAILYRMSSD
		,s.HRVDEEPRMSSD
		,s.SPO2AVG
		,s.SPO2MIN
		,s.SPO2MAX
	from stg_FITBITDAILYDATA s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join FITBITDAILYDATA o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
		and to_date(substr(s."DATE",1,10), 'yyyy-mm-dd') = o.RECORD_DATE
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s."DATE",1,10) >= program_start_date
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  11 - Data insertion for Table FITBITDEVICES
--------------------------------------------------------

	insert into FITBITDEVICES (
		PARTICIPANTIDENTIFIER
		,RECORD_DATE
		--,RECORD_DATE_UTC
		,DEVICE
		,BATTERY
		,TYPE
	)
	select distinct   --2023-09-22: modified to remove duplicated record and fix ORA-00001 (unique constraint (IHS_2023.FITBITDEVICES_PK) violated)
		s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s."DATE") as RECORD_DATE
		--,TO_UTC_TIMESTAMP_TZ(RECORD_DATE_UTC) as RECORD_DATE_UTC
		,s.DEVICE
		,s.BATTERY
		,s.TYPE
	from stg_FITBITDEVICES s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join FITBITDEVICES o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
		and SYS_EXTRACT_UTC(TO_UTC_TIMESTAMP_TZ(s."DATE")) = o.RECORD_DATE_UTC
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and s."DATE" is not null  --2022-06-09: added to remove NULL date record
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  12 - Data insertion for Table FITBITRESTINGHEARTRATES
--------------------------------------------------------

	insert into FITBITRESTINGHEARTRATES (
		PARTICIPANTIDENTIFIER
		,RECORD_DATE
		,RESTINGHEARTRATE
	)
	select 
		s.PARTICIPANTIDENTIFIER
		,to_date(substr(s."DATE",1,10), 'yyyy-mm-dd') as RECORD_DATE
		,s.RESTINGHEARTRATE
	from stg_FITBITRESTINGHEARTRATES s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join FITBITRESTINGHEARTRATES o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
		and to_date(substr(s."DATE",1,10), 'yyyy-mm-dd') = o.RECORD_DATE
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s."DATE",1,10) >= program_start_date
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  13 - Data insertion for Table FITBITSLEEPLOGDETAILS
--------------------------------------------------------

	insert into FITBITSLEEPLOGDETAILS (
		PARTICIPANTIDENTIFIER
		,SLEEPLOGDATE
		,TYPE
		,STARTDATE
		--,STARTDATE_UTC
		,ENDDATE
		,VALUE
	)
	select
		s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s.SLEEPLOGDATE) as SLEEPLOGDATE
		,s.TYPE
		,TO_UTC_TIMESTAMP_TZ(s.STARTDATE) as STARTDATE
		--,TO_UTC_TIMESTAMP_TZ(s.STARTDATE_UTC) as STARTDATE_UTC
		,TO_UTC_TIMESTAMP_TZ(s.ENDDATE) as ENDDATE
		,s.VALUE
	from stg_FITBITSLEEPLOGDETAILS s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join FITBITSLEEPLOGDETAILS o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
		and SYS_EXTRACT_UTC(TO_UTC_TIMESTAMP_TZ(s.STARTDATE)) = o.STARTDATE_UTC
		and s.TYPE = o.TYPE
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  14 - Data insertion for Table FITBITSLEEPLOGS
--------------------------------------------------------

	insert into FITBITSLEEPLOGS (
		PARTICIPANTIDENTIFIER
		,STARTDATE
		--,STARTDATE_UTC
		,ENDDATE
		,DURATION
		,EFFICIENCY
		,INFOCODE
		,MINUTESAFTERWAKEUP
		,MINUTESASLEEP
		,MINUTESAWAKE
		,MINUTESTOFALLASLEEP
		,TIMEINBED
		,TYPE
		,SLEEPLEVELAWAKE
		,SLEEPLEVELASLEEP
		,SLEEPLEVELDEEP
		,SLEEPLEVELLIGHT
		,SLEEPLEVELREM
		,SLEEPLEVELRESTLESS
		,SLEEPLEVELWAKE
	)
	select
		s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s.STARTDATE) as STARTDATE
		--,TO_UTC_TIMESTAMP_TZ(s.STARTDATE_UTC) as STARTDATE_UTC
		,TO_UTC_TIMESTAMP_TZ(s.ENDDATE) as ENDDATE
		,s.DURATION
		,s.EFFICIENCY
		,s.INFOCODE
		,s.MINUTESAFTERWAKEUP
		,s.MINUTESASLEEP
		,s.MINUTESAWAKE
		,s.MINUTESTOFALLASLEEP
		,s.TIMEINBED
		,s.TYPE
		,s.SLEEPLEVELAWAKE
		,s.SLEEPLEVELASLEEP
		,s.SLEEPLEVELDEEP
		,s.SLEEPLEVELLIGHT
		,s.SLEEPLEVELREM
		,s.SLEEPLEVELRESTLESS
		,s.SLEEPLEVELWAKE
	from stg_FITBITSLEEPLOGS s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join FITBITSLEEPLOGS o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
		and SYS_EXTRACT_UTC(TO_UTC_TIMESTAMP_TZ(s.STARTDATE)) = o.STARTDATE_UTC
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  15 - Data insertion for Table HEALTHKITACTIVITYSUMMARIES
--------------------------------------------------------

	insert into HEALTHKITACTIVITYSUMMARIES (
		HEALTHKITACTIVITYSUMMARYKEY
		,PARTICIPANTIDENTIFIER
		,STARTDATE
		,ENDDATE
		,ACTIVEENERGYBURNED
		,ACTIVEENERGYBURNEDGOAL
		,APPLEEXERCISETIME
		,APPLEEXERCISETIMEGOAL
		,APPLESTANDHOURS
		,APPLESTANDHOURSGOAL
		,INSERTEDDATE
	)
	select
		fn_guid_to_raw(s.HEALTHKITACTIVITYSUMMARYKEY) as HEALTHKITACTIVITYSUMMARYKEY
		,s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s.STARTDATE) as STARTDATE
		,TO_UTC_TIMESTAMP_TZ(s.ENDDATE) as ENDDATE
		,s.ACTIVEENERGYBURNED
		,s.ACTIVEENERGYBURNEDGOAL
		,s.APPLEEXERCISETIME
		,s.APPLEEXERCISETIMEGOAL
		,s.APPLESTANDHOURS
		,s.APPLESTANDHOURSGOAL
		,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
	from stg_HEALTHKITACTIVITYSUMMARIES s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join HEALTHKITACTIVITYSUMMARIES o on fn_guid_to_raw(s.HEALTHKITACTIVITYSUMMARYKEY) = o.HEALTHKITACTIVITYSUMMARYKEY
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  16 - Data insertion for Table PROJECTDEVICEDATA
--------------------------------------------------------

    --new data added on 2023-12-05:
	insert into PROJECTDEVICEDATA (
        DEVICEDATAKEY
        ,IDENTIFIER
        ,DEVICEDATACONTEXTID
        ,PARTICIPANTID
        ,PARTICIPANTIDENTIFIER
        ,TYPE
        ,VALUE
        ,UNITS
        ,PROPERTIES
        ,STARTDATE
        ,OBSERVATIONDATE
        ,INSERTEDDATE
        ,MODIFIEDDATE
	)
	select
        s.DEVICEDATAKEY
        ,s.IDENTIFIER
        ,s.DEVICEDATACONTEXTID
        ,s.PARTICIPANTID
        ,s.PARTICIPANTIDENTIFIER
        ,s.TYPE
        ,s.VALUE
        ,s.UNITS
        ,s.PROPERTIES
        ,TO_UTC_TIMESTAMP_TZ(s.STARTDATE) as STARTDATE
        ,TO_UTC_TIMESTAMP_TZ(s.OBSERVATIONDATE) as OBSERVATIONDATE
        ,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
        ,TO_UTC_TIMESTAMP_TZ(s.MODIFIEDDATE) as MODIFIEDDATE
	from stg_PROJECTDEVICEDATA s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
    --left join PROJECTDEVICEDATA o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
    --    and TO_UTC_TIMESTAMP_TZ(s.OBSERVATIONDATE) = o.OBSERVATIONDATE
    --    and TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) = o.INSERTEDDATE
    --    and TO_UTC_TIMESTAMP_TZ(s.MODIFIEDDATE) = o.MODIFIEDDATE
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	--and substr(s.STARTDATE,1,10) >= program_start_date
	--and o.rowid is null
	;
	commit;    

/*
--updated on 4/5/2023: no longer in the CareEv data export
--------------------------------------------------------
--  18 - Data insertion for Table NOTIFICATIONS
--------------------------------------------------------
--changed again on 3/30/2022:
	insert into NOTIFICATIONS (
		ID
		,PARTICIPANTIDENTIFIER
		,NOTIFY_DATE
		,CONTENTVERSION
		,IDENTIFIER
		,NOTIFICATIONBODY
		--,NOTIFICATIONRECIPIENT	--not in the 3/30/2022 data file
		--,NOTIFICATIONSUBJECT		--not in the 3/30/2022 data file
		,NOTIFICATIONTITLE
		,NOTIFICATIONTYPE
		,SCOPE
		,STATUSCODE
	)
	select
		fn_guid_to_raw(s.ID) as ID
		,s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s."DATE") as NOTIFY_DATE
		,s.CONTENTVERSION
		,s.IDENTIFIER
		,s.NOTIFICATIONBODY
		--,s.NOTIFICATIONRECIPIENT	--not in the 3/30/2022 data file
		--,s.NOTIFICATIONSUBJECT		--not in the 3/30/2022 data file
		,s.NOTIFICATIONTITLE
		,s.NOTIFICATIONTYPE
		,fn_guid_to_raw(s.SCOPE) as SCOPE
		,s.STATUSCODE
	from stg_NOTIFICATIONS s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join NOTIFICATIONS o on fn_guid_to_raw(s.ID) = o.ID
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and o.rowid is null
	;
	commit;
*/
/*
--------------------------------------------------------
--  0 - Data insertion for Table SURVEYDICTIONARY
--------------------------------------------------------
    --added for IHS 2023:
    --fully refreshed!
	EXECUTE IMMEDIATE 'truncate table SURVEYDICTIONARY'; 

	insert into SURVEYDICTIONARY (
        SURVEYNAME
        ,SURVEYKEY
        ,SURVEYVERSION
        ,STEPIDENTIFIER
        ,RESULTIDENTIFIER
        ,QUESTIONTEXT
        ,ANSWERFORMAT
        ,ANSWERCHOICES
	)
	select
        SURVEYNAME
        ,fn_guid_to_raw(SURVEYKEY) as SURVEYKEY
        ,SURVEYVERSION
        ,STEPIDENTIFIER
        ,RESULTIDENTIFIER
        ,QUESTIONTEXT
        ,ANSWERFORMAT
        ,ANSWERCHOICES
	from stg_SurveyDictionary
    ;
	commit;
*/
end;]]></definition>
         <parameters/>
      </routine>
      <routine deterministic="false" name="IHS_2023.PR_POPULATE_IHS_GARMIN_DATA" type="PROCEDURE">
         <comment/>
         <definition language="PL/SQL"><![CDATA[procedure pr_populate_IHS_Garmin_data
-- use AUTHID CURRENT_USER to execute with the privileges and 
-- schema context of the calling user
AUTHID CURRENT_USER AS

begin

--------------------------------------------------------
--  1 - Data insertion for Table GARMINACTIVITYSUMMARY
--------------------------------------------------------

	delete from GARMINACTIVITYSUMMARY where rowid in ( 
		select o.rowid
			from stg_GARMINACTIVITYSUMMARY s
			join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
			join GARMINACTIVITYSUMMARY o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
                and s.SUMMARYID = o.SUMMARYID 
                and s.ACTIVITYID = o.ACTIVITYID 
                and s.STARTTIMEINSECONDS = o.STARTTIMEINSECONDS
		where o.INSERTEDDATE < TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE)
		and length(s.PARTICIPANTIDENTIFIER) >= 13
		)
	;

	insert into GARMINACTIVITYSUMMARY (
        PARTICIPANTID
        ,PARTICIPANTIDENTIFIER
        ,SUMMARYID
        ,ACTIVITYID
        ,STARTTIMEINSECONDS
        ,STARTTIMEOFFSETINSECONDS
        ,DURATIONINSECONDS
        ,ACTIVITYTYPE
        ,ACTIVITYNAME
        ,AVERAGEBIKECADENCEINROUNDSPERMINUTE
        ,AVERAGEHEARTRATEINBEATSPERMINUTE
        ,AVERAGERUNCADENCEINSTEPSPERMINUTE
        ,AVERAGESPEEDINMETERSPERSECOND
        ,AVERAGESWIMCADENCEINSTROKESPERMINUTE
        ,AVERAGEPACEINMINUTESPERKILOMETER
        ,ACTIVEKILOCALORIES
        ,DEVICENAME
        ,DISTANCEINMETERS
        ,MAXBIKECADENCEINROUNDSPERMINUTE
        ,MAXHEARTRATEINBEATSPERMINUTE
        ,MAXPACEINMINUTESPERKILOMETER
        ,MAXRUNCADENCEINSTEPSPERMINUTE
        ,MAXSPEEDINMETERSPERSECOND
        ,NUMBEROFACTIVELENGTHS
        ,STARTINGLATITUDEINDEGREE
        ,STARTINGLONGITUDEINDEGREE
        ,STEPS
        ,TOTALELEVATIONGAININMETERS
        ,TOTALELEVATIONLOSSINMETERS
        ,ISPARENT
        ,PARENTSUMMARYID
        ,MANUAL
        ,INSERTEDDATE
	)
	select
		s.PARTICIPANTID
        ,s.PARTICIPANTIDENTIFIER
        ,s.SUMMARYID
        ,s.ACTIVITYID
        ,s.STARTTIMEINSECONDS
        ,s.STARTTIMEOFFSETINSECONDS
        ,s.DURATIONINSECONDS
        ,s.ACTIVITYTYPE
        ,s.ACTIVITYNAME
        ,s.AVERAGEBIKECADENCEINROUNDSPERMINUTE
        ,s.AVERAGEHEARTRATEINBEATSPERMINUTE
        ,s.AVERAGERUNCADENCEINSTEPSPERMINUTE
        ,s.AVERAGESPEEDINMETERSPERSECOND
        ,s.AVERAGESWIMCADENCEINSTROKESPERMINUTE
        ,s.AVERAGEPACEINMINUTESPERKILOMETER
        ,s.ACTIVEKILOCALORIES
        ,s.DEVICENAME
        ,s.DISTANCEINMETERS
        ,s.MAXBIKECADENCEINROUNDSPERMINUTE
        ,s.MAXHEARTRATEINBEATSPERMINUTE
        ,s.MAXPACEINMINUTESPERKILOMETER
        ,s.MAXRUNCADENCEINSTEPSPERMINUTE
        ,s.MAXSPEEDINMETERSPERSECOND
        ,s.NUMBEROFACTIVELENGTHS
        ,s.STARTINGLATITUDEINDEGREE
        ,s.STARTINGLONGITUDEINDEGREE
        ,s.STEPS
        ,s.TOTALELEVATIONGAININMETERS
        ,s.TOTALELEVATIONLOSSINMETERS
        ,s.ISPARENT
        ,s.PARENTSUMMARYID
        ,s.MANUAL
        ,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
	from stg_GARMINACTIVITYSUMMARY s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join GARMINACTIVITYSUMMARY o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
             and s.SUMMARYID = o.SUMMARYID 
             and s.ACTIVITYID = o.ACTIVITYID 
             and s.STARTTIMEINSECONDS = o.STARTTIMEINSECONDS
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  2 - Data insertion for Table GARMINDAILYSUMMARY
--------------------------------------------------------

	delete from GARMINDAILYSUMMARY where rowid in ( 
		select o.rowid
			from stg_GARMINDAILYSUMMARY s
			join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
			join GARMINDAILYSUMMARY o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
                and s.SUMMARYID = o.SUMMARYID 
                and s.STARTTIMEINSECONDS = o.STARTTIMEINSECONDS
                and to_date(s.CALENDARDATE, 'yyyy-mm-dd') = o.CALENDARDATE
		where o.INSERTEDDATE < TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE)
		and length(s.PARTICIPANTIDENTIFIER) >= 13
		)
	;

	insert into GARMINDAILYSUMMARY (
        PARTICIPANTID
        ,PARTICIPANTIDENTIFIER
        ,SUMMARYID
        ,STARTTIMEINSECONDS
        ,STARTTIMEOFFSETINSECONDS
        ,DURATIONINSECONDS
        ,CALENDARDATE
        ,ACTIVEKILOCALORIES
        ,BMRKILOCALORIES
        ,STEPS
        ,DISTANCEINMETERS
        ,ACTIVETIMEINSECONDS
        ,MODERATEINTENSITYDURATIONINSECONDS
        ,VIGOROUSINTENSITYDURATIONINSECONDS
        ,FLOORSCLIMBED
        ,MINHEARTRATEINBEATSPERMINUTE
        ,MAXHEARTRATEINBEATSPERMINUTE
        ,AVERAGEHEARTRATEINBEATSPERMINUTE
        ,RESTINGHEARTRATEINBEATSPERMINUTE
        ,STEPSGOAL
        ,INTENSITYDURATIONGOALINSECONDS
        ,FLOORSCLIMBEDGOAL
        ,AVERAGESTRESSLEVEL
        ,MAXSTRESSLEVEL
        ,STRESSDURATIONINSECONDS
        ,RESTSTRESSDURATIONINSECONDS
        ,ACTIVITYSTRESSDURATIONINSECONDS
        ,LOWSTRESSDURATIONINSECONDS
        ,MEDIUMSTRESSDURATIONINSECONDS
        ,HIGHSTRESSDURATIONINSECONDS
        ,STRESSQUALIFIER
        ,INSERTEDDATE
	)
	select
		s.PARTICIPANTID
        ,s.PARTICIPANTIDENTIFIER
        ,s.SUMMARYID
        ,s.STARTTIMEINSECONDS
        ,s.STARTTIMEOFFSETINSECONDS
        ,s.DURATIONINSECONDS
        ,to_date(s.CALENDARDATE, 'yyyy-mm-dd') as CALENDARDATE
        ,s.ACTIVEKILOCALORIES
        ,s.BMRKILOCALORIES
        ,s.STEPS
        ,s.DISTANCEINMETERS
        ,s.ACTIVETIMEINSECONDS
        ,s.MODERATEINTENSITYDURATIONINSECONDS
        ,s.VIGOROUSINTENSITYDURATIONINSECONDS
        ,s.FLOORSCLIMBED
        ,s.MINHEARTRATEINBEATSPERMINUTE
        ,s.MAXHEARTRATEINBEATSPERMINUTE
        ,s.AVERAGEHEARTRATEINBEATSPERMINUTE
        ,s.RESTINGHEARTRATEINBEATSPERMINUTE
        ,s.STEPSGOAL
        ,s.INTENSITYDURATIONGOALINSECONDS
        ,s.FLOORSCLIMBEDGOAL
        ,s.AVERAGESTRESSLEVEL
        ,s.MAXSTRESSLEVEL
        ,s.STRESSDURATIONINSECONDS
        ,s.RESTSTRESSDURATIONINSECONDS
        ,s.ACTIVITYSTRESSDURATIONINSECONDS
        ,s.LOWSTRESSDURATIONINSECONDS
        ,s.MEDIUMSTRESSDURATIONINSECONDS
        ,s.HIGHSTRESSDURATIONINSECONDS
        ,s.STRESSQUALIFIER
        ,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
	from stg_GARMINDAILYSUMMARY s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join GARMINDAILYSUMMARY o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
             and s.SUMMARYID = o.SUMMARYID 
             and s.STARTTIMEINSECONDS = o.STARTTIMEINSECONDS
             and to_date(s.CALENDARDATE, 'yyyy-mm-dd') = o.CALENDARDATE
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  3 - Data insertion for Table GARMINDAILYSUMMARY_SAMPLES
--------------------------------------------------------

	insert into GARMINDAILYSUMMARY_SAMPLES (
        SUMMARYID
        ,OFFSETINSECONDS
        ,HEARTRATE
	)
	select
		s.SUMMARYID
        ,s.OFFSETINSECONDS
        ,s.HEARTRATE
	from stg_GARMINDAILYSUMMARY_SAMPLES s
    where REMAINDER(to_number(s.OFFSETINSECONDS), 60) = 0   --only insert heart rate data at a minute
    order by s.SUMMARYID, to_number(s.OFFSETINSECONDS) asc
    ;
	commit;

--------------------------------------------------------
--  4 - Data insertion for Table GARMINEPOCHSUMMARY
--------------------------------------------------------

	delete from GARMINEPOCHSUMMARY where rowid in ( 
		select o.rowid
			from stg_GARMINEPOCHSUMMARY s
			join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
			join GARMINEPOCHSUMMARY o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
                and s.SUMMARYID = o.SUMMARYID 
                and s.STARTTIMEINSECONDS = o.STARTTIMEINSECONDS
		where o.INSERTEDDATE < TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE)
		and length(s.PARTICIPANTIDENTIFIER) >= 13
		)
	;

	insert into GARMINEPOCHSUMMARY (
        PARTICIPANTID
        ,PARTICIPANTIDENTIFIER
        ,SUMMARYID
        ,STARTTIMEINSECONDS
        ,STARTTIMEOFFSETINSECONDS
        ,DURATIONINSECONDS
        ,ACTIVITYTYPE
        ,ACTIVETIMEINSECONDS
        ,STEPS
        ,DISTANCEINMETERS
        ,ACTIVEKILOCALORIES
        ,MET
        ,INTENSITY
        ,MEANMOTIONINTENSITY
        ,MAXMOTIONINTENSITY
        ,INSERTEDDATE
	)
	select
		s.PARTICIPANTID
        ,s.PARTICIPANTIDENTIFIER
        ,s.SUMMARYID
        ,s.STARTTIMEINSECONDS
        ,s.STARTTIMEOFFSETINSECONDS
        ,s.DURATIONINSECONDS
        ,s.ACTIVITYTYPE
        ,s.ACTIVETIMEINSECONDS
        ,s.STEPS
        ,s.DISTANCEINMETERS
        ,s.ACTIVEKILOCALORIES
        ,s.MET
        ,s.INTENSITY
        ,s.MEANMOTIONINTENSITY
        ,s.MAXMOTIONINTENSITY
        ,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
	from stg_GARMINEPOCHSUMMARY s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join GARMINEPOCHSUMMARY o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
             and s.SUMMARYID = o.SUMMARYID 
             and s.STARTTIMEINSECONDS = o.STARTTIMEINSECONDS
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  5 - Data insertion for Table GARMINHRVSUMMARY
--------------------------------------------------------

	delete from GARMINHRVSUMMARY where rowid in ( 
		select o.rowid
			from stg_GARMINHRVSUMMARY s
			join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
			join GARMINHRVSUMMARY o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
                and s.SUMMARYID = o.SUMMARYID 
                and s.STARTTIMEINSECONDS = o.STARTTIMEINSECONDS
                and to_date(s.CALENDARDATE, 'yyyy-mm-dd') = o.CALENDARDATE
		where o.INSERTEDDATE < TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE)
		and length(s.PARTICIPANTIDENTIFIER) >= 13
		)
	;

	insert into GARMINHRVSUMMARY (
        PARTICIPANTID
        ,PARTICIPANTIDENTIFIER
        ,SUMMARYID
        ,STARTTIMEINSECONDS
        ,STARTTIMEOFFSETINSECONDS
        ,DURATIONINSECONDS
        ,CALENDARDATE
        ,LASTNIGHTAVG
        ,LASTNIGHT5MINHIGH
        ,INSERTEDDATE
	)
	select
		s.PARTICIPANTID
        ,s.PARTICIPANTIDENTIFIER
        ,s.SUMMARYID
        ,s.STARTTIMEINSECONDS
        ,s.STARTTIMEOFFSETINSECONDS
        ,s.DURATIONINSECONDS
        ,to_date(s.CALENDARDATE, 'yyyy-mm-dd') as CALENDARDATE
        ,s.LASTNIGHTAVG
        ,s.LASTNIGHT5MINHIGH
        ,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
	from stg_GARMINHRVSUMMARY s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join GARMINHRVSUMMARY o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
             and s.SUMMARYID = o.SUMMARYID 
             and s.STARTTIMEINSECONDS = o.STARTTIMEINSECONDS
             and to_date(s.CALENDARDATE, 'yyyy-mm-dd') = o.CALENDARDATE
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  6 - Data insertion for Table GARMINHRVSUMMARY_SAMPLES
--------------------------------------------------------

	insert into GARMINHRVSUMMARY_SAMPLES (
        SUMMARYID
        ,OFFSETINSECONDS
        ,HRV_VALUE
	)
	select
		s.SUMMARYID
        ,s.OFFSETINSECONDS
        ,VALUE
	from stg_GARMINHRVSUMMARY_SAMPLES s
    order by s.SUMMARYID, to_number(s.OFFSETINSECONDS) asc
    ;
	commit;

--------------------------------------------------------
--  7 - Data insertion for Table GARMINMOVEIQACTIVITYSUMMARY
--------------------------------------------------------

	delete from GARMINMOVEIQACTIVITYSUMMARY where rowid in ( 
		select o.rowid
			from stg_GARMINMOVEIQACTIVITYSUMMARY s
			join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
			join GARMINMOVEIQACTIVITYSUMMARY o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
                and s.SUMMARYID = o.SUMMARYID 
                and s.STARTTIMEINSECONDS = o.STARTTIMEINSECONDS
                and to_date(s.CALENDARDATE, 'yyyy-mm-dd') = o.CALENDARDATE
		where o.INSERTEDDATE < TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE)
		and length(s.PARTICIPANTIDENTIFIER) >= 13
		)
	;

	insert into GARMINMOVEIQACTIVITYSUMMARY (
        PARTICIPANTID
        ,PARTICIPANTIDENTIFIER
        ,SUMMARYID
        ,STARTTIMEINSECONDS
        ,OFFSETINSECONDS
        ,DURATIONINSECONDS
        ,CALENDARDATE
        ,ACTIVITYTYPE
        ,ACTIVITYSUBTYPE
        ,INSERTEDDATE
	)
	select
        s.PARTICIPANTID
        ,s.PARTICIPANTIDENTIFIER
        ,s.SUMMARYID
        ,s.STARTTIMEINSECONDS
        ,s.OFFSETINSECONDS
        ,s.DURATIONINSECONDS
        ,to_date(s.CALENDARDATE, 'yyyy-mm-dd') as CALENDARDATE
        ,s.ACTIVITYTYPE
        ,s.ACTIVITYSUBTYPE
        ,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
	from stg_GARMINMOVEIQACTIVITYSUMMARY s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join GARMINMOVEIQACTIVITYSUMMARY o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
             and s.SUMMARYID = o.SUMMARYID 
             and s.STARTTIMEINSECONDS = o.STARTTIMEINSECONDS
             and to_date(s.CALENDARDATE, 'yyyy-mm-dd') = o.CALENDARDATE
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  8 - Data insertion for Table GARMINSLEEPSUMMARY
--------------------------------------------------------

	delete from GARMINSLEEPSUMMARY where rowid in ( 
		select o.rowid
			from stg_GARMINSLEEPSUMMARY s
			join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
			join GARMINSLEEPSUMMARY o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
                and s.SUMMARYID = o.SUMMARYID 
                and s.STARTTIMEINSECONDS = o.STARTTIMEINSECONDS
                and to_date(s.CALENDARDATE, 'yyyy-mm-dd') = o.CALENDARDATE
		where o.INSERTEDDATE < TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE)
		and length(s.PARTICIPANTIDENTIFIER) >= 13
		)
	;

	insert into GARMINSLEEPSUMMARY (
        PARTICIPANTID
        ,PARTICIPANTIDENTIFIER
        ,SUMMARYID
        ,STARTTIMEINSECONDS
        ,STARTTIMEOFFSETINSECONDS
        ,DURATIONINSECONDS
        ,CALENDARDATE
        ,UNMEASURABLESLEEPINSECONDS
        ,DEEPSLEEPDURATIONINSECONDS
        ,LIGHTSLEEPDURATIONINSECONDS
        ,REMSLEEPINSECONDS
        ,AWAKEDURATIONINSECONDS
        ,VALIDATION
        ,OVERALLSLEEPSCOREVALUE
        ,OVERALLSLEEPSCOREQUALIFIERKEY
        ,INSERTEDDATE
	)
	select
        s.PARTICIPANTID
        ,s.PARTICIPANTIDENTIFIER
        ,s.SUMMARYID
        ,s.STARTTIMEINSECONDS
        ,s.STARTTIMEOFFSETINSECONDS
        ,s.DURATIONINSECONDS
        ,to_date(s.CALENDARDATE, 'yyyy-mm-dd') as CALENDARDATE
        ,s.UNMEASURABLESLEEPINSECONDS
        ,s.DEEPSLEEPDURATIONINSECONDS
        ,s.LIGHTSLEEPDURATIONINSECONDS
        ,s.REMSLEEPINSECONDS
        ,s.AWAKEDURATIONINSECONDS
        ,s.VALIDATION
        ,s.OVERALLSLEEPSCOREVALUE
        ,s.OVERALLSLEEPSCOREQUALIFIERKEY
        ,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
	from stg_GARMINSLEEPSUMMARY s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join GARMINSLEEPSUMMARY o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
             and s.SUMMARYID = o.SUMMARYID 
             and s.STARTTIMEINSECONDS = o.STARTTIMEINSECONDS
             and to_date(s.CALENDARDATE, 'yyyy-mm-dd') = o.CALENDARDATE
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  9 - Data insertion for Table GARMINSLEEPSUMMARY_DURATION
--------------------------------------------------------

	insert into GARMINSLEEPSUMMARY_DURATION (
        SUMMARYID
        ,STARTTIMEINSECONDS
        ,ENDTIMEINSECONDS
        ,SLEEPLEVEL
	)
	select
        s.SUMMARYID
        ,s.STARTTIMEINSECONDS
        ,s.ENDTIMEINSECONDS
        ,s.SLEEPLEVEL
	from stg_GARMINSLEEPSUMMARY_DURATION s
    ;
	commit;

--------------------------------------------------------
--  10 - Data insertion for Table GARMINSLEEPSUMMARY_SCORE
--------------------------------------------------------

	insert into GARMINSLEEPSUMMARY_SCORE (
        SUMMARYID
        ,SCORETYPE
        ,QUALIFIERKEY
	)
	select
        s.SUMMARYID
        ,s.SCORETYPE
        ,s.QUALIFIERKEY
	from stg_GARMINSLEEPSUMMARY_SCORE s
    ;
	commit;

--------------------------------------------------------
--  11 - Data insertion for Table GARMINSTRESSDETAILSUMMARY
--------------------------------------------------------

	delete from GARMINSTRESSDETAILSUMMARY where rowid in ( 
		select o.rowid
			from stg_GARMINSTRESSDETAILSUMMARY s
			join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
			join GARMINSTRESSDETAILSUMMARY o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
                and s.SUMMARYID = o.SUMMARYID 
                and s.STARTTIMEINSECONDS = o.STARTTIMEINSECONDS
                and to_date(s.CALENDARDATE, 'yyyy-mm-dd') = o.CALENDARDATE
		where o.INSERTEDDATE < TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE)
		and length(s.PARTICIPANTIDENTIFIER) >= 13
		)
	;

	insert into GARMINSTRESSDETAILSUMMARY (
        PARTICIPANTID
        ,PARTICIPANTIDENTIFIER
        ,SUMMARYID
        ,STARTTIMEINSECONDS
        ,STARTTIMEOFFSETINSECONDS
        ,DURATIONINSECONDS
        ,CALENDARDATE
        ,INSERTEDDATE
	)
	select
        s.PARTICIPANTID
        ,s.PARTICIPANTIDENTIFIER
        ,s.SUMMARYID
        ,s.STARTTIMEINSECONDS
        ,s.STARTTIMEOFFSETINSECONDS
        ,s.DURATIONINSECONDS
        ,to_date(s.CALENDARDATE, 'yyyy-mm-dd') as CALENDARDATE
        ,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
	from stg_GARMINSTRESSDETAILSUMMARY s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join GARMINSTRESSDETAILSUMMARY o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
             and s.SUMMARYID = o.SUMMARYID 
             and s.STARTTIMEINSECONDS = o.STARTTIMEINSECONDS
             and to_date(s.CALENDARDATE, 'yyyy-mm-dd') = o.CALENDARDATE
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  12 - Data insertion for Table GARMINSTRESSDETAILSUMMARY_SAMPLES
--------------------------------------------------------

	insert into GARMINSTRESSDETAILSUMMARY_SAMPLES (
        SUMMARYID
        ,OFFSETINSECONDS
        ,VALUE
        ,SAMPLETYPE
	)
	select
        s.SUMMARYID
        ,s.OFFSETINSECONDS
        ,s.VALUE
        ,s.SAMPLETYPE
	from stg_GARMINSTRESSDETAILSUMMARY_SAMPLES s
    ;
	commit;

--------------------------------------------------------
--  13 - Data insertion for Table GARMINTHIRDPARTYDAILYSUMMARY
--------------------------------------------------------

	delete from GARMINTHIRDPARTYDAILYSUMMARY where rowid in ( 
		select o.rowid
			from stg_GARMINTHIRDPARTYDAILYSUMMARY s
			join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
			join GARMINTHIRDPARTYDAILYSUMMARY o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
                and s.SUMMARYID = o.SUMMARYID 
                and s.STARTTIMEINSECONDS = o.STARTTIMEINSECONDS
                and to_date(s.CALENDARDATE, 'yyyy-mm-dd') = o.CALENDARDATE
		where o.INSERTEDDATE < TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE)
		and length(s.PARTICIPANTIDENTIFIER) >= 13
		)
	;

	insert into GARMINTHIRDPARTYDAILYSUMMARY (
        PARTICIPANTID
        ,PARTICIPANTIDENTIFIER
        ,SUMMARYID
        ,STARTTIMEINSECONDS
        ,STARTTIMEOFFSETINSECONDS
        ,DURATIONINSECONDS
        ,CALENDARDATE
        ,ACTIVEKILOCALORIES
        ,BMRKILOCALORIES
        ,STEPS
        ,DISTANCEINMETERS
        ,ACTIVETIMEINSECONDS
        ,MODERATEINTENSITYDURATIONINSECONDS
        ,VIGOROUSINTENSITYDURATIONINSECONDS
        ,FLOORSCLIMBED
        ,STEPSGOAL
        ,MINHEARTRATEINBEATSPERMINUTE
        ,MAXHEARTRATEINBEATSPERMINUTE
        ,AVERAGEHEARTRATEINBEATSPERMINUTE
        ,SOURCE
        ,INSERTEDDATE
	)
	select
        s.PARTICIPANTID
        ,s.PARTICIPANTIDENTIFIER
        ,s.SUMMARYID
        ,s.STARTTIMEINSECONDS
        ,s.STARTTIMEOFFSETINSECONDS
        ,s.DURATIONINSECONDS
        ,to_date(s.CALENDARDATE, 'yyyy-mm-dd') as CALENDARDATE
        ,s.ACTIVEKILOCALORIES
        ,s.BMRKILOCALORIES
        ,s.STEPS
        ,s.DISTANCEINMETERS
        ,s.ACTIVETIMEINSECONDS
        ,s.MODERATEINTENSITYDURATIONINSECONDS
        ,s.VIGOROUSINTENSITYDURATIONINSECONDS
        ,s.FLOORSCLIMBED
        ,s.STEPSGOAL
        ,s.MINHEARTRATEINBEATSPERMINUTE
        ,s.MAXHEARTRATEINBEATSPERMINUTE
        ,s.AVERAGEHEARTRATEINBEATSPERMINUTE
        ,s.SOURCE
        ,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
	from stg_GARMINTHIRDPARTYDAILYSUMMARY s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join GARMINTHIRDPARTYDAILYSUMMARY o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
             and s.SUMMARYID = o.SUMMARYID 
             and s.STARTTIMEINSECONDS = o.STARTTIMEINSECONDS
             and to_date(s.CALENDARDATE, 'yyyy-mm-dd') = o.CALENDARDATE
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  14 - Data insertion for Table GARMINTHIRDPARTYDAILYSUMMARY_SAMPLES
--------------------------------------------------------

	insert into GARMINTHIRDPARTYDAILYSUMMARY_SAMPLES (
        SUMMARYID
        ,OFFSETINSECONDS
        ,HEARTRATE
	)
	select
        s.SUMMARYID
        ,s.OFFSETINSECONDS
        ,s.HEARTRATE
	from stg_GARMINTHIRDPARTYDAILYSUMMARY_SAMPLES s
    ;
	commit;

--------------------------------------------------------
--  15 - Data insertion for Table GARMINUSERMETRICSSUMMARY
--------------------------------------------------------

	delete from GARMINUSERMETRICSSUMMARY where rowid in ( 
		select o.rowid
			from stg_GARMINUSERMETRICSSUMMARY s
			join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
			join GARMINUSERMETRICSSUMMARY o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
                and s.SUMMARYID = o.SUMMARYID 
                and to_date(s.CALENDARDATE, 'yyyy-mm-dd') = o.CALENDARDATE
		where o.INSERTEDDATE < TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE)
		and length(s.PARTICIPANTIDENTIFIER) >= 13
		)
	;

	insert into GARMINUSERMETRICSSUMMARY (
        PARTICIPANTID
        ,PARTICIPANTIDENTIFIER
        ,SUMMARYID
        ,CALENDARDATE
        ,VO2MAX
        ,ENHANCED
        ,FITNESSAGE
        ,INSERTEDDATE
	)
	select
        s.PARTICIPANTID
        ,s.PARTICIPANTIDENTIFIER
        ,s.SUMMARYID
        ,to_date(s.CALENDARDATE, 'yyyy-mm-dd') as CALENDARDATE
        ,s.VO2MAX
        ,s.ENHANCED
        ,s.FITNESSAGE
        ,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
	from stg_GARMINUSERMETRICSSUMMARY s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join GARMINUSERMETRICSSUMMARY o on s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
             and s.SUMMARYID = o.SUMMARYID 
             and to_date(s.CALENDARDATE, 'yyyy-mm-dd') = o.CALENDARDATE
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and o.rowid is null
	;
	commit;

end;]]></definition>
         <parameters/>
      </routine>
      <routine deterministic="false" name="IHS_2023.PR_POPULATE_IHS_HEALTHKITSAMPLES_DATA" type="PROCEDURE">
         <comment/>
         <definition language="PL/SQL"><![CDATA[procedure pr_populate_IHS_HEALTHKITSAMPLES_data (program_start_date varchar2 := '2023-04-01')
-- use AUTHID CURRENT_USER to execute with the privileges and 
-- schema context of the calling user
AUTHID CURRENT_USER AS

begin

--------------------------------------------------------
--  17-1 - Data insertion for Table HEALTHKITSAMPLES_APPLEEXERCISETIME
--------------------------------------------------------

--updated on 4/18/2022 to handle ORA-00001: unique constraint vaiolation on (IHS_2022.HEALTHKITSAMPLES_APPLEEXERCISETIME_PK)
--(duplicated records inserted on different time)
	insert into HEALTHKITSAMPLES_APPLEEXERCISETIME (
		HEALTHKITSAMPLEKEY
		,PARTICIPANTIDENTIFIER
		,STARTDATE
		,RECORD_DATE
		,VALUE
		,UNITS
		,SOURCEIDENTIFIER
		,SOURCENAME
		,SOURCEVERSION
		,SOURCEOPERATINGSYSTEMVERSION
		,SOURCEPRODUCTTYPE
		,DEVICENAME
		,DEVICEMODEL
		,DEVICEMANUFACTURER
		,DEVICEHARDWAREVERSION
		,DEVICESOFTWAREVERSION
		,DEVICEFIRMWAREVERSION
		,DEVICELOCALIDENTIFIER
		,DEVICEFDAIDENTIFIER
		,METADATA
		,INSERTEDDATE
	)
    with ranked_recs as (
		select
			fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) as HEALTHKITSAMPLEKEY
			,s.PARTICIPANTIDENTIFIER
			,TO_UTC_TIMESTAMP_TZ(s.STARTDATE) as STARTDATE
			,TO_UTC_TIMESTAMP_TZ(s."DATE") as RECORD_DATE
			,s.VALUE
			,s.UNITS
			,s.SOURCEIDENTIFIER
			,s.SOURCENAME
			,s.SOURCEVERSION
			,s.SOURCEOPERATINGSYSTEMVERSION
			,s.SOURCEPRODUCTTYPE
			,s.DEVICENAME
			,s.DEVICEMODEL
			,s.DEVICEMANUFACTURER
			,s.DEVICEHARDWAREVERSION
			,s.DEVICESOFTWAREVERSION
			,s.DEVICEFIRMWAREVERSION
			,s.DEVICELOCALIDENTIFIER
			,s.DEVICEFDAIDENTIFIER
			,s.METADATA
			,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
			,ROW_NUMBER() OVER (PARTITION BY s.HEALTHKITSAMPLEKEY ORDER BY s.INSERTEDDATE desc) AS rn
		from stg_HEALTHKITSAMPLES_APPLEEXERCISETIME s
			where length(s.PARTICIPANTIDENTIFIER) >= 13
		and substr(s.STARTDATE,1,10) >= program_start_date
    )
    select 		
        s.HEALTHKITSAMPLEKEY
		,s.PARTICIPANTIDENTIFIER
		,s.STARTDATE
		,s.RECORD_DATE
		,s.VALUE
		,s.UNITS
		,s.SOURCEIDENTIFIER
		,s.SOURCENAME
		,s.SOURCEVERSION
		,s.SOURCEOPERATINGSYSTEMVERSION
		,s.SOURCEPRODUCTTYPE
		,s.DEVICENAME
		,s.DEVICEMODEL
		,s.DEVICEMANUFACTURER
		,s.DEVICEHARDWAREVERSION
		,s.DEVICESOFTWAREVERSION
		,s.DEVICEFIRMWAREVERSION
		,s.DEVICELOCALIDENTIFIER
		,s.DEVICEFDAIDENTIFIER
		,s.METADATA
		,s.INSERTEDDATE
    from ranked_recs s
    join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join HEALTHKITSAMPLES_APPLEEXERCISETIME o on s.HEALTHKITSAMPLEKEY = o.HEALTHKITSAMPLEKEY
    where rn=1
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  17-2 - Data insertion for Table HEALTHKITSAMPLES_HEARTRATE
--------------------------------------------------------

--updated on 4/18/2022 to prevent ORA-00001: unique constraint vaiolation on (IHS_2022.HEALTHKITSAMPLES_HEARTRATE_PK)
--(duplicated records could be inserted on different time)
	insert into HEALTHKITSAMPLES_HEARTRATE (
		HEALTHKITSAMPLEKEY
		,PARTICIPANTIDENTIFIER
		,STARTDATE
		,RECORD_DATE
		,VALUE
		,UNITS
		,SOURCEIDENTIFIER
		,SOURCENAME
		,SOURCEVERSION
		,SOURCEOPERATINGSYSTEMVERSION
		,SOURCEPRODUCTTYPE
		,DEVICENAME
		,DEVICEMODEL
		,DEVICEMANUFACTURER
		,DEVICEHARDWAREVERSION
		,DEVICESOFTWAREVERSION
		,DEVICEFIRMWAREVERSION
		,DEVICELOCALIDENTIFIER
		,DEVICEFDAIDENTIFIER
		,METADATA
		,INSERTEDDATE
	)
    with ranked_recs as (
		select
			fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) as HEALTHKITSAMPLEKEY
			,s.PARTICIPANTIDENTIFIER
			,TO_UTC_TIMESTAMP_TZ(s.STARTDATE) as STARTDATE
			,TO_UTC_TIMESTAMP_TZ(s."DATE") as RECORD_DATE
			,s.VALUE
			,s.UNITS
			,s.SOURCEIDENTIFIER
			,s.SOURCENAME
			,s.SOURCEVERSION
			,s.SOURCEOPERATINGSYSTEMVERSION
			,s.SOURCEPRODUCTTYPE
			,s.DEVICENAME
			,s.DEVICEMODEL
			,s.DEVICEMANUFACTURER
			,s.DEVICEHARDWAREVERSION
			,s.DEVICESOFTWAREVERSION
			,s.DEVICEFIRMWAREVERSION
			,s.DEVICELOCALIDENTIFIER
			,s.DEVICEFDAIDENTIFIER
			,s.METADATA
			,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
			,ROW_NUMBER() OVER (PARTITION BY s.HEALTHKITSAMPLEKEY ORDER BY s.INSERTEDDATE desc) AS rn
		from stg_HEALTHKITSAMPLES_HEARTRATE s
			where length(s.PARTICIPANTIDENTIFIER) >= 13
		and substr(s.STARTDATE,1,10) >= program_start_date
    )
    select 		
        s.HEALTHKITSAMPLEKEY
		,s.PARTICIPANTIDENTIFIER
		,s.STARTDATE
		,s.RECORD_DATE
		,s.VALUE
		,s.UNITS
		,s.SOURCEIDENTIFIER
		,s.SOURCENAME
		,s.SOURCEVERSION
		,s.SOURCEOPERATINGSYSTEMVERSION
		,s.SOURCEPRODUCTTYPE
		,s.DEVICENAME
		,s.DEVICEMODEL
		,s.DEVICEMANUFACTURER
		,s.DEVICEHARDWAREVERSION
		,s.DEVICESOFTWAREVERSION
		,s.DEVICEFIRMWAREVERSION
		,s.DEVICELOCALIDENTIFIER
		,s.DEVICEFDAIDENTIFIER
		,s.METADATA
		,s.INSERTEDDATE
    from ranked_recs s
    join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join HEALTHKITSAMPLES_HEARTRATE o on s.HEALTHKITSAMPLEKEY = o.HEALTHKITSAMPLEKEY
    where rn=1
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  17-3 - Data insertion for Table HEALTHKITSAMPLES_HEARTRATEVARIABILITY
--------------------------------------------------------

--updated on 4/18/2022 to prevent ORA-00001: unique constraint vaiolation on (IHS_2022.HEALTHKITSAMPLES_HEARTRATEVARIABILITY_PK)
--(duplicated records could be inserted on different time)
	insert into HEALTHKITSAMPLES_HEARTRATEVARIABILITY (
		HEALTHKITSAMPLEKEY
		,PARTICIPANTIDENTIFIER
		,STARTDATE
		,RECORD_DATE
		,VALUE
		,UNITS
		,SOURCEIDENTIFIER
		,SOURCENAME
		,SOURCEVERSION
		,SOURCEOPERATINGSYSTEMVERSION
		,SOURCEPRODUCTTYPE
		,DEVICENAME
		,DEVICEMODEL
		,DEVICEMANUFACTURER
		,DEVICEHARDWAREVERSION
		,DEVICESOFTWAREVERSION
		,DEVICEFIRMWAREVERSION
		,DEVICELOCALIDENTIFIER
		,DEVICEFDAIDENTIFIER
		,METADATA
		,INSERTEDDATE
	)
    with ranked_recs as (
		select
			fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) as HEALTHKITSAMPLEKEY
			,s.PARTICIPANTIDENTIFIER
			,TO_UTC_TIMESTAMP_TZ(s.STARTDATE) as STARTDATE
			,TO_UTC_TIMESTAMP_TZ(s."DATE") as RECORD_DATE
			,s.VALUE
			,s.UNITS
			,s.SOURCEIDENTIFIER
			,s.SOURCENAME
			,s.SOURCEVERSION
			,s.SOURCEOPERATINGSYSTEMVERSION
			,s.SOURCEPRODUCTTYPE
			,s.DEVICENAME
			,s.DEVICEMODEL
			,s.DEVICEMANUFACTURER
			,s.DEVICEHARDWAREVERSION
			,s.DEVICESOFTWAREVERSION
			,s.DEVICEFIRMWAREVERSION
			,s.DEVICELOCALIDENTIFIER
			,s.DEVICEFDAIDENTIFIER
			,s.METADATA
			,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
			,ROW_NUMBER() OVER (PARTITION BY s.HEALTHKITSAMPLEKEY ORDER BY s.INSERTEDDATE desc) AS rn
		from stg_HEALTHKITSAMPLES_HEARTRATEVARIABILITY s
			where length(s.PARTICIPANTIDENTIFIER) >= 13
		and substr(s.STARTDATE,1,10) >= program_start_date
    )
    select 		
        s.HEALTHKITSAMPLEKEY
		,s.PARTICIPANTIDENTIFIER
		,s.STARTDATE
		,s.RECORD_DATE
		,s.VALUE
		,s.UNITS
		,s.SOURCEIDENTIFIER
		,s.SOURCENAME
		,s.SOURCEVERSION
		,s.SOURCEOPERATINGSYSTEMVERSION
		,s.SOURCEPRODUCTTYPE
		,s.DEVICENAME
		,s.DEVICEMODEL
		,s.DEVICEMANUFACTURER
		,s.DEVICEHARDWAREVERSION
		,s.DEVICESOFTWAREVERSION
		,s.DEVICEFIRMWAREVERSION
		,s.DEVICELOCALIDENTIFIER
		,s.DEVICEFDAIDENTIFIER
		,s.METADATA
		,s.INSERTEDDATE
    from ranked_recs s
    join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join HEALTHKITSAMPLES_HEARTRATEVARIABILITY o on s.HEALTHKITSAMPLEKEY = o.HEALTHKITSAMPLEKEY
    where rn=1
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  17-4 - Data insertion for Table HEALTHKITSAMPLES_RESTINGHEARTRATE
--------------------------------------------------------

--updated on 4/18/2022 to prevent ORA-00001: unique constraint vaiolation on (IHS_2022.HEALTHKITSAMPLES_RESTINGHEARTRATE_PK)
--(duplicated records could be inserted on different time)
	insert into HEALTHKITSAMPLES_RESTINGHEARTRATE (
		HEALTHKITSAMPLEKEY
		,PARTICIPANTIDENTIFIER
		,STARTDATE
		,RECORD_DATE
		,VALUE
		,UNITS
		,SOURCEIDENTIFIER
		,SOURCENAME
		,SOURCEVERSION
		,SOURCEOPERATINGSYSTEMVERSION
		,SOURCEPRODUCTTYPE
		,DEVICENAME
		,DEVICEMODEL
		,DEVICEMANUFACTURER
		,DEVICEHARDWAREVERSION
		,DEVICESOFTWAREVERSION
		,DEVICEFIRMWAREVERSION
		,DEVICELOCALIDENTIFIER
		,DEVICEFDAIDENTIFIER
		,METADATA
		,INSERTEDDATE
	)
    with ranked_recs as (
		select
			fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) as HEALTHKITSAMPLEKEY
			,s.PARTICIPANTIDENTIFIER
			,TO_UTC_TIMESTAMP_TZ(s.STARTDATE) as STARTDATE
			,TO_UTC_TIMESTAMP_TZ(s."DATE") as RECORD_DATE
			,s.VALUE
			,s.UNITS
			,s.SOURCEIDENTIFIER
			,s.SOURCENAME
			,s.SOURCEVERSION
			,s.SOURCEOPERATINGSYSTEMVERSION
			,s.SOURCEPRODUCTTYPE
			,s.DEVICENAME
			,s.DEVICEMODEL
			,s.DEVICEMANUFACTURER
			,s.DEVICEHARDWAREVERSION
			,s.DEVICESOFTWAREVERSION
			,s.DEVICEFIRMWAREVERSION
			,s.DEVICELOCALIDENTIFIER
			,s.DEVICEFDAIDENTIFIER
			,s.METADATA
			,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
			,ROW_NUMBER() OVER (PARTITION BY s.HEALTHKITSAMPLEKEY ORDER BY s.INSERTEDDATE desc) AS rn
		from stg_HEALTHKITSAMPLES_RESTINGHEARTRATE s
			where length(s.PARTICIPANTIDENTIFIER) >= 13
		and substr(s.STARTDATE,1,10) >= program_start_date
    )
    select 		
        s.HEALTHKITSAMPLEKEY
		,s.PARTICIPANTIDENTIFIER
		,s.STARTDATE
		,s.RECORD_DATE
		,s.VALUE
		,s.UNITS
		,s.SOURCEIDENTIFIER
		,s.SOURCENAME
		,s.SOURCEVERSION
		,s.SOURCEOPERATINGSYSTEMVERSION
		,s.SOURCEPRODUCTTYPE
		,s.DEVICENAME
		,s.DEVICEMODEL
		,s.DEVICEMANUFACTURER
		,s.DEVICEHARDWAREVERSION
		,s.DEVICESOFTWAREVERSION
		,s.DEVICEFIRMWAREVERSION
		,s.DEVICELOCALIDENTIFIER
		,s.DEVICEFDAIDENTIFIER
		,s.METADATA
		,s.INSERTEDDATE
    from ranked_recs s
    join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join HEALTHKITSAMPLES_RESTINGHEARTRATE o on s.HEALTHKITSAMPLEKEY = o.HEALTHKITSAMPLEKEY
    where rn=1
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  17-5 - Data insertion for Table HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL
--------------------------------------------------------

--updated on 4/2/2022 to handle ORA-00001: unique constraint vaiolation on (IHS_2022.HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_PK)
--(duplicated records inserted on different time)
	insert into HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL (
		HEALTHKITSAMPLEKEY
		,PARTICIPANTIDENTIFIER
		,STARTDATE
		,RECORD_DATE
		,VALUE
		,UNITS
		,SOURCEIDENTIFIER
		,SOURCENAME
		,SOURCEVERSION
		,SOURCEOPERATINGSYSTEMVERSION
		,SOURCEPRODUCTTYPE
		,DEVICENAME
		,DEVICEMODEL
		,DEVICEMANUFACTURER
		,DEVICEHARDWAREVERSION
		,DEVICESOFTWAREVERSION
		,DEVICEFIRMWAREVERSION
		,DEVICELOCALIDENTIFIER
		,DEVICEFDAIDENTIFIER
		,METADATA
		,INSERTEDDATE
	)
    with ranked_recs as (
		select
			fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) as HEALTHKITSAMPLEKEY
			,s.PARTICIPANTIDENTIFIER
			,TO_UTC_TIMESTAMP_TZ(s.STARTDATE) as STARTDATE
			,TO_UTC_TIMESTAMP_TZ(s."DATE") as RECORD_DATE
			,s.VALUE
			,s.UNITS
			,s.SOURCEIDENTIFIER
			,s.SOURCENAME
			,s.SOURCEVERSION
			,s.SOURCEOPERATINGSYSTEMVERSION
			,s.SOURCEPRODUCTTYPE
			,s.DEVICENAME
			,s.DEVICEMODEL
			,s.DEVICEMANUFACTURER
			,s.DEVICEHARDWAREVERSION
			,s.DEVICESOFTWAREVERSION
			,s.DEVICEFIRMWAREVERSION
			,s.DEVICELOCALIDENTIFIER
			,s.DEVICEFDAIDENTIFIER
			,s.METADATA
			,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
			,ROW_NUMBER() OVER (PARTITION BY s.HEALTHKITSAMPLEKEY ORDER BY s.INSERTEDDATE desc) AS rn
		from stg_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL s
			where length(s.PARTICIPANTIDENTIFIER) >= 13
		and substr(s.STARTDATE,1,10) >= program_start_date
    )
    select 		
        s.HEALTHKITSAMPLEKEY
		,s.PARTICIPANTIDENTIFIER
		,s.STARTDATE
		,s.RECORD_DATE
		,s.VALUE
		,s.UNITS
		,s.SOURCEIDENTIFIER
		,s.SOURCENAME
		,s.SOURCEVERSION
		,s.SOURCEOPERATINGSYSTEMVERSION
		,s.SOURCEPRODUCTTYPE
		,s.DEVICENAME
		,s.DEVICEMODEL
		,s.DEVICEMANUFACTURER
		,s.DEVICEHARDWAREVERSION
		,s.DEVICESOFTWAREVERSION
		,s.DEVICEFIRMWAREVERSION
		,s.DEVICELOCALIDENTIFIER
		,s.DEVICEFDAIDENTIFIER
		,s.METADATA
		,s.INSERTEDDATE
    from ranked_recs s
    join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL o on s.HEALTHKITSAMPLEKEY = o.HEALTHKITSAMPLEKEY
    where rn=1
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  17-6 - Data insertion for Table HEALTHKITSAMPLES_STEPS
--------------------------------------------------------

--updated on 4/18/2022 to prevent ORA-00001: unique constraint vaiolation on (IHS_2022.HEALTHKITSAMPLES_STEPS_PK)
--(duplicated records could be inserted on different time)
	insert into HEALTHKITSAMPLES_STEPS (
		HEALTHKITSAMPLEKEY
		,PARTICIPANTIDENTIFIER
		,STARTDATE
		,RECORD_DATE
		,VALUE
		,UNITS
		,SOURCEIDENTIFIER
		,SOURCENAME
		,SOURCEVERSION
		,SOURCEOPERATINGSYSTEMVERSION
		,SOURCEPRODUCTTYPE
		,DEVICENAME
		,DEVICEMODEL
		,DEVICEMANUFACTURER
		,DEVICEHARDWAREVERSION
		,DEVICESOFTWAREVERSION
		,DEVICEFIRMWAREVERSION
		,DEVICELOCALIDENTIFIER
		,DEVICEFDAIDENTIFIER
		,METADATA
		,INSERTEDDATE
	)
    with ranked_recs as (
		select
			fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) as HEALTHKITSAMPLEKEY
			,s.PARTICIPANTIDENTIFIER
			,TO_UTC_TIMESTAMP_TZ(s.STARTDATE) as STARTDATE
			,TO_UTC_TIMESTAMP_TZ(s."DATE") as RECORD_DATE
			,s.VALUE
			,s.UNITS
			,s.SOURCEIDENTIFIER
			,s.SOURCENAME
			,s.SOURCEVERSION
			,s.SOURCEOPERATINGSYSTEMVERSION
			,s.SOURCEPRODUCTTYPE
			,s.DEVICENAME
			,s.DEVICEMODEL
			,s.DEVICEMANUFACTURER
			,s.DEVICEHARDWAREVERSION
			,s.DEVICESOFTWAREVERSION
			,s.DEVICEFIRMWAREVERSION
			,s.DEVICELOCALIDENTIFIER
			,s.DEVICEFDAIDENTIFIER
			,s.METADATA
			,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
			,ROW_NUMBER() OVER (PARTITION BY s.HEALTHKITSAMPLEKEY ORDER BY s.INSERTEDDATE desc) AS rn
		from stg_HEALTHKITSAMPLES_STEPS s
			where length(s.PARTICIPANTIDENTIFIER) >= 13
		and substr(s.STARTDATE,1,10) >= program_start_date
    )
    select 		
        s.HEALTHKITSAMPLEKEY
		,s.PARTICIPANTIDENTIFIER
		,s.STARTDATE
		,s.RECORD_DATE
		,s.VALUE
		,s.UNITS
		,s.SOURCEIDENTIFIER
		,s.SOURCENAME
		,s.SOURCEVERSION
		,s.SOURCEOPERATINGSYSTEMVERSION
		,s.SOURCEPRODUCTTYPE
		,s.DEVICENAME
		,s.DEVICEMODEL
		,s.DEVICEMANUFACTURER
		,s.DEVICEHARDWAREVERSION
		,s.DEVICESOFTWAREVERSION
		,s.DEVICEFIRMWAREVERSION
		,s.DEVICELOCALIDENTIFIER
		,s.DEVICEFDAIDENTIFIER
		,s.METADATA
		,s.INSERTEDDATE
    from ranked_recs s
    join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join HEALTHKITSAMPLES_STEPS o on s.HEALTHKITSAMPLEKEY = o.HEALTHKITSAMPLEKEY
    where rn=1
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  21-1 - Data insertion for Table HEALTHKITSTATISTICS_DAILYSTEPS
--------------------------------------------------------

	--updated on 7/16/2022 to remove outdated data:
	delete from HEALTHKITSTATISTICS_DAILYSTEPS where rowid in ( 
		select o.rowid
        from stg_HEALTHKITSTATISTICS_DAILYSTEPS s
        --join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
        join HEALTHKITSTATISTICS_DAILYSTEPS o on fn_guid_to_raw(s.HEALTHKITSTATISTICKEY) = o.HEALTHKITSTATISTICKEY
		and s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
        where substr(s.STARTDATE,1,10) >= program_start_date
        --substr(s.STARTDATE,1,10) >= '2022-04-01'
        and round(to_number(s.value))!=o.value
        and TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE)>o.INSERTEDDATE
        and TO_UTC_TIMESTAMP_TZ(s.STARTDATE) = o.STARTDATE
        and TO_UTC_TIMESTAMP_TZ(s."DATE") = o.RECORD_DATE
		)
	;

	insert into HEALTHKITSTATISTICS_DAILYSTEPS (
		HEALTHKITSTATISTICKEY
		,PARTICIPANTIDENTIFIER
		,STARTDATE
		,RECORD_DATE
		,VALUE
		,UNITS
		,INSERTEDDATE
	)
	select
		fn_guid_to_raw(s.HEALTHKITSTATISTICKEY) as HEALTHKITSTATISTICKEY
		,s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s.STARTDATE) as STARTDATE
		,TO_UTC_TIMESTAMP_TZ(s."DATE") as RECORD_DATE
		,s.VALUE
		,s.UNITS
		,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
	from stg_HEALTHKITSTATISTICS_DAILYSTEPS s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join HEALTHKITSTATISTICS_DAILYSTEPS o on fn_guid_to_raw(s.HEALTHKITSTATISTICKEY) = o.HEALTHKITSTATISTICKEY
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  21-2 - Data insertion for Table HEALTHKITSTATISTICS_HOURLYSTEPS
--------------------------------------------------------

	--updated on 7/16/2022 to remove outdated data:
	delete from HEALTHKITSTATISTICS_HOURLYSTEPS where rowid in ( 
		select o.rowid
        from stg_HEALTHKITSTATISTICS_HOURLYSTEPS s
        --join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
        join HEALTHKITSTATISTICS_HOURLYSTEPS o on fn_guid_to_raw(s.HEALTHKITSTATISTICKEY) = o.HEALTHKITSTATISTICKEY
		and s.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
        where substr(s.STARTDATE,1,10) >= program_start_date
        --substr(s.STARTDATE,1,10) >= '2022-04-01'
        and round(to_number(s.value))!=o.value
        and TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE)>o.INSERTEDDATE
        and TO_UTC_TIMESTAMP_TZ(s.STARTDATE) = o.STARTDATE
        and TO_UTC_TIMESTAMP_TZ(s."DATE") = o.RECORD_DATE
		)
	;

	--added on 7/1/2022:
	insert into HEALTHKITSTATISTICS_HOURLYSTEPS (
		HEALTHKITSTATISTICKEY
		,PARTICIPANTIDENTIFIER
		,STARTDATE
		,RECORD_DATE
		,VALUE
		,UNITS
		,INSERTEDDATE
	)
	select
		fn_guid_to_raw(s.HEALTHKITSTATISTICKEY) as HEALTHKITSTATISTICKEY
		,s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s.STARTDATE) as STARTDATE
		,TO_UTC_TIMESTAMP_TZ(s."DATE") as RECORD_DATE
		,s.VALUE
		,s.UNITS
		,TO_UTC_TIMESTAMP_TZ(s.INSERTEDDATE) as INSERTEDDATE
	from stg_HEALTHKITSTATISTICS_HOURLYSTEPS s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join HEALTHKITSTATISTICS_HOURLYSTEPS o on fn_guid_to_raw(s.HEALTHKITSTATISTICKEY) = o.HEALTHKITSTATISTICKEY
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.STARTDATE,1,10) >= program_start_date
	and o.rowid is null
	;
	commit;

--------------------------------------------------------
--  22 - Data insertion for Table HEALTHKITSAMPLES_DELETED
--------------------------------------------------------

	--data_type = 1: stg_HEALTHKITSAMPLES_APPLEEXERCISETIME_DELETED
	insert into HEALTHKITSAMPLES_DELETED (
		HEALTHKITSAMPLEKEY
		,PARTICIPANTIDENTIFIER
		,DELETEDDATE
		,DATA_TYPE
	)
	select
		fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) as HEALTHKITSAMPLEKEY
		,s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s.DELETEDDATE) as DELETEDDATE
		,1 as DATA_TYPE
	from stg_HEALTHKITSAMPLES_APPLEEXERCISETIME_DELETED s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join HEALTHKITSAMPLES_DELETED o on fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) = o.HEALTHKITSAMPLEKEY and o.DATA_TYPE = 1
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.DELETEDDATE,1,10) >= program_start_date
	and o.rowid is null
	;
	commit;

	--data_type = 2: stg_HEALTHKITSAMPLES_HEARTRATE_DELETED
	insert into HEALTHKITSAMPLES_DELETED (
		HEALTHKITSAMPLEKEY
		,PARTICIPANTIDENTIFIER
		,DELETEDDATE
		,DATA_TYPE
	)
	select
		fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) as HEALTHKITSAMPLEKEY
		,s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s.DELETEDDATE) as DELETEDDATE
		,2 as DATA_TYPE
	from stg_HEALTHKITSAMPLES_HEARTRATE_DELETED s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join HEALTHKITSAMPLES_DELETED o on fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) = o.HEALTHKITSAMPLEKEY and o.DATA_TYPE = 2
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.DELETEDDATE,1,10) >= program_start_date
	and o.rowid is null
	;
	commit;

	--data_type = 3: stg_HEALTHKITSAMPLES_HEARTRATEVARIABILITY_DELETED
	insert into HEALTHKITSAMPLES_DELETED (
		HEALTHKITSAMPLEKEY
		,PARTICIPANTIDENTIFIER
		,DELETEDDATE
		,DATA_TYPE
	)
	select
		fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) as HEALTHKITSAMPLEKEY
		,s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s.DELETEDDATE) as DELETEDDATE
		,3 as DATA_TYPE
	from stg_HEALTHKITSAMPLES_HEARTRATEVARIABILITY_DELETED s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join HEALTHKITSAMPLES_DELETED o on fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) = o.HEALTHKITSAMPLEKEY and o.DATA_TYPE = 3
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.DELETEDDATE,1,10) >= program_start_date
	and o.rowid is null
	;
	commit;

	--data_type = 4: stg_HEALTHKITSAMPLES_RESTINGHEARTRATE_DELETED
	insert into HEALTHKITSAMPLES_DELETED (
		HEALTHKITSAMPLEKEY
		,PARTICIPANTIDENTIFIER
		,DELETEDDATE
		,DATA_TYPE
	)
	select
		fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) as HEALTHKITSAMPLEKEY
		,s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s.DELETEDDATE) as DELETEDDATE
		,4 as DATA_TYPE
	from stg_HEALTHKITSAMPLES_RESTINGHEARTRATE_DELETED s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join HEALTHKITSAMPLES_DELETED o on fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) = o.HEALTHKITSAMPLEKEY and o.DATA_TYPE = 4
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.DELETEDDATE,1,10) >= program_start_date
	and o.rowid is null
	;
	commit;

	--data_type = 5: stg_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_DELETED
	insert into HEALTHKITSAMPLES_DELETED (
		HEALTHKITSAMPLEKEY
		,PARTICIPANTIDENTIFIER
		,DELETEDDATE
		,DATA_TYPE
	)
	select
		fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) as HEALTHKITSAMPLEKEY
		,s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s.DELETEDDATE) as DELETEDDATE
		,5 as DATA_TYPE
	from stg_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_DELETED s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join HEALTHKITSAMPLES_DELETED o on fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) = o.HEALTHKITSAMPLEKEY and o.DATA_TYPE = 5
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.DELETEDDATE,1,10) >= program_start_date
	and o.rowid is null
	;
	commit;

	--data_type = 6: stg_HEALTHKITSAMPLES_STEPS_DELETED
	insert into HEALTHKITSAMPLES_DELETED (
		HEALTHKITSAMPLEKEY
		,PARTICIPANTIDENTIFIER
		,DELETEDDATE
		,DATA_TYPE
	)
	select
		fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) as HEALTHKITSAMPLEKEY
		,s.PARTICIPANTIDENTIFIER
		,TO_UTC_TIMESTAMP_TZ(s.DELETEDDATE) as DELETEDDATE
		,6 as DATA_TYPE
	from stg_HEALTHKITSAMPLES_STEPS_DELETED s
	join STUDYPARTICIPANTS p on s.PARTICIPANTIDENTIFIER = p.PARTICIPANTIDENTIFIER
	left join HEALTHKITSAMPLES_DELETED o on fn_guid_to_raw(s.HEALTHKITSAMPLEKEY) = o.HEALTHKITSAMPLEKEY and o.DATA_TYPE = 6
	where length(s.PARTICIPANTIDENTIFIER) >= 13
	and substr(s.DELETEDDATE,1,10) >= program_start_date
	and o.rowid is null
	;
	commit;

end;]]></definition>
         <parameters/>
      </routine>
      <routine deterministic="false" name="IHS_2023.PR_RECENT_HEALTHKIT_DAILYDATA" type="PROCEDURE">
         <comment/>
         <definition language="PL/SQL"><![CDATA[procedure pr_recent_Healthkit_dailydata (program_start_date date := '01-APR-2023')
-- use AUTHID CURRENT_USER to execute with the privileges and 
-- schema context of the calling user
AUTHID CURRENT_USER AS

begin
	execute immediate 'truncate table healthkit_dailydata';
	insert into healthkit_dailydata
		select
			PARTICIPANTIDENTIFIER
			,trunc(RECORD_DATE) as record_date
			,'sleep' as type
		from HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL
		where VALUE = 'InBed'
		and STARTDATE >= program_start_date		--4/6/2022: added to limit data from the program start date
		and RECORD_DATE > STARTDATE
		and trunc(RECORD_DATE) > trunc(sysdate) - 90
	union all
		select
			PARTICIPANTIDENTIFIER
			,trunc(StartDATE) as record_date
			,'step' as type
		from HEALTHKITSTATISTICS_DAILYSTEPS
		--where TYPE = 'DailySteps'
		where VALUE > 0
		and STARTDATE >= program_start_date		--4/6/2022: added to limit data from the program start date
		and trunc(StartDATE) > trunc(sysdate) - 90
	;
	commit;
end;]]></definition>
         <parameters/>
      </routine>
      <routine deterministic="false" name="IHS_2023.PR_UPDATE_APPLE_WATCH_DEVICES" type="PROCEDURE">
         <comment/>
         <definition language="PL/SQL"><![CDATA[procedure pr_update_apple_watch_devices (program_start_date varchar2 := '2023-04-01')
-- use AUTHID CURRENT_USER to execute with the privileges and 
-- schema context of the calling user
AUTHID CURRENT_USER AS

	cursor c is 
	with aw_data as (
		select 
			PARTICIPANTIDENTIFIER
			,DEVICEHARDWAREVERSION
			,DEVICESOFTWAREVERSION
			,substr(STARTDATE,1,10) as start_date
		from STG_HEALTHKITSAMPLES_APPLEEXERCISETIME
		where DEVICENAME='Apple Watch'
		and substr(STARTDATE,1,10) >= program_start_date
		union all
		select 
			PARTICIPANTIDENTIFIER
			,DEVICEHARDWAREVERSION
			,DEVICESOFTWAREVERSION
			,substr(STARTDATE,1,10) as start_date
		from STG_HEALTHKITSAMPLES_HEARTRATE
		where DEVICENAME='Apple Watch'
		and substr(STARTDATE,1,10) >= program_start_date
		union all
		select 
			PARTICIPANTIDENTIFIER
			,DEVICEHARDWAREVERSION
			,DEVICESOFTWAREVERSION
			,substr(STARTDATE,1,10) as start_date
		from STG_HEALTHKITSAMPLES_HEARTRATEVARIABILITY
		where DEVICENAME='Apple Watch'
		and substr(STARTDATE,1,10) >= program_start_date
		union all
		select 
			PARTICIPANTIDENTIFIER
			,DEVICEHARDWAREVERSION
			,DEVICESOFTWAREVERSION
			,substr(STARTDATE,1,10) as start_date
		from STG_HEALTHKITSAMPLES_RESTINGHEARTRATE
		where DEVICENAME='Apple Watch'
		and substr(STARTDATE,1,10) >= program_start_date
		union all
		select 
			PARTICIPANTIDENTIFIER
			,DEVICEHARDWAREVERSION
			,DEVICESOFTWAREVERSION
			,substr(STARTDATE,1,10) as start_date
		from STG_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL
		where DEVICENAME='Apple Watch'
		and substr(STARTDATE,1,10) >= program_start_date
		union all
		select 
			PARTICIPANTIDENTIFIER
			,DEVICEHARDWAREVERSION
			,DEVICESOFTWAREVERSION
			,substr(STARTDATE,1,10) as start_date
		from STG_HEALTHKITSAMPLES_STEPS
		where DEVICENAME='Apple Watch'
		and substr(STARTDATE,1,10) >= program_start_date
	),
	new_aw_data as (
		select 
			PARTICIPANTIDENTIFIER
			,DEVICEHARDWAREVERSION as Apple_Watch_Model
			,DEVICESOFTWAREVERSION as Apple_Watch_OS
			,min(to_date(start_date, 'yyyy-mm-dd')) as start_date
			,max(to_date(start_date, 'yyyy-mm-dd')) as end_date
		from aw_data
		group by 
			PARTICIPANTIDENTIFIER
			,DEVICEHARDWAREVERSION
			,DEVICESOFTWAREVERSION
	)
	------------------------------	
	select n.PARTICIPANTIDENTIFIER
	,n.APPLE_WATCH_MODEL
	,n.APPLE_WATCH_OS
	,n.START_DATE
	,n.END_DATE
	,o.rowid as old_row
	,o.start_date as old_start_date
	,o.end_date as old_end_date
	from new_aw_data n
	left join apple_watch_devices o on n.PARTICIPANTIDENTIFIER = o.PARTICIPANTIDENTIFIER
	and n.Apple_Watch_Model = o.Apple_Watch_Model
	and n.Apple_Watch_OS = o.Apple_Watch_OS
	order by case when o.rowid is not null then 1 else 2 end asc    --old goes first
	;

begin

	for rec in c loop
		if rec.old_row is not null then
			if rec.end_date > rec.old_end_date then
				update apple_watch_devices set
					END_DATE = rec.END_DATE
				where rowid = rec.old_row;
			elsif rec.start_date < rec.old_start_date then   --Should have no case like this. But if there're a few rare cases arising, just handle them!
				update apple_watch_devices set
					START_DATE = rec.START_DATE
				where rowid = rec.old_row;
			end if;
		else  --new Apple Watch device
			insert into apple_watch_devices (
				PARTICIPANTIDENTIFIER
				,APPLE_WATCH_MODEL
				,APPLE_WATCH_OS
				,START_DATE
				,END_DATE
			) 
			VALUES (
				rec.PARTICIPANTIDENTIFIER
				,rec.APPLE_WATCH_MODEL
				,rec.APPLE_WATCH_OS
				,rec.START_DATE
				,rec.END_DATE
			);
		end if;
	end loop;	
	commit;

end;]]></definition>
         <parameters/>
      </routine>
      <routine deterministic="false" name="IHS_2023.PR_UPDATE_LOAD_LOG" type="PROCEDURE">
         <comment/>
         <definition language="PL/SQL"><![CDATA[procedure pr_update_LOAD_LOG
/*------------------------------------------------------
Project: Intern Health Study 2023 (Care Evolution Data)
Description: Oracle procedure pr_populate_IHS_data
Author: Siqing Hu (shu@med.umich.edu)
Created: 2023-03-01
Updated: 2023-12-05
------------------------------------------------------*/
-- use AUTHID CURRENT_USER to execute with the privileges and 
-- schema context of the calling user
AUTHID CURRENT_USER AS

begin

--------------------------------------------------------
--  0 -  insert staging data counts into Table LOAD_LOG
--------------------------------------------------------
	insert into load_log (
		LOAD_DATE
		,CNT_AUXILIARYDATA
		--,CNT_COMPETITIONS		--no COMPETITIONS data yet
		,CNT_FITBITACTIVITYLOGS
		,CNT_FITBITDAILYDATA
		,CNT_FITBITDEVICES
		,CNT_FITBITRESTINGHEARTRATES
		,CNT_FITBITSLEEPLOGDETAILS
		,CNT_FITBITSLEEPLOGS
		--,CNT_FITBIT_HEARTRATE
		--,CNT_FITBIT_STEPS
		,CNT_HEALTHKITACTIVITYSUMMARIES
		,CNT_HEALTHKITSAMPLES_APPLEEXERCISETIME
		,CNT_HEALTHKITSAMPLES_APPLEEXERCISETIME_DELETED
		,CNT_HEALTHKITSAMPLES_HEARTRATE
		,CNT_HEALTHKITSAMPLES_HEARTRATEVARIABILITY
		,CNT_HEALTHKITSAMPLES_HEARTRATEVARIABILITY_DELETED
		,CNT_HEALTHKITSAMPLES_HEARTRATE_DELETED
		,CNT_HEALTHKITSAMPLES_RESTINGHEARTRATE
		,CNT_HEALTHKITSAMPLES_RESTINGHEARTRATE_DELETED
		,CNT_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL
		,CNT_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_DELETED
		,CNT_HEALTHKITSAMPLES_STEPS
		,CNT_HEALTHKITSAMPLES_STEPS_DELETED
		,CNT_HEALTHKITSTATISTICS_DAILYSTEPS
		,CNT_MANIFEST
		--,CNT_NOTIFICATIONS    --no longer in IHS 2023
		,CNT_STUDYPARTICIPANTS
		,CNT_SURVEYCONSENTSIGNATURERESULTS
		,CNT_SURVEYDEFINITIONS
		,CNT_SURVEYQUESTIONRESULTS
		,CNT_SURVEYRESULTS
		,CNT_SURVEYSTEPRESULTS
		,CNT_SURVEYTASKS
		--added on 4/5/2022:
		,CNT_ANALYTICSEVENTS_EMAILNOTIFICATIONSENT
		,CNT_ANALYTICSEVENTS_NOTIFICATIONSENT
		,CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONOPENED
		,CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONRECEIVED
		,CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONSENT
		,CNT_ANALYTICSEVENTS_SURVEYSTEPVIEWED
		--added on 6/13/2022:
		,CNT_ANALYTICSEVENTS_EMAILSEND
		,CNT_ANALYTICSEVENTS_EMAILDELIVERY
		,CNT_ANALYTICSEVENTS_EMAILOPEN
		,CNT_ANALYTICSEVENTS_EMAILCLICK
		,CNT_ANALYTICSEVENTS_EMAILBOUNCE
		,CNT_ANALYTICSEVENTS_EMAILCOMPLAINT
		--added on 7/1/2022:
		,CNT_HEALTHKITSTATISTICS_HOURLYSTEPS
        --added for IHS 2023:
        --,CNT_SURVEYDICTIONARY

        ,CNT_GARMINACTIVITYSUMMARY
        ,CNT_GARMINDAILYSUMMARY
        ,CNT_GARMINDAILYSUMMARY_SAMPLES
        ,CNT_GARMINEPOCHSUMMARY
        ,CNT_GARMINHRVSUMMARY
        ,CNT_GARMINHRVSUMMARY_SAMPLES
        ,CNT_GARMINMOVEIQACTIVITYSUMMARY
        ,CNT_GARMINSLEEPSUMMARY
        ,CNT_GARMINSLEEPSUMMARY_DURATION
        ,CNT_GARMINSLEEPSUMMARY_SCORE
        ,CNT_GARMINSTRESSDETAILSUMMARY
        ,CNT_GARMINSTRESSDETAILSUMMARY_SAMPLES
        ,CNT_GARMINTHIRDPARTYDAILYSUMMARY
        ,CNT_GARMINTHIRDPARTYDAILYSUMMARY_SAMPLES
        ,CNT_GARMINUSERMETRICSSUMMARY
        ,CNT_SK_VISITS
        ,CNT_SK_LIGHT
        ,CNT_SK_USAGE
        ,CNT_SK_KEYBOARD

        --added on 12/5/2023:
		,CNT_PROJECTDEVICEDATA
	)
	select 
		sysdate load_date
		,(select count(*) from STG_AUXILIARYDATA) CNT_AUXILIARYDATA
		--,(select count(*) from STG_COMPETITIONS) CNT_COMPETITIONS		--no COMPETITIONS data yet
		,(select count(*) from STG_FITBITACTIVITYLOGS) CNT_FITBITACTIVITYLOGS
		,(select count(*) from STG_FITBITDAILYDATA) CNT_FITBITDAILYDATA
		,(select count(*) from STG_FITBITDEVICES) CNT_FITBITDEVICES
		,(select count(*) from STG_FITBITRESTINGHEARTRATES) CNT_FITBITRESTINGHEARTRATES
		,(select count(*) from STG_FITBITSLEEPLOGDETAILS) CNT_FITBITSLEEPLOGDETAILS
		,(select count(*) from STG_FITBITSLEEPLOGS) CNT_FITBITSLEEPLOGS
		--,(select count(*) from STG_FITBIT_HEARTRATE) CNT_FITBIT_HEARTRATE
		--,(select count(*) from STG_FITBIT_STEPS) CNT_FITBIT_STEPS
		,(select count(*) from STG_HEALTHKITACTIVITYSUMMARIES) CNT_HEALTHKITACTIVITYSUMMARIES
		,(select count(*) from STG_HEALTHKITSAMPLES_APPLEEXERCISETIME) CNT_HEALTHKITSAMPLES_APPLEEXERCISETIME
		,(select count(*) from STG_HEALTHKITSAMPLES_APPLEEXERCISETIME_DELETED) CNT_HEALTHKITSAMPLES_APPLEEXERCISETIME_DELETED
		,(select count(*) from STG_HEALTHKITSAMPLES_HEARTRATE) CNT_HEALTHKITSAMPLES_HEARTRATE
		,(select count(*) from STG_HEALTHKITSAMPLES_HEARTRATEVARIABILITY) CNT_HEALTHKITSAMPLES_HEARTRATEVARIABILITY
		,(select count(*) from STG_HEALTHKITSAMPLES_HEARTRATEVARIABILITY_DELETED) CNT_HEALTHKITSAMPLES_HEARTRATEVARIABILITY_DELETED
		,(select count(*) from STG_HEALTHKITSAMPLES_HEARTRATE_DELETED) CNT_HEALTHKITSAMPLES_HEARTRATE_DELETED
		,(select count(*) from STG_HEALTHKITSAMPLES_RESTINGHEARTRATE) CNT_HEALTHKITSAMPLES_RESTINGHEARTRATE
		,(select count(*) from STG_HEALTHKITSAMPLES_RESTINGHEARTRATE_DELETED) CNT_HEALTHKITSAMPLES_RESTINGHEARTRATE_DELETED
		,(select count(*) from STG_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL) CNT_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL
		,(select count(*) from STG_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_DELETED) CNT_HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_DELETED
		,(select count(*) from STG_HEALTHKITSAMPLES_STEPS) CNT_HEALTHKITSAMPLES_STEPS
		,(select count(*) from STG_HEALTHKITSAMPLES_STEPS_DELETED) CNT_HEALTHKITSAMPLES_STEPS_DELETED
		,(select count(*) from STG_HEALTHKITSTATISTICS_DAILYSTEPS) CNT_HEALTHKITSTATISTICS_DAILYSTEPS
		,(select count(*) from STG_MANIFEST) CNT_MANIFEST
		--,(select count(*) from STG_NOTIFICATIONS) CNT_NOTIFICATIONS    --no longer in IHS 2023
		,(select count(*) from STG_STUDYPARTICIPANTS) CNT_STUDYPARTICIPANTS
		,(select count(*) from STG_SURVEYCONSENTSIGNATURERESULTS) CNT_SURVEYCONSENTSIGNATURERESULTS
		,(select count(*) from STG_SURVEYDEFINITIONS) CNT_SURVEYDEFINITIONS
		,(select count(*) from STG_SURVEYQUESTIONRESULTS) CNT_SURVEYQUESTIONRESULTS
		,(select count(*) from STG_SURVEYRESULTS) CNT_SURVEYRESULTS
		,(select count(*) from STG_SURVEYSTEPRESULTS) CNT_SURVEYSTEPRESULTS
		,(select count(*) from STG_SURVEYTASKS) CNT_SURVEYTASKS
		--added on 4/5/2022:
		,(select count(*) from STG_ANALYTICSEVENTS_EMAILNOTIFICATIONSENT) CNT_ANALYTICSEVENTS_EMAILNOTIFICATIONSENT
		,(select count(*) from STG_ANALYTICSEVENTS_NOTIFICATIONSENT) CNT_ANALYTICSEVENTS_NOTIFICATIONSENT
		,(select count(*) from STG_ANALYTICSEVENTS_PUSHNOTIFICATIONOPENED) CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONOPENED
		,(select count(*) from STG_ANALYTICSEVENTS_PUSHNOTIFICATIONRECEIVED) CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONRECEIVED
		,(select count(*) from STG_ANALYTICSEVENTS_PUSHNOTIFICATIONSENT) CNT_ANALYTICSEVENTS_PUSHNOTIFICATIONSENT
		,(select count(*) from STG_ANALYTICSEVENTS_SURVEYSTEPVIEWED) CNT_ANALYTICSEVENTS_SURVEYSTEPVIEWED
		--added on 6/13/2022:
		,(select count(*) from STG_ANALYTICSEVENTS_EMAILSEND) CNT_ANALYTICSEVENTS_EMAILSEND
		,(select count(*) from STG_ANALYTICSEVENTS_EMAILDELIVERY) CNT_ANALYTICSEVENTS_EMAILDELIVERY
		,(select count(*) from STG_ANALYTICSEVENTS_EMAILOPEN) CNT_ANALYTICSEVENTS_EMAILOPEN
		,(select count(*) from STG_ANALYTICSEVENTS_EMAILCLICK) CNT_ANALYTICSEVENTS_EMAILCLICK
		,(select count(*) from STG_ANALYTICSEVENTS_EMAILBOUNCE) CNT_ANALYTICSEVENTS_EMAILBOUNCE
		,(select count(*) from STG_ANALYTICSEVENTS_EMAILCOMPLAINT) CNT_ANALYTICSEVENTS_EMAILCOMPLAINT
		--added on 7/1/2022:
		,(select count(*) from STG_HEALTHKITSTATISTICS_HOURLYSTEPS) CNT_HEALTHKITSTATISTICS_HOURLYSTEPS
        --added for IHS 2023:
        --,(select count(*) from STG_SURVEYDICTIONARY) CNT_SURVEYDICTIONARY

        ,(select count(*) from STG_GARMINACTIVITYSUMMARY) CNT_GARMINACTIVITYSUMMARY
        ,(select count(*) from STG_GARMINDAILYSUMMARY) CNT_GARMINDAILYSUMMARY
        ,(select count(*) from STG_GARMINDAILYSUMMARY_SAMPLES) CNT_GARMINDAILYSUMMARY_SAMPLES
        ,(select count(*) from STG_GARMINEPOCHSUMMARY) CNT_GARMINEPOCHSUMMARY
        ,(select count(*) from STG_GARMINHRVSUMMARY) CNT_GARMINHRVSUMMARY
        ,(select count(*) from STG_GARMINHRVSUMMARY_SAMPLES) CNT_GARMINHRVSUMMARY_SAMPLES
        ,(select count(*) from STG_GARMINMOVEIQACTIVITYSUMMARY) CNT_GARMINMOVEIQACTIVITYSUMMARY
        ,(select count(*) from STG_GARMINSLEEPSUMMARY) CNT_GARMINSLEEPSUMMARY
        ,(select count(*) from STG_GARMINSLEEPSUMMARY_DURATION) CNT_GARMINSLEEPSUMMARY_DURATION
        ,(select count(*) from STG_GARMINSLEEPSUMMARY_SCORE) CNT_GARMINSLEEPSUMMARY_SCORE
        ,(select count(*) from STG_GARMINSTRESSDETAILSUMMARY) CNT_GARMINSTRESSDETAILSUMMARY
        ,(select count(*) from STG_GARMINSTRESSDETAILSUMMARY_SAMPLES) CNT_GARMINSTRESSDETAILSUMMARY_SAMPLES
        ,(select count(*) from STG_GARMINTHIRDPARTYDAILYSUMMARY) CNT_GARMINTHIRDPARTYDAILYSUMMARY
        ,(select count(*) from STG_GARMINTHIRDPARTYDAILYSUMMARY_SAMPLES) CNT_GARMINTHIRDPARTYDAILYSUMMARY_SAMPLES
        ,(select count(*) from STG_GARMINUSERMETRICSSUMMARY) CNT_GARMINUSERMETRICSSUMMARY
        ,(select count(*) from STG_SK_VISITS) CNT_SK_VISITS
        ,(select count(*) from STG_SK_LIGHT) CNT_SK_LIGHT
        ,(select count(*) from STG_SK_USAGE) CNT_SK_USAGE
        ,(select count(*) from STG_SK_KEYBOARD) CNT_SK_KEYBOARD

        --added on 12/5/2023:
        ,(select count(*) from STG_PROJECTDEVICEDATA) CNT_PROJECTDEVICEDATA
	from dual
	;
	commit;

--------------------------------------------------------
--  19 - Data insertion for Table MANIFEST
--------------------------------------------------------

	insert into MANIFEST (
		EXPORTSTARTDATE
		,EXPORTENDDATE
		,EXPORTCONFIGURATION
		,EXCLUDEDPARTICIPANTIDENTIFIERS
		,AUXILIARYDATA
		--,COMPETITIONS		--no COMPETITIONS data yet (modified on 3/30/2022)
		,FITBITACTIVITYLOGS
		,FITBITDAILYDATA
		,FITBITDEVICES
		,FITBITRESTINGHEARTRATES
		,FITBITSLEEPLOGDETAILS
		,FITBITSLEEPLOGS
		,HEALTHKITACTIVITYSUMMARIES
		,HEALTHKITSAMPLES_APPLEEXERCISETIME
		,HEALTHKITSAMPLES_APPLEEXERCISETIME_DELETED
		,HEALTHKITSAMPLES_HEARTRATE
		,HEALTHKITSAMPLES_HEARTRATEVARIABILITY
		,HEALTHKITSAMPLES_HEARTRATEVARIABILITY_DELETED
		,HEALTHKITSAMPLES_HEARTRATE_DELETED
		,HEALTHKITSAMPLES_RESTINGHEARTRATE
		,HEALTHKITSAMPLES_RESTINGHEARTRATE_DELETED
		,HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL
		,HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_DELETED
		,HEALTHKITSAMPLES_STEPS
		,HEALTHKITSAMPLES_STEPS_DELETED
		,HEALTHKITSTATISTICS_DAILYSTEPS
		--,NOTIFICATIONS    --no longer in IHS 2023
		,STUDYPARTICIPANTS
		,SURVEYCONSENTSIGNATURERESULTS
		,SURVEYDEFINITIONS
		,SURVEYQUESTIONRESULTS
		,SURVEYRESULTS
		,SURVEYSTEPRESULTS
		,SURVEYTASKS
		,FITBIT_INTRADAY_ACTIVITIES_HEART_FILE
		,FITBIT_INTRADAY_ACTIVITIES_ELEVATION_FILE
		,FITBIT_INTRADAY_ACTIVITIES_DISTANCE_FILE
		,FITBIT_INTRADAY_ACTIVITIES_FLOORS_FILE
		,FITBIT_INTRADAY_ACTIVITIES_STEPS_FILE
		,FITBIT_INTRADAY_ACTIVITIES_CALORIES_FILE
		--added on 4/5/2022:
		,ANALYTICSEVENTS_EMAILNOTIFICATIONSENT
		,ANALYTICSEVENTS_NOTIFICATIONSENT
		,ANALYTICSEVENTS_PUSHNOTIFICATIONOPENED
		,ANALYTICSEVENTS_PUSHNOTIFICATIONRECEIVED
		,ANALYTICSEVENTS_PUSHNOTIFICATIONSENT
		,ANALYTICSEVENTS_SURVEYSTEPVIEWED
		--add on 6/13/2022:
		,ANALYTICSEVENTS_EMAILSEND
		,ANALYTICSEVENTS_EMAILDELIVERY
		,ANALYTICSEVENTS_EMAILOPEN
		,ANALYTICSEVENTS_EMAILCLICK
		,ANALYTICSEVENTS_EMAILBOUNCE
		,ANALYTICSEVENTS_EMAILCOMPLAINT
		--added on 7/1/2022:
		,HEALTHKITSTATISTICS_HOURLYSTEPS
        --added on 11/2/2022:
        ,FITBIT_INTRADAY_HRV_FILE
        --added for IHS 2023:
        ,SurveyDictionary

        ,GarminActivitySummary
        ,GarminDailySummary
        ,GarminDailySummary_Samples
        ,GarminEpochSummary
        ,GarminHrvSummary
        ,GarminHrvSummary_Samples
        ,GarminMoveIQActivitySummary
        ,GarminSleepSummary
        ,GarminSleepSummary_Duration
        ,GarminSleepSummary_Score
        ,GarminStressDetailSummary
        ,GarminStressDetailSummary_Samples
        ,GarminThirdPartyDailySummary
        ,GarminThirdPartyDailySummary_Samples
        ,GarminUserMetricsSummary
        ,SK_light_IP
        ,SK_VISITS_IP
        ,SK_KEYBOARD_IP
        ,SK_USAGE_messages_IP
        ,SK_USAGE_phone_IP
        ,SK_light_AW
        ,SK_USAGE_messages_AW
        ,SK_USAGE_phone_AW

        --added on 12/5/2023:
        ,PROJECTDEVICEDATA
	)
	select
		TO_UTC_TIMESTAMP_TZ(s.EXPORTSTARTDATE) as EXPORTSTARTDATE
		,TO_UTC_TIMESTAMP_TZ(s.EXPORTENDDATE) as EXPORTENDDATE
		,s.EXPORTCONFIGURATION
		,s.EXCLUDEDPARTICIPANTIDENTIFIERS
		,s.AUXILIARYDATA
		--,s.COMPETITIONS		--no COMPETITIONS data yet (modified on 3/30/2022)
		,s.FITBITACTIVITYLOGS
		,s.FITBITDAILYDATA
		,s.FITBITDEVICES
		,s.FITBITRESTINGHEARTRATES
		,s.FITBITSLEEPLOGDETAILS
		,s.FITBITSLEEPLOGS
		,s.HEALTHKITV2ACTIVITYSUMMARIES as HEALTHKITACTIVITYSUMMARIES
		,s.HEALTHKITV2SAMPLES_APPLEEXERCISETIME as HEALTHKITSAMPLES_APPLEEXERCISETIME
		,s.HEALTHKITV2SAMPLES_APPLEEXERCISETIME_DELETED as HEALTHKITSAMPLES_APPLEEXERCISETIME_DELETED
		,s.HEALTHKITV2SAMPLES_HEARTRATE as HEALTHKITSAMPLES_HEARTRATE
		,s.HEALTHKITV2SAMPLES_HEARTRATEVARIABILITY as HEALTHKITSAMPLES_HEARTRATEVARIABILITY
		,s.HEALTHKITV2SAMPLES_HEARTRATEVARIABILITY_DELETED as HEALTHKITSAMPLES_HEARTRATEVARIABILITY_DELETED
		,s.HEALTHKITV2SAMPLES_HEARTRATE_DELETED as HEALTHKITSAMPLES_HEARTRATE_DELETED
		,s.HEALTHKITV2SAMPLES_RESTINGHEARTRATE as HEALTHKITSAMPLES_RESTINGHEARTRATE
		,s.HEALTHKITV2SAMPLES_RESTINGHEARTRATE_DELETED as HEALTHKITSAMPLES_RESTINGHEARTRATE_DELETED
		,s.HEALTHKITV2SAMPLES_SLEEPANALYSISINTERVAL as HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL
		,s.HEALTHKITV2SAMPLES_SLEEPANALYSISINTERVAL_DELETED as HEALTHKITSAMPLES_SLEEPANALYSISINTERVAL_DELETED
		,s.HEALTHKITV2SAMPLES_STEPS as HEALTHKITSAMPLES_STEPS
		,s.HEALTHKITV2SAMPLES_STEPS_DELETED as HEALTHKITSAMPLES_STEPS_DELETED
		,s.HEALTHKITV2STATISTICS_DAILYSTEPS as HEALTHKITSTATISTICS_DAILYSTEPS
		--,s.NOTIFICATIONS    --no longer in IHS 2023
		,s.ALLPARTICIPANTS as STUDYPARTICIPANTS
		,s.SURVEYCONSENTSIGNATURERESULTS
		,s.SURVEYDEFINITIONS
		,s.SURVEYQUESTIONRESULTS
		,s.SURVEYRESULTS
		,s.SURVEYSTEPRESULTS
		,s.SURVEYTASKS
		,s.FITBIT_INTRADAY_ACTIVITIES_HEART_FILE
		,s.FITBIT_INTRADAY_ACTIVITIES_ELEVATION_FILE
		,s.FITBIT_INTRADAY_ACTIVITIES_DISTANCE_FILE
		,s.FITBIT_INTRADAY_ACTIVITIES_FLOORS_FILE
		,s.FITBIT_INTRADAY_ACTIVITIES_STEPS_FILE
		,s.FITBIT_INTRADAY_ACTIVITIES_CALORIES_FILE
		--added on 4/5/2022:
		,s.ANALYTICSEVENTS_EMAILNOTIFICATIONSENT
		,s.ANALYTICSEVENTS_NOTIFICATIONSENT
		,s.ANALYTICSEVENTS_PUSHNOTIFICATIONOPENED
		,s.ANALYTICSEVENTS_PUSHNOTIFICATIONRECEIVED
		,s.ANALYTICSEVENTS_PUSHNOTIFICATIONSENT
		,s.ANALYTICSEVENTS_SURVEYSTEPVIEWED
		--added on 6/13/2022:
		,s.ANALYTICSEVENTS_EMAILSEND
		,s.ANALYTICSEVENTS_EMAILDELIVERY
		,s.ANALYTICSEVENTS_EMAILOPEN
		,s.ANALYTICSEVENTS_EMAILCLICK
		,s.ANALYTICSEVENTS_EMAILBOUNCE
		,s.ANALYTICSEVENTS_EMAILCOMPLAINT
		--added on 7/1/2022:
		,s.HEALTHKITV2STATISTICS_HOURLYSTEPS as HEALTHKITSTATISTICS_HOURLYSTEPS
        --added on 11/2/2022:
        ,s.FITBIT_INTRADAY_HRV_FILE
        --added for IHS 2023:
        ,s.SurveyDictionary

        ,s.GarminActivitySummary
        ,s.GarminDailySummary
        ,s.GarminDailySummary_Samples
        ,s.GarminEpochSummary
        ,s.GarminHrvSummary
        ,s.GarminHrvSummary_Samples
        ,s.GarminMoveIQActivitySummary
        ,s.GarminSleepSummary
        ,s.GarminSleepSummary_Duration
        ,s.GarminSleepSummary_Score
        ,s.GarminStressDetailSummary
        ,s.GarminStressDetailSummary_Samples
        ,s.GarminThirdPartyDailySummary
        ,s.GarminThirdPartyDailySummary_Samples
        ,s.GarminUserMetricsSummary
        ,s.SK_light_IP
        ,s.SK_VISITS_IP
        ,s.SK_KEYBOARD_IP
        ,s.SK_USAGE_messages_IP
        ,s.SK_USAGE_phone_IP
        ,s.SK_light_AW
        ,s.SK_USAGE_messages_AW
        ,s.SK_USAGE_phone_AW

        --added on 12/5/2023:
        ,s.PROJECTDEVICEDATA
	from stg_MANIFEST s
	--left join MANIFEST o on TO_UTC_TIMESTAMP_TZ(s.EXPORTSTARTDATE) = o.EXPORTSTARTDATE
	--where o.rowid is null
	;
	commit;
/*
--------------------------------------------------------
--  20 - Data insertion for Table COMPETITIONS
--------------------------------------------------------
	insert into competitions (
		COMPETITIONKEY
		,COMPETITION_ID
		,TEAM1_INSTITUTION
		,TEAM1_PROGRAM
		,TEAM2_INSTITUTION
		,TEAM2_PROGRAM
		,CALCULATION_DATE
		,CALCULATION_TIMESTAMP
		,TEAM1_SCORE
		,TEAM2_SCORE
	)
	select 
		COMPETITIONKEY
		,COMPETITION_ID
		,TEAM1_INSTITUTION
		,TEAM1_PROGRAM
		,TEAM2_INSTITUTION
		,TEAM2_PROGRAM
		,to_date(CALCULATION_DATE, 'yyyy-mm-dd') as CALCULATION_DATE
		,TO_UTC_TIMESTAMP_TZ(CALCULATION_TIMESTAMP) as CALCULATION_TIMESTAMP
		,TEAM1_SCORE
		,TEAM2_SCORE
	from stg_competitions
	;
	commit;
*/

end;]]></definition>
         <parameters/>
      </routine>
      <routine deterministic="false" name="IHS_2023.PR_UPDATE_SURVEYDICTIONARY" type="PROCEDURE">
         <comment/>
         <definition language="PL/SQL"><![CDATA[procedure pr_update_SURVEYDICTIONARY
-- use AUTHID CURRENT_USER to execute with the privileges and 
-- schema context of the calling user
AUTHID CURRENT_USER AS

begin
--------------------------------------------------------
--  0 - Data insertion for Table SURVEYDICTIONARY
--------------------------------------------------------
    --added for IHS 2023:
    --fully refreshed!
	EXECUTE IMMEDIATE 'truncate table SURVEYDICTIONARY'; 

	insert into SURVEYDICTIONARY (
        SURVEYNAME
        ,SURVEYKEY
        ,SURVEYVERSION
        ,STEPIDENTIFIER
        ,RESULTIDENTIFIER
        ,QUESTIONTEXT
        ,ANSWERFORMAT
        ,ANSWERCHOICES
	)
	select
        SURVEYNAME
        ,fn_guid_to_raw(SURVEYKEY) as SURVEYKEY
        ,SURVEYVERSION
        ,STEPIDENTIFIER
        ,RESULTIDENTIFIER
        ,QUESTIONTEXT
        ,ANSWERFORMAT
        ,ANSWERCHOICES
	from stg_SurveyDictionary
    ;
	commit;

end;]]></definition>
         <parameters/>
      </routine>
   </routines>
</database>
