Dynamic Selection of Application Configuration Files According to Adaptation Targets
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- CLICK THERAPEUTICS INC
- Filing Date
- 2023-06-09
- Publication Date
- 2026-06-17
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
Technical Field
[0001] (Cross - Reference to Related Applications) This application claims the benefit of priority of U.S. Provisional Patent Application No. 63 / 350,976, filed on Jun. 10, 2022, entitled "Selection of Configuration Files for Applications in Accordance with Adaptive Goal Setting", which is hereby incorporated by reference in its entirety.
Background Art
[0002] Applications may be introduced and installed on computing devices to present digital therapies for addressing a user's behavioral or psychological conditions. As part of a digital therapy, the application itself may present a user interface that includes various elements for display and may be configured to perform a number of operations in response to a user's interaction with the elements of the user interface. After introduction, it is difficult for the application to adapt dynamically to the user's reaction, which can lead to a decrease in the likelihood of the user interacting with the application. As a result, the effectiveness of the digital therapy and the user's compliance with the digital therapy may be significantly reduced.
[0003] In a network environment, an application on a client can present one or more content items received as part of a message from a server. The content items may be customized for a particular user of the client and may be selected based on any number of factors, such as user history, device type, location, or time. The content items can also include a script (e.g., an event listener or handler) for specifying a presentation function when the content item is loaded into the client's application. For example, the content item can be presented as part of a digital therapy platform and can include text content related to conditions relevant to the user (e.g., smoking cessation, diet, exercise, and mental illness). When received, the application on the client can display the content item as a user interface element within the graphical user interface (GUI) of the application. When the content item is displayed via the application, the user can interact with one or more user interface elements to trigger the function of the corresponding content item.
[0004] The provision of content items by this method may be capable of performing the specified functionality, but the range of possible functionality and the selection of additional subsequent content items for the user may be extremely limited. In the context of digital therapy, the selection and provision of content items may be insufficient to achieve endpoints associated with the user's condition. For one, the digital therapy application itself may have relatively static and fixed functionality once introduced and installed on the client without relying on application updates. For example, an installed application may be able to present a limited number of different configurations for the graphical user interface that presents content items. Another is that the user's state and behavior may change over time, and the information on the factors used to pre-select content items may be insufficient to adapt to the constantly changing state of the relevant user.
[0005] Furthermore, the content items themselves may lack logic to account for such changes and thus may be too general and unrelated to the user's state at the time of presentation, leading to a decline in the quality of human-computer interaction (HCI) between the application and the user. As a result of these, computing resources are consumed to load and render content items in the application, and network bandwidth may be consumed by the round-trip communication between the client and the server. From the perspective of HCI, the lack of adaptability of content items may lead to a decline in the user's engagement and compliance with the digital therapy presented through the presentation of content items. Summary of the Invention
[0006] To address these and other challenges, this document presents a system and method for dynamically selecting an application's configuration file according to an Adaptive Goal Setting (AGS) framework. The configuration file is first selected and personalized for the user based on the user's baseline measurements, and then response data from the user may follow. By providing digital therapy via the configuration file on the application in such a way, user engagement and adherence, and ultimately the effectiveness of digital therapy, can be enhanced. The AGS framework can continuously and dynamically configure the application to match the user and their endpoints by capturing the user's interest (what satisfies the user in their current situation), presenting personalized content, and leveling goals based on baseline proficiency and metrics (aligning the goals with the situation in which the user is currently functioning). This framework can provide the user with engagement in daily activities (e.g., multiple times a day) to increase the potential for engagement and therapeutic effect by leveraging an application on an individual's mobile device (compared to traditional models, the interaction between the doctor and the user is only possible if the user can directly visit the clinic, and in that case it may be once a week). The AGS framework can also present mood mitigation strategies to address the user's state and increase retention. Additionally, the AGS framework can include features tailored to the individual, such as daily mood check-ins, scoring self-assessments before and after activities, exploring personal values, and a "do it now" option.
[0007] A server (or computing device) can select a configuration file to provide to an application for content presentation. Each configuration file can include logic or modules for an automaton (e.g., a finite state machine (FSM)) for one or more endpoints that specify one or more activities to be performed via an application on a client within a set period. In the case of a digital therapy application, the configuration file can specify a set of states and a set of transitions. Each state corresponds to a level associated with the activity of an endpoint and can specify the level of activity to be performed via the application. Each transition corresponds to a condition to be met to transition from one state to the next. The condition can be, for example, the success or failure of performing a specified activity within a set period.
[0008] The selection, provision, and internal logic of the configuration file itself may follow the Adaptive Goal Setting (AGS) framework. The AGS framework can support the execution of activities for endpoints (also referred to herein as goals, targets, or objectives) to address a user's condition in an adaptive manner. This framework can include the introduction of skills, setting a plan to achieve the endpoint, tracking the user's progress, and adaptively varying the activities incorporated for the endpoint.
[0009] Therefore, during the introduction phase, a user profile may be constructed using the user's responses to prompts (e.g., questionnaires) related to the user's condition and endpoints. Next, the user profile can be used to determine one or more endpoints and select a configuration file for enabling the endpoints as part of a plan to address the user's condition. This AGS framework can be used, for example, to adjust different categories of objectives (e.g., smoking cessation, diet for weight loss, improvement of exercise habits, coping with symptoms of mental illness), different types of activities (e.g., walking, running, swimming, hiking, dancing, stair climbing), activity types (e.g., walking, running, swimming, hiking, dancing, stair climbing), activity difficulty levels (e.g., lead climbing, top-rope climbing, bouldering), activity duration (e.g., 5 minutes, 10 minutes, 1 hour), activity frequency (e.g., once a week, once a day, three times a day), time of day to perform the activity (e.g., morning, noon, after meal), and so on.
[0010] The configuration file can present a persistent state to the automaton logic and maintain the user's progress across usage sessions. The configuration file itself can be an application plugin and can be modified for a particular endpoint (e.g., by a clinician) without relying on the application's reconfiguration. The automaton logic can be used to hold a set of variables such as level, activity, endpoint, and frequency. For example, the set of variables corresponds to level 4 of activity A for 5 minutes in the morning every other day for the user. With this information, the configuration file can be constructed to present a set of content items to guide the user to perform and record activities via the client application. As the user progresses through the automaton logic, the level, activity, endpoint, and frequency are updated, presenting a customized experience at each state. The logic can adjust the content items up and down to match the user's current state based on responses via the application. Further, over time, different endpoints can be adaptively determined using the response data, and various configuration files can be dynamically selected depending on the endpoint presented to the application.
[0011] By presenting the configuration file in this way, the application can be customized according to requirements, presenting a wider user experience to the user to meet different endpoints, thereby improving the HCI between the user and the application. Since the content items can be selected based on the state associated with the user according to the configuration file, the content items can lead to stronger user engagement with the digital therapy application. The possibility of stronger engagement means that the digital therapy presented by the application has higher effectiveness in dealing with the condition and the user's compliance with the digital therapy can be improved. The configuration file can also reduce the need to update the application itself to present additional features. Dynamically selecting and presenting the configuration file can reduce the consumption of computing resources (e.g., processor, memory, and network bandwidth) by presenting and loading irrelevant content items on the application. Furthermore, the configuration file can reduce the consumption of network bandwidth due to the round-trip communication associated with the request and acquisition of content items.
[0012] Aspects of the present disclosure are directed to a system, method, and non-transitory computer-readable medium for selecting a configuration file for an application. A computing system can hold a plurality of configuration files readable by an application. Each of the plurality of configuration files can identify a respective set of content items that prompt a user to perform at least one of a plurality of activities via the application to achieve a respective individual endpoint at a plurality of endpoints. The computing system may determine an endpoint at the plurality of endpoints to address the user's condition. The computing system can select, from the plurality of configuration files, a configuration file that identifies a set of content items for an activity of a plurality of activities that a user performs via the application towards achieving the endpoint. The computing system can present the configuration file to the application and present a set of content items that prompt the user to perform activities via the application.
[0013] In some embodiments, the computing system can receive response data from the user identifying one or more interactions with a set of content items presented via the application towards achieving the endpoint. The computing system may determine a second endpoint of the plurality of endpoints based on the response data for the endpoint. The computing system may select, from the plurality of configuration files, a second configuration file based on the second endpoint for presentation to the application.
[0014] In some embodiments, a computing system can identify a first level among a plurality of levels towards endpoint achievement from a user profile. The computing system can determine a transition from the first level to the second level based on response data identifying one or more interactions by the user with a set of content items presented via an application. The computing system may select a second configuration file from a plurality of configuration files based on the transition to the second level. In some embodiments, the computing system may determine whether to transition to either a first level or a second level among a plurality of levels towards achievement of a second endpoint based on the execution of the user's activities towards achievement of the endpoint.
[0015] In some embodiments, each of the plurality of configuration files can identify respective criteria that define a first measure of the user to select a corresponding configuration file that identifies a set of content items that prompt the user to perform an activity. The computing system may determine a second measure based on the user profile. The second measure can identify at least one of (i) the likelihood that the user will perform the activity or (ii) the predicted effectiveness of the activity for the user towards achievement of the endpoint. In some embodiments, the computing system may identify an activity from a plurality of activities based on a comparison of the first measure and the second measure.
[0016] In some embodiments, the computing system may receive, via an application, a response identifying the user's mood in response to a prompt presented at a defined time. In some embodiments, the computing system may identify, from a plurality of activities, activities based on the user's mood indicated in the response. In some embodiments, the computing system may receive, via an application, a response identifying a plurality of personal values of the user. In some embodiments, the computing system may identify, from a plurality of activities, activities based on the plurality of personal values associated with the user identified in the response. In some embodiments, the computing system may determine a progress metric based on the execution of activities towards endpoint achievement. In some embodiments, the computing system may present, via an application, a relationship between the progress metric and the personal values associated with the user.
[0017] In some embodiments, the computing system may present, via an application, a prompt prompting the user to indicate a first score associated with an activity prior to the execution of the activity via the application. In some embodiments, the computing system may store a response identifying the first score associated with the activity from the application. In some embodiments, the computing system may present, via an application, a prompt prompting the user to indicate a second score associated with the activity after the execution of the activity via the application. In some embodiments, the computing system may present, via an application, a comparison of the second score and the first score. In some embodiments, the computing system may determine an endpoint from a plurality of endpoints based on at least one of (i) a baseline assessment and (ii) an indication by the user requesting activities towards endpoint achievement.
[0018] In some embodiments, at least one of the plurality of configuration files may define a finite state machine. The finite state machine may identify a plurality of states including at least a first state and a second state, each state corresponding to an intensity level of a corresponding activity and specifying an output. The output can identify one or more content items to be presented via the application's user interface. The finite state machine may identify a plurality of transitions, each transition specifying an event to be detected via the application's user interface to transition from the first state to the second state, and the events corresponding to interactions to be performed via the application for each activity.
[0019] In some embodiments, the plurality of endpoints may be associated with at least one of a plurality of classifications for the endpoints. In some embodiments, a first subset of the plurality of endpoints may be associated with a first classification, and a second subset of the plurality of endpoints may be associated with a second classification. In some embodiments, the user may be receiving a dosage to address a condition, at least partially coinciding with the performance of activities via the application. In some embodiments, this condition may include a psychological or mental illness. る。
Brief Description of the Drawings
[0020] The above and other objects, aspects, features, and advantages of the present disclosure will become more apparent and better understood by referring to the following description in conjunction with the accompanying drawings.
Figure 1
Figure 2A
Figure 2B
Figure 2C
Figure 2D
Figure 2E
Figure 3
Figure 4
Figure 5A
Figure 5B
Figure 6A
Figure 6B
Figure 6C
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Figure 13
Figure 14
Figure 15
Figure 16
Figure 17
Figure 18
Figure 19
Figure 20
[0021] For reading the descriptions of the following various embodiments, each section of this specification and its respective content are listed below.
[0022] In section A, embodiments of a system and method for selecting an application configuration file are described.
[0023] In section B, a network and computing environment useful for practicing the embodiments described herein are described.
[0024] (A. System and Method for Selecting an Application Configuration File) Referring now to FIG. 1, a block diagram of a system 100 for selecting a configuration file for an application is depicted. In general, system 100 can include at least one application configuration service 105, one or more user devices 110A-N (hereinafter generally referred to as user device 110), and at least one database 115 communicatively coupled to each other via at least one network 120. The application configuration service 105 can particularly include at least one file indexer 125, at least one profile evaluator 130, at least one configuration selector 135, at least one configuration packager 140, at least one content manager 145, and at least one progress tracker 150. The database 115 can particularly store, maintain, or otherwise include a set of configuration files 155A-N (hereinafter generally referred to as configuration files 155) and a set of user profiles 160A-N (hereinafter generally referred to as user profiles 160). At least one of the user devices 110 can include at least one application 165. The application 165 can particularly include at least one profile creator 170, at least one behavior manager 175, at least one layout handler 180, and at least one event bus 185. The application 165 can also present at least one user interface 190 including one or more user interface elements 195A-N (hereinafter generally referred to as UI elements 195).
[0025] Each component within system 100 (e.g., application configuration service 105 and its components, as well as each user device 110 and its components) may be executed, processed, or implemented using hardware or a combination of hardware such as system 1700 detailed herein in section B. In some embodiments, application configuration service 105 may be part of user device 110 (e.g., as part of application 165). In some embodiments, at least a portion of the functionality of application configuration service 105 (including file indexer 125, profile evaluator 130, configuration selector 135, configuration packager 140, content manager 145, and progress tracker 150) may be executed on user device 110. For example, the operations of profile evaluator 130, configuration selector 135, and configuration packager 140 may be executed on user device 110.
[0026] More specifically, application configuration service 105 (which may also be generally referred to herein as a service) may include one or more processors coupled with memory and software, and may be any computing device capable of executing the various processes and tasks described herein. Application configuration service 105 can communicate with one or more user devices 110 and database 115 via network 120. Application configuration service 105 is located, arranged, or otherwise associated with at least one server group. The server group may correspond to a data center, a branch office, or a site where one or more servers corresponding to application configuration service 105 are located.
[0027] Within the application configuration service 105, the file indexer 125 can generate and store a configuration file 155 presented to the application 165. The profile evaluator 130 can create a user profile 160 for the user of the application 165 on the user device 110. The endpoint selector 135 can determine the user's endpoint and select a configuration file 155 to provide. The configuration packager 140 can present the configuration file 155 to be loaded onto the application 165. The content manager 145 can identify and present the content to be presented via the UI elements 195 of the user interface 190 for the application 165. The progress tracker 150 can update the user profile 160 and manage the re-determination of the endpoint for the user. The functionality of the various components of the application configuration service 105 can be executed by the application 165 on the user device 110.
[0028] The user device 110 (which may also be referred to herein as a client, client device, or end-user computing device) includes one or more processors coupled with memory and software, and may be any computing device capable of executing the various processes and tasks described herein. The user device 110 can communicate with the application configuration service 105 and the database 115 via the network 120. The user device 110 may be a smartphone, other mobile phone, tablet computer, wearable computing device (e.g., smartwatch, glasses), or laptop computer. The user device 110 may be used to access the application 165. In some embodiments, the application 165 may be downloaded (e.g., via a digital distribution platform) and installed on the user device 110. In some embodiments, the application 165 may be a web application having resources accessible via the network 120.
[0029] The application 165 executed on the user device 110 may be a digital therapeutic application and may present one or more sessions (which may also be referred to herein as treatment sessions) for addressing at least one condition of the user. The user's condition may be, for example, a habit (e.g., smoking, diet, or exercise), chronic pain (e.g., related to or including arthritis, migraine, fibromyalgia, back pain, Lyme disease, endometriosis, repetitive stress injury, irritable bowel syndrome, inflammatory bowel disease, and cancer pain), skin pathology (e.g., atopic dermatitis, psoriasis, cutaneous atrophy, and eczema), mood disorder (e.g., depression, bipolar disorder, or dysthymia), cognitive impairment (e.g., mild cognitive impairment (MCI), Alzheimer's disease, multiple sclerosis, and schizophrenia), and other diseases (narcolepsy and tumors), etc. Mood disorders and cognitive impairments may fall within the category of psychological (or mental) diseases or disorders.
[0030] The user may continue to take at least partially simultaneously medications for dealing with conditions while being presented with a session through application 165. Application 165 can enhance, augment, or otherwise increase the efficacy of the medication for dealing with the user's condition. For example, if the medication is for pain, the user may continue to take, in particular, acetaminophen, non-steroidal anti-inflammatory compositions, antidepressants, anti-seizure medications, or other compositions. For skin lesions, the user may continue to take steroid agents, antihistamines, or topical antiseptics, etc. For cognitive impairment, the user may continue to take cholinesterase inhibitors, memantine, or antipsychotics such as risperidone, quetiapine, olanzapine, ziprasidone, paliperidone, or aripiprazole, etc. In certain neurological disorders, stimulants or antidepressants, etc. are used for the user. In the case of mood disorders, the user may continue to take antidepressants or mood stabilizers. The user of application 165 may continue to receive other psychotherapy for these conditions.
[0031] Application 165 can include, present to, or otherwise provide to the user of user device 110 a user interface 190 that includes one or more UI elements 195 according to a configuration file 155 loaded in application 165. The UI elements 195 can correspond to visual components of the user interface 190 such as command buttons, text boxes, check boxes, radio buttons, menu items, and sliders. Application 165 may be a digital therapeutic application and may present a session (which may also be referred to herein as a treatment session) via the user interface 190 towards the achievement of one or more endpoints of the user (who may also be referred to herein as a patient, person, or subject).
[0032] Next, referring to FIG. 2A, a block diagram of a process 200 for maintaining configuration files within a system 100 for selecting configuration files is depicted. Process 200 can include, or correspond to, operations within system 100 for storing and cataloging configuration files for applications. Under process 200, a file indexer 125 executing on an application configuration service 105 can retrieve at least one configuration file 155 by searching, identifying, or otherwise receiving it. Configuration file 155 can be from another source, such as a developer's computing device that created configuration file 155. For example, a clinician can construct a script that forms a set of configuration files 155 for presenting digital therapies. Configuration file 155 can include instructions for configuring, defining, or otherwise specifying the various functionality of a package (or plug-in) presented to an application 165. The functionality specified by configuration file 155 can be separate from the built-in logic and functionality of application 165, such as that of application configuration service 105. In some embodiments, the instructions included in configuration file 155 can be in a human-readable format, particularly, such as Yet Another Markup Language (YAML), Extensible Markup Language (XML), and JavaScript Object Notation (JSON). In this manner, the effort performed by a developer in writing human-readable instructions within configuration file 155 may be less than when constructing instructions in other formats.
[0033] The configuration file 155 can specify, define, or otherwise identify at least one routine logic 202. In some embodiments, the routine logic 202 itself can be defined according to an automaton such as a finite state machine (FSM), a decision tree, or a pushdown automaton. The routine logic 202 can identify a set of content items for prompting a user to perform a set of activities directed toward the achievement of one or more endpoints (which may also be referred to herein as goals, targets, or objectives) when addressing the user's condition of the application 165. For example, the condition can include those of the user such as smoking, obesity, mental disorders (e.g., schizophrenia), mental cognition, and depression. The activities defined by the routine logic 202 include those for the treatment or management of the condition. The set of activities can form steps along the user's progress toward achieving the target endpoint of a given condition, such as smoking cessation.
[0034] The routine logic 202 of the configuration file 155 can in particular identify or include a set of states 204A - N (hereinafter generally referred to as states 204), a set of transitions 206A - N (hereinafter generally referred to as transitions 206), and a set of levels 208A - N (hereinafter generally referred to as levels 208). The set of states 204, the set of transitions 206, and the set of levels 208 can be used together to define or specify a set of activities to be performed by a user of the application 165 towards the achievement of one or more endpoints. Each state 204 can define, specify, or otherwise specify at least one output produced by the routine logic 202 upon invocation. The output can be for a particular activity with respect to the set of activities and can include one or more operations to be performed by the application 165. In some embodiments, the output can identify a user interface element 195 presented via the user interface 190 of the application 165. For example, the output can include or specify a set of content items to be generated or retrieved (e.g., using one or more identifiers (e.g., Uniform Resource Locator (URL))) for presentation as user interface element 195 in the user interface 190. In some embodiments, the output can identify another configuration file 155 to be loaded. For example, the output can include an identifier (e.g., file name) of the next configuration file 155 to be loaded into the application 165. At least one state 204 corresponds to the state 204 from which the routine logic 202 starts (e.g., the depicted state 204A).
[0035] Between a pair of states 204, the routine logic 202 can define, specify, or otherwise include at least one transition 206. Each transition 206 can define, identify, or otherwise specify an event that is detected via the application 165 to transition or update the routine logic 202 from one state 204 to another state 204. The event can correspond to a user interaction received via the application 165 on the user device 110. For example, the transition 206 can specify that the user records the completion of exercise A via the user interface 1685 of the application 165 to transition from a certain state 204A to the next state 204B. In some embodiments, the routine logic 202 can include at least two transitions 206 from a given state 204. For example, the routine logic 202 can identify one transition 206 for the activities associated with the state 204 to complete successfully. Conversely, the routine logic 202 can identify another transition 206 if the activities associated with the state 204 are not completed.
[0036] Among the set of states 204 and the set of transitions 206, the routine logic 202 can define, identify, or otherwise include a level 208. In some embodiments, the level 208 may be defined, identified, or otherwise specified in the state 204 or the transition 206 itself. Depending on the level 208, the set of activities specified by the corresponding set of states 204 can be defined in terms of the duration, frequency, and time period of the activities. In some embodiments, the level 208 can correspond to the same endpoint or different endpoints. For example, a first level 208A can correspond to a lower level for a given endpoint, and a second level 208B can correspond to a higher level for the same endpoint or a different endpoint. Generally, when the activities from the previous state 204 are successfully completed, the higher the level 208, the activities associated with a given state 204 can have a higher level of difficulty or intensity in terms of duration or frequency or both. For example, for a set of activities, in state 204A at a lower level 208A, activity B can be specified once a week in the evening, and in another state 204B-1 at a higher level 208B, activity C can be specified five times a week every morning. Conversely, when the completion of the activities from the previous state 204 fails, the higher the level 208, the activities associated with a given state 204 can have a lower level of difficulty or intensity in terms of duration or frequency or both. The activities associated with a given state 204 may be different from the activities associated with the previous state 204. For example, the activity may be part of a mitigation measure if the previous activity did not complete successfully.
[0037] Based on the definitions of state 204, transition 206, and level 208, the routine logic 202 of the configuration file 155 can increment the types, frequencies, and durations of activities specified to the user for execution via the application 165. Further, the routine logic 202 may adaptively produce an output in response to the actions of the user of the application 165. Examples of routine logic 202 that includes state 204, transition 206, and level 208 are detailed herein in conjunction with FIGS. 6A - C. The routine logic 202 across the set of configuration files 155 can be used to implement an Adaptive Goal Setting (AGS) framework. For example, as depicted in FIGS. 6A - C, a user can receive a baseline assessment and select a desire. Next, a 1 - day (1D) goal (or endpoint) is presented to direct the user. Thereafter, the user can progress to a 3 - day (3D) goal of the same or lower level in response to success. The user can progress through 3 - day goals until reaching the lowest or highest level. The user can select a new desire to work on (if sufficient time remains).
[0038] Each configuration file 155 may correspond to one or more goals and may be selected based on a baseline evaluation of the user's functionality to inform the level of the goals and related activities. An evaluation of the user's interests or desires in the domain may be used to identify the goals and the content of the goals and related activities for the configuration file 155. Following the introduction, the user may receive any number of goals as part of the configuration file 155. For example, if there are four phases, the user may receive four goals, then another four goals, then another four goals, and then eight goals. Each goal is associated with, for example, four daily activities. A user who has completed all the activities related to a goal may move on to the next level of goals within the same interest or desire. When the user achieves a goal, the application 165 may not only present a positive assertion but also present an opportunity to experience a positive sense of affirmation associated with achieving the goal. When the minimum or maximum goal level within an interest or desire is reached, the new goal may be within a new interest or desire presented via the application 165 at a level determined from the initial baseline evaluation. When the number of goals within the same interest or desire is reached, the user may be asked to reselect an interest or desire.
[0039] When presented to the application 165, the configuration file 155 may present activities related to one or more endpoints or goals for the user of the application 165 to perform and complete. The configuration file 155 can present the user (e.g., via a user interface element 195 on the user interface 190 of the application 165) with the option to perform the specified activity when prompted or schedule it for a later time. The activities can be configured to review and enhance the likelihood of practicing the therapeutic skills learned through the activities. The configuration file 155 and the activities can be selected based on personal values related to the classification of the endpoints.
[0040] Through the selective provision of the configuration file 155, the application 165 can present the daily activities within sequential endpoints. When the user completes an activity, the application 165 can present a positive assertion. If the user indicates during the daily check-in that they did not complete the previous day's activity, the application 165 can prompt the user to perform the same daily activity to continue towards endpoint or goal achievement. If the user is inactive or has not completed the previous activity, new activities may be locked. For example, after a period of inactivity or incomplete activity (e.g., 1 - 2 days), the user can be prompted by the application 165 to continue the same daily activity. After another period of inactivity or incomplete activity (e.g., 3 days or more), the user can be presented with the option to repeat the previously presented activities or obtain activities from a new endpoint via the application 165.
[0041] Subsequently, at a certain stage, if the user selects to obtain activities from a new endpoint, the activities can be presented at a reduced level within the same aspiration via the application 165. If the user reaches the lowest possible level for an endpoint, the user may be presented with the option to repeat the previously presented activities. For other configuration files 155, if the user selects activities from a new endpoint, the user may be presented with the option to reselect an aspiration or domain. After the daily activities are presented to the user, the application 165 can prompt the user to either start the activity immediately or set a time later in the day to complete the activity. If the user selects to set a reminder, the application 165 can send a notification at the selected time. The user may have the option to start the scheduled activities via the home screen of the application 165 before or after the scheduled time.
[0042] Furthermore, the configuration file 155 can identify, define, or specify at least one selection criterion 210 for selecting the corresponding configuration file 155. In some embodiments, the selection criterion 210 is separate from the configuration file 155 and may be associated with the configuration file 155. For example, the association between the selection criterion 210 and the configuration file 155 may be stored on the database 115 using one or more data structures such as a linked list, tree, table, array, graph, heap, or hash table. The selection criterion 210 can specify one or more parameters identified in the user profile 160 for which the configuration file 155 should be selected for providing to the application 165 on the user device 110. When the parameters specified by the selection criterion 210 match the parameters identified in the user profile 160, the configuration file 155 can be selected for providing to the application 165. In some embodiments, the selection criterion 210 can define one or more baseline metrics derived from the user profile 160 for which the configuration file 155 should be selected. When the metrics derived from the parameters of the user profile 160 meet (e.g., are above) the baseline metrics specified by the selection criterion 210, the configuration file 155 can be selected for providing to the application 165. Additional details regarding the parameters or baseline metrics of the selection criterion 210 are detailed below in this specification.
[0043] Upon receiving, the file indexer 125 can store and maintain the configuration file 155 on the database 115. The database 115 may be part of the application configuration service 105 or may be accessible by the application configuration service 105. In some embodiments, the file indexer 125 may store an association between the configuration file 155 and the source from which the configuration file 155 was received. In some embodiments, the file indexer 125 may store an association between the configuration file 155 and the version identifier of the configuration file 155. The configuration file 155 can be maintained on the database 115 for providing to instances of the application 165 across various clients 110. Since the configuration file 155 is separate from the application 165, the configuration file 155 can be easily updated and replaced.
[0044] Referring next to FIG. 2B, a block diagram of a process 220 for evaluating a user profile to present a configuration file in a system 100 for selecting a configuration file is depicted. The process 220 may include or correspond to operations within the system 100 that evaluate parameters within the user profile to select the configuration file 155 to generate a package to provide to the application 165. Under step 220, a profile creator 170 of the application 165 running on the user device 110 may produce, output, or otherwise generate a user profile 160 for the user 222 of the application 165. The user profile 160 may be generated based on one or more responses from the user 222. The responses can identify, define, or otherwise associate the endpoints and conditions indicated by the user 222.
[0045] When generating the user profile 160, the profile creator 170 can display, render, or otherwise present at least one prompt 224 to receive a response from the user 222. The prompt 224 may be presented to the user 222 using one or more of the user interface elements 195 on the user interface 190. In some embodiments, the prompt 224 may be presented when the application 165 is installed on the user device 110. In some embodiments, the prompt 224 may be presented in response to an interaction on the user interface 190 of the application 165. The interaction may correspond to a request by the user 222 for another endpoint or a new set of activities executed via the application 165. In some embodiments, the prompt 224 may follow a defined period, particularly, for example, once every 2 to 6 hours, once a day in the morning, or once a week. The prompt 224 can identify or include a set of questions for the user 222. The questions themselves may correspond to text, audio, or visual content on the user interface element 195 of the user interface 190. Responses to the questions may be input or entered by the user 222 via other user interface elements 195 such as radio buttons, command buttons, text boxes, sliders, or check boxes.
[0046] The profile creator 170 can include one or more event listeners for retrieving, obtaining, or otherwise receiving responses via a prompt 224 presented on the user interface 190. The set of questions presented in the prompt 224 may be configured, set, or otherwise configured by the application configuration service 105 or an administrator of the application 165. The questions may in particular query the user 222 to indicate at least one desired endpoint to be achieved (which may also be referred to herein as a goal, objective, or target) and at least one condition to be addressed (e.g., behavioral, psychological, or physical). The questions may also query the user 222 to identify at least one state of the user 222 (e.g., mood, emotional, behavioral, or physiological state). The questions may also in particular query the user 222 about preferences regarding the execution of activities or routines, such as the type, frequency, duration, day of the week, and time of the routine. Responses to the questions are recorded, input, or entered via user interface elements 195 on the user interface 190.
[0047] In some embodiments, the set of questions presented by questionnaire prompt 224 may conform to a questionnaire policy. The questionnaire policy can specify rules for selecting questions in response to responses to previous questions in the set. Responses to the questions may be used to generate user profile 160 of user 222. For example, the questionnaire can specify the presentation of a subset of questions regarding the frequency, duration, and level of hobby A when user 222 answers that they prefer hobby A as a type of activity performed and recorded via application 165. In some embodiments, the questionnaire may be a validated clinical assessment related to a physical or mental (or psychological) condition, for example, the Structured Clinical Interview for DSM (SCID) for assessing diagnoses from the Diagnostic and Statistical Manual of Mental Disorders (DSM), the Mini International Neuropsychiatric Interview (MINI), the Clinical Assessment Interview for Negative Symptoms (CAINS) scale for assessing the area of negative symptoms of motivation and pleasure, and the Hamilton Depression Rating Scale (HDRS), among others. Examples of prompt 224 and the set of questions presented therein are shown in FIGS. 7A - F herein (related to the user's physical activity). In the depicted example, the questionnaire policy can specify that prompt 224 presents a question regarding the time the user spent on performing physical activity (FIG. 7B) when the response to a previous question regarding whether physical activity was performed is affirmative (FIG. 7A).
[0048] Using the responses to the questions presented via prompt 224, profile creator 170 can determine or generate one or more parameters 226A - N (hereinafter generally referred to as parameter 226). Parameter 226 can identify or include any number of elements used to select one or more configuration files 155 presented to application 165. Parameter 226 may identify the endpoints to be achieved and the conditions of user 222 to be addressed. Parameter 226 may identify the state of user 222 (e.g., mood, emotional, behavioral, physiological state). Parameter 226 may specifically identify the type, frequency, duration, and time (e.g., day of the week or time of day) of activities for a routine, as indicated by user 222 via prompt 224. In some embodiments, parameter 226 may specifically identify the identifier of user device 110, the type of device of user device 110, the identifier of application 165, and the location of user 222. By generation, profile creator 170 can include one or more parameters 226 in user profile 160. The inclusion in user profile 160 may be according to a template. The template may include fields for including or inserting the values of parameter 226. Profile creator 170 may send, transmit, or otherwise present user profile 160 to application configuration service 105. User profile 160 may be sent as part of a message to application configuration service 105.
[0049] The profile evaluator 130 that executes on the application configuration service 105 may search, receive, or otherwise identify the user profile 160 from the user device 110. In some embodiments, the profile evaluator 130 may execute on the user device 110 as part of the application 165 to evaluate, for example, the user profile 160 generated by the profile creator 170 on the user device 110. When received from the user device 110, the profile evaluator 130 may store and maintain the user profile 160 in the database 115. In some embodiments, the profile evaluator 130 may fetch, obtain, or otherwise identify the user profile 160 from the database 115. The user profile 160 associated with the user 222 of the user device 110 may be stored and maintained on the database 115. The user profile 160 maintained on the database 115 may be updated using an instance of the user profile 160 received from the user device 110. By identification, the profile evaluator 130 may analyze the user profile 160 to extract or identify one or more parameters 226 within the user profile 160.
[0050] Using the parameter 226, the profile evaluator 130 can calculate, determine, or generate one or more metrics of the user 222 associated with the user profile 160. The metrics derived from the parameters 226 of the user profile 160 can be used to select the configuration file 155 to present to the application 165. The generation of the metrics may follow a function of the parameter 226. For example, the parameter 226 may include the user's answers to the questions depicted in FIGS. 7A - D. For example, the parameter 226 may include the user's answers to the questions depicted in FIGS. 7A - D and may be related to physical activity, such as whether the user 222 has performed physical activity and the time the user 222 spent performing physical activity. In this example, the profile evaluator 130 may generate metrics related to the physical activity of the user 222, such as the level of physical activity.
[0051] In some embodiments, the profile evaluator 130 can calculate, determine, or otherwise generate at least one metric for a user profile 160 that can be based on a user's responses to clinical evaluation questionnaires such as SCID, MINI, CAINS, and HDRS. The generation of the metric can follow the functionality for clinical evaluation. The metric can identify characteristics of a condition such as the severity of the condition. If determined prior to the execution of any activity, the metric can be determined as a baseline evaluation measurement for user 222. If determined after one or more activities, the metric can be determined as an evaluation metric for user 222.
[0052] In some embodiments, the profile evaluator 130 can generate a metric for identifying the degree of a characteristic of user 222's condition. For example, the characteristics of user 222 can include, in particular, for example, the severity of a behavioral condition, a physical condition, or a psychological (or mental) condition. In some embodiments, the metric can identify the likelihood that user 222 will perform a type of activity when prompted via application 165. For example, the metric can indicate the likelihood that user 222 will perform a hobby when prompted via the user interface 190 of application 165, and another metric can indicate the likelihood that user 222 will perform exercise. In some embodiments, the metric can identify the predicted effectiveness of a type of activity towards the achievement of one or more endpoints. For example, the metric can identify how effective the execution of running is in addressing user 222's condition related to an improvement in diet identified as a desired endpoint.
[0053] Furthermore, the profile evaluator 130 may store and maintain the user profile 160 including the parameter 226 in the database 115. In some embodiments, the profile evaluator 130 may store and maintain in the database 115 a measure derived from the parameter 226. In some embodiments, the profile evaluator 130 may include the measure in the user profile 160. In some embodiments, the profile evaluator 130 may use one or more data structures to generate an association between the measure and the user profile 160. Along with the generation, the profile evaluator 130 can store and maintain the association in the database 115. In some embodiments, the profile evaluator 130 may cooperate with the profile creator 170 to perform the functionality described herein, and vice versa.
[0054] The configuration selector 135 that runs on the application configuration service 105 can select, identify, or otherwise determine one or more endpoints to address the conditions of user 222. Generally, an endpoint may correspond to a result or measure related to addressing the conditions of user 222. The endpoint may correspond to the completion mark of a defined set of activities aimed at addressing the conditions of user 222. For example, an endpoint may be associated with a set number of activities (e.g., 4 activities per day) set over a defined time window, and the completion of the activities by user 222 may correspond to the achievement of the endpoint. The endpoint may also correspond to a measured improvement in the conditions of user 222. For example, an endpoint may be related to a perceived decrease in the sensation of pain (or other metric) related to the conditions of user 222. Endpoints can be classified into one or more classifications (sometimes referred to as domains in this specification). For example, one set of endpoints is associated with a first classification, and another set of endpoints is associated with a different second classification. Each endpoint can be associated with a set number of activities to be achieved, e.g., 4 activities. Each domain may be associated with a set number of endpoints, e.g., 4 endpoints. Each domain may be associated with a set number of parameters indicated by user 222, e.g., 3 desires.
[0055] To determine, the configuration selector 135 may determine an endpoint for user 222 based on the conditions to be addressed for user 222. For example, if the condition indicated by user 222 is a diet, the configuration selector 135 may select one or more endpoints related to the diet. In some embodiments, the configuration selector 135 may determine an endpoint based on at least one activity (or type of activity) indicated by user 222 towards achieving the endpoint. In some embodiments, the configuration selector 135 may determine an endpoint based on the parameters 226 of the user profile 160. For example, the configuration selector 135 may use the type, frequency, duration, and time of the activity specified by user 222 to determine the endpoint. In some embodiments, the configuration selector 135 may determine an endpoint based on metrics from a clinical assessment (e.g., a baseline assessment metric for a clinical assessment, the likelihood that the user will perform the activity, or the predicted effectiveness).
[0056] In some embodiments, the configuration selector 135 can select or identify one or more activities associated with an endpoint performed by user 222 via the application 165. The identification of the activity may be based on the parameters 226 indicated by user 222. For example, when user 222 indicates the desired type of activity, the configuration selector 135 can identify activities such as activity D, activity E, or activity F. In some embodiments, the configuration selector 135 may be executed on the user device 110 as part of the application 165 to identify an endpoint for user 222 of the user device 110. The identification of the endpoint may be based on the parameters 226 of the user profile 160 and the selection criteria 210 for each endpoint. As explained, the selection criteria 210 can specify the parameters 226 for which the configuration file 155 associated with the endpoint should be selected.
[0057] Configuration selector 135 can identify or select one or more configuration files 155 from the entire set of configuration files 155 for presentation to application 165 on user device 110. Based on an endpoint (or activities directed towards achieving the endpoint), configuration selector 135 may select the relevant configuration file 155 for providing to application 165. In some embodiments, configuration selector 135 can select multiple configuration files 155 for at least one endpoint. For example, if the determined endpoint is for dealing with smoking cessation, configuration selector 135 can identify a set of configuration files 155 marked as dealing with smoking cessation in selection criteria 210. Conversely, for each routine identified as not being included, configuration selector 135 may refrain from selecting the relevant configuration file 155 for providing to application 165.
[0058] To select, configuration selector 135 may identify the selection criteria 210 of each configuration file 155 from database 115. In some embodiments, configuration selector 135 may analyze each configuration file 155 to extract or identify the selection criteria 210 of the corresponding endpoint. In some embodiments, configuration selector 135 may identify the selection criteria 210 of the specified one or more activities. Specifically, configuration selector 135 can compare parameter 226 with the selection criteria 210 of the endpoint. If parameter 226 matches the parameter specified by selection criteria 210, configuration selector 135 may select the configuration file 155. Otherwise, when parameter 226 does not match the parameter specified by selection criteria 210, configuration selector 135 may refrain from selecting the configuration file 155.
[0059] In some embodiments, the routine selector 315 can compare a metric derived from parameter 226 with the routine selection criteria 210 to determine whether to select a given configuration file 155. When the determined metric meets (e.g., is greater than or within) the metric specified by the selection criteria 210, the routine selector 315 may select the configuration file 155 for provision. Otherwise, when the parameter 226 does not meet (e.g., is less than or outside of) the parameter specified by the selection criteria 210, the routine selector 315 can refrain from selecting the corresponding configuration file 155 for provision.
[0060] Optionally, the configuration selector 135 can relay, transmit, or otherwise present the identification of the selected configuration file 155 (or, by extension, the routine) to the profile evaluator 130 for setting or updating the user profile 160. The user profile 160 stored in the database 115 can be used to track the routines and configuration files 155 presented to the user 222, as well as the user 222's progress in each routine, using the state 204 and level 208 of the routine logic 202. When storing the user profile 160 as part of the initial selection of the configuration file 155, the profile evaluator 130 may individually identify the state 204 and level 208 of each selected routine as being in an initial state (e.g., state 204A) and an initial level (e.g., level 208A). The profile evaluator 130 can store and maintain the initial state 204 and initial level 208 of each selected configuration file 155 in the user profile 160 on the database 115.
[0061] The configuration packager 140 executed on the application configuration service 105 can produce, output, or otherwise generate at least one package 228 using the selected configuration file 155. In some embodiments, the configuration packager 140 may be executed on the user device 110, for example, to generate the package 228 loaded by the application 165. The package 228 may include instructions for configuring, defining, or otherwise specifying various functionalities executed on the application 165. Generally, the instructions of the package 228 may be machine-readable code. The instructions of the package 228 can also define the routine logic 202 including a set of states, transitions 206, and levels 208. Further, the instructions of the package 228 can also define the user interface elements 195 for output in the state 204 of the routine logic 202. Since the package 228 is generated separately from the application 165, which packages 228 the application 165 includes can be easily exchanged based on the corresponding user's conditions. In generation, the configuration packager 140 may create a separate file storing the specification of the package 228. The configuration packager 140 may parse one or more configuration files 155 to read or identify the instructions in the original form.
[0062] When the configuration file 155 is identified, the configuration packager 140 can generate or determine equivalent instructions in an executable format for inclusion in the application 165. In some embodiments, the configuration packager 140 may compile the configuration file 155 to generate instructions in a lower-level language. Once compiled, the instructions of the package 228 can be in a lower-level language such as, among other things, bytecode, assembly, object code, or machine code. In some embodiments, the configuration packager 140 may transpile the configuration file 155 to generate instructions in an intermediate format to be added to the application 165. For example, the instructions can be in a language at a similar level as the original of the configuration file 155 such as, among other things, JavaScript or Typescript. During generation, the configuration packager 140 can write the equivalent instructions to a file for the package 228 and can repeat until the end of the configuration file 155.
[0063] Upon generation, the configuration packager 140 may present an indication of the package 228 to be added or included in the application 165. In some embodiments, the configuration packager 140 may insert or introduce the package 228 into the application 165 before providing it to the user device 110. For example, the configuration packager 140 may introduce the package 228 into the application 165 that already includes other components such as, among other things, the behavior manager 175, the layout handler 180, and the event bus 185. The configuration packager 140 may present the application 165 including the introduced package 228 to the user device 110 via a digital distribution platform (e.g., an application market or store). The user device 110 may request to download or retrieve the application 165 from the application configuration service 105 (or the digital distribution platform) for installation. Once received, the user device 110 can unzip and install the application 165 including the package 228.
[0064] The configuration packager 140 can send, transmit, or otherwise present an instruction for a package 228 to add or include an application 165 installed on the user device 110. For example, the user device 110 may have pre-installed an application 165 received from the application configuration service 105 (e.g., via a digital distribution platform). In some embodiments, the user device 110 can then request an update to the configuration of the application 165. In some embodiments, the configuration packager 140 can identify or determine that an update is presented to the application 165 through the configuration file 155. For example, a system administrator of the application configuration service 1605 may instruct that an instance of the application 165 be updated. By identifying the update, the configuration packager 140 can present an instruction for the package 228 without presenting other components of the application 165. Upon receipt, the user device 110 (or the application 165 itself) may update the already installed application 165 to include the package 228. In some embodiments, the received instructions for the package 228 may be in an intermediate format, and the application 165 may further compile the instructions to generate a lower-level format for execution on the user device 110.
[0065] Referring now to FIG. 2C, a block diagram of a process 240 for processing a configuration package within a system 100 for selecting a configuration file is depicted. Process 240 may include, or correspond to, operations executed by system 100 upon loading and executing routine logic 202 defined in package 228. Under process 240, application 165 (or an application service of application 165) may perform initialization operations such as, among other things, starting the execution of behavior manager 175, layout handler 180, event bus 185, and user interface 190. Application 165 may execute various logics and operations defined for application 165 outside of package 228 received from application configuration service 105. Application 165 may retrieve, identify, or otherwise receive package 228 from application configuration service 105.
[0066] The behavior manager 175 of the application 165 running on the user device 110 can parse the package 228, read out, load, and execute the routine logic 202. As described above, the routine logic 202 may correspond to a set of activities executed, recorded, and logged by the user 222 via the application 165 on the user device 110. In some embodiments, the behavior manager 175 may parse multiple corresponding packages 228 to execute multiple corresponding routine logics 202. For each routine logic 202, the behavior manager 175 may track the current state 204 of the routine logic 202. In some embodiments, the behavior manager 175 may use or maintain an identifier of the current state 204 of each routine logic 202 to maintain the tracking. Further, the behavior manager 175 may track the current level 208 of the user 222 defined in the routine logic 202. In some embodiments, the behavior manager 175 can identify the current level 208 from the current state 204 in which the routine logic 202 is. At initialization, the current state 204 of the routine logic 202 may correspond to the start state 204 (e.g., state 204A in the depicted example). The current level 208 may correspond to the first level 208 (e.g., level 208A in the depicted example).
[0067] In conjunction, the behavior manager 175 can monitor or listen for at least one event 242 of one or more user interface elements 195 within the user interface 190 via the event bus 185. The event 242 may correspond to an activity executed by the user 222 of the application 165. For example, the user interface 190 may present a prompt for the user 222 to perform Exercise B, and the user 222 may indicate the completion of the exercise via an interaction with one of the user interface elements 195 on the user interface 190. Thus, the event 242 can correspond to the completion of the activity specified by the state 204 of the routine logic 202.
[0068] In some embodiments, behavior manager 175 may monitor or listen for events 242 from application 165 or another process of user device 110. Events 242 in this case may correspond to the occurrence of an action by a process of application 165 or user device 110 that was not triggered by an interaction from user 222. For example, behavior manager 175 may receive, via a system timer on user device 110, the elapsed time from the presentation of a prompt to the performance of an activity. Behavior manager 175 may compare the elapsed time to a time span specified by state 204 in order to complete the activity. Behavior manager 175 may identify the exceeding of the specified time as event 242.
[0069] In some embodiments, behavior manager 175 may prompt user 222 to select or identify whether to perform an activity presented in a prompt. For example, after receiving the activity prompt, user 222 may select either "do it now" or "do it later" through a plurality of routes to increase the likelihood of completion. The former option may enable user 222 to indicate that user 222 is behaviorally activated. This can be a significant advantage in that it can capture the user when the user is motivated, as compared to another more fixed setting that permits only the latter option. The latter option may reinforce the behavior of planning an activity, selecting a time, receiving reminders, and performing the activity in application 165 at the specified later time. If the identification is to perform the activity at a later time, behavior manager 175 may store the instruction and be able to reprompt for the activity at the specified time. Otherwise, when the instruction is to perform the activity, behavior manager 175 may proceed to further processing to load routine logic 202 of package 228.
[0070] Based on the detection of event 242, behavior manager 175 may determine or select at least one routine logic 202 within corresponding package 228 to initiate. In some embodiments, behavior manager 175 may transmit or pass the detected event 242 to package 228 via event bus 185. Event bus 185 may correspond to an interface between package 228 and various components of application 165, such as behavior manager 175 and layout handler 180 in particular. By passing, behavior manager 175 may check the detected event 242 against the events specified by transition 206 for the current state 204. As described above, behavior manager 175 may track the current state 204 and current level 208 of each routine logic 202 within each package 228. In some embodiments, behavior manager 175 may detect or receive the result of checking the event 242 detected via event bus 185.
[0071] From routine logic 202, behavior manager 175 may identify the specified events of each transition 206 associated with the current state 204 to check against the detected event 242. If the detected event 242 does not correspond to the specification in any of the transitions 206 of the current state 204, behavior manager 175 may maintain the routine logic 202 at the current state 204 and current level 208. In some embodiments, behavior manager 175 may also refrain from initiating the routine logic 202. The maintenance of routine logic 202 in the current state 204 may correspond to the user 222 not having completed the activities of the routine set for the routine logic 202 for any of the transitions 206 associated with the current state 204. Behavior manager 175 can continue to check the detected event 242 against the specifications of the routine logic 202 of other packages 228.
[0072] Conversely, when the detected event 242 corresponds to the specification of one of the transitions 206 of the current state 204, the behavior manager 175 may select the routine logic 202 to start. By starting, the behavior manager 175 may update the current state 204 and the current level 208 of the routine logic 202 to the next state 204 according to the transition 206. The update of the routine logic 202 from the current state 204 to the next state 204 may correspond to the completion (success or failure) of the activities of the routine set for the routine logic 202 such that the user 222 is specified for at least one of the transitions 206 associated with the current state 204. For example, the current state 204 may be updated from the initial state 204A to the state 204B-1 upon successful completion as specified by each transition 206. In contrast, the current state 204 may transition from the initial state 204A to the state 204B-2 upon failure of completion as defined by each transition 206.
[0073] In addition, from the start of the routine logic 202 of the package 280, the behavior manager 175 may search for or identify the output 244 specified by the next state 204 of the routine logic 202. The output 244 may be produced or generated by the state 204 as specified by the routine logic 202 at startup. The output 244 may identify the user interface element 195 presented via the user interface 190 of the application 165 as described above. In some embodiments, the output 244 may specify the modifications applied to the user interface element 195 of the user interface 190. The behavior manager 175 may communicate or pass the output 244 to the layout handler 180 via the event bus 185.
[0074] Referring now to FIG. 2D, a block diagram of a process 260 for modifying a user interface within system 100 to select a configuration file is depicted. Process 260 can include, or can correspond to, the operation of application configuration service 105 and application 165 upon startup of one of the routine logics 202 defined in package 228. Under process 260, a layout handler 180 of application 165 running on user device 110 can update, change, or otherwise modify user interface elements 195 of user interface 190 according to output 244. By setting user interface 190, layout handler 180 can associate or couple state 204 (and level 208) within routine logic 202 of package 228 to user interface elements 195 of user interface 190. In some embodiments, layout handler 180 can cooperate with behavior manager 175 to maintain an association or coupling between state 204 (and level 208) of routine logic 202 and user interface elements 195 of user interface 190. For example, layout handler 180 may track the relationship between state 204 (and level 208) of the most recently launched routine logic 202 and user interface elements 195 that are rendered or presented via user interface 190.
[0075] In the correction, the layout handler 180 can determine whether to send the content request 262 to the application configuration service 105 or to another remote service (e.g., related to the developer of the configuration file 155). In some embodiments, the layout handler 180 may be executed on the user device 110, for example, to identify the content to be presented through the user interface 190. The output 244 may depend on at least one content item 264A - N (hereinafter generally referred to as content item 264). The content item 264 may be stored and maintained on a database (e.g., database 115 as depicted), and may include images, videos, and other objects presented during the execution of the application 165. If the output 244 does not specify a search for the content item 264, the layout handler 180 may refrain from communicating the content request 262 to the application configuration service 105. Also, the layout handler 180 may continue to modify the user interface element 195 of the user interface 190 according to the output 244. On the other hand, if the output 244 specifies a search for the content, the layout handler 180 may decide to send the content request 262 to the application configuration service 105. The layout handler 180 can generate a content request 262 that includes at least one identifier referring to the content item 264 retrieved from the application configuration service 105. The identifier can be specified by the output 244 from the current state 204 of the routine logic 202.
[0076] The content manager 145 that runs on the application configuration service 105 can search for, identify, or otherwise receive a content request 262 from the user device 110. In some embodiments, the content manager 145 may exist on a remote service separate from the application configuration service 105. The content manager 145 may analyze the request 262 to identify content items 264 to be provided to the user device 110 for presentation on the user interface 190. In some embodiments, the content manager 145 may use an identifier within the request 262 to access the database 115 to search for, fetch, or identify content items 264 referenced by the identifier. The content items 264 may be information of visual or audio media and may include images, videos, audio, or any other object presented on the user interface 190. For example, the content item 264 may include audio that is played in conjunction with Exercise C for an endpoint associated with the activated routine logic 202. Specifically, the content manager 145 may send, return, or otherwise present the content item 264 to the user device 110.
[0077] The layout handler 180 can search for, identify, or receive the content item 264 from the application configuration service 105 (or a remote service). Upon receiving, the layout handler 180 can insert, add, or otherwise include the content item 264 into the user interface 190. The layout handler 180 can include the content item 264 in one or more user interface elements 195 for presentation as specified by the output 244 from the routine logic 202. At the same time, the layout handler 180 may modify the user interface elements 195 of the user interface 190 according to the output 244. For example, the layout handler 180 can instantiate the user interface elements 195, set the color and other visual characteristics of the individual user interface elements 195 themselves, set the font and size of the text within the individual user interface elements 195, and assign the placement of the user interface elements 195 within the display of the user device 110.
[0078] In some embodiments, the layout handler 180 may generate or determine rendering instructions using the output 244 specified by the routine logic 202. The output 244 may specify a set of instructions (e.g., an original or lower-level format) corresponding to each user interface element 195 included in the user interface 190. The rendering instructions may be in the form of a display list or a rendering tree. Once specified, the layout handler 180 can parse the instructions within the output 244 corresponding to the set of user interface elements 195. For each instruction, the layout handler 180 may generate an equivalent entry (e.g., a rendering tree node) to include in the rendering instructions. By generating, the layout handler 180 may be able to present the user interface elements 195 for the user interface 190 according to the rendering instructions.
[0079] Examples of content items 264 presented as user interface elements 195 on the user interface 190 are depicted in FIGS. 8A-L (Level 1 for trying new hobbies, with selection of old hobbies), FIGS. 9A-L (Level 2 for trying new hobbies), FIGS. 10A-J (Level 3 for trying new hobbies), FIGS. 11A-G (Level 4 for trying new hobbies), FIGS. 12A-D (Level 1 for building habits), FIGS. 13A-K (Level 2 for building habits), FIGS. 14A-J (Level 2 for building habits), FIGS. 15A-J (Level 3 for trying new habits), and FIGS. 16A-J (Level 4 for trying new habits). Similar to the questionnaire prompt 224, the content item 264 can also include a prompt for a question that the user 222 should answer. Each question of the depicted examples corresponds to at least one content item 264 and can be associated with a transition 206 from one state 204 to another state 204. The user 222 can be presented with the depicted prompt and trigger a transition 206 from one state 204 to another state 204 by interacting with a button.
[0080] Referring now to FIG. 2E, there is depicted a block diagram of a process for evaluating response data to present a configuration file in a system 100 for selecting a configuration file. Process 280 may include, or correspond to, operations within system 100 for evaluating a response and presenting a new package. Under process 280, behavior manager 175 may send, communicate, or present at least one response data 282 (which may also be referred to as a record entry) to application configuration service 105. When detecting one or more events 242, behavior manager 175 may write or generate response data 282. Response data 282 may identify or include various events 242 according to a set of activities defined in package 228 presented to user device 110. For example, information included in response data 282 may include or identify the current state 204 and current level 208 of each routine logic 202, an update to the state 204 or level 208 in routine logic 202, an indication of completion or failure of completion of a routine associated with routine logic 202, detected events 242, a timestamp at which each event 242 was detected, an identifier of user 222, and an identifier of user device 110, etc. By generation, behavior manager 175 may send response data 282 to application configuration service 105.
[0081] In some embodiments, the behavior manager 175 can initiate or call the profiler 170 to aggregate, collect, or otherwise receive additional responses from the user 222 via the questionnaire prompt 224. The prompt 224 can be presented at defined times, such as, among other times, at the beginning of the day, at the end of the day, once every 4 - 6 hours, once a week, or once a month. For example, the user 222 can interact with the user interface element 195 that presents the prompt 224 to present a set of questions. As described above, the questions can, among other things, query the user 222 as to preferences regarding activities or routines, such as desired endpoints to be achieved, conditions to be addressed, types of routines, frequencies, durations, days of the week, and times. The questions can also be part of a clinical assessment interview, as described above. The behavior manager 175 can receive responses by the user 222 to the set of questions via the prompt 224 in a manner similar to that described above. Upon receipt, the behavior manager 175 may include the response from the user 222 in the response data 282.
[0082] In some embodiments, behavior manager 175 may determine or identify at least one state of user 222 (e.g., mood, emotional, behavioral, or physiological state) from responses from user 222 via questionnaire prompt 224. Examples of questionnaire prompts 224 regarding mood are depicted in FIGS. 17A - E. A mood check - in as depicted in the example may support user 222 to be more likely to perform an activity (e.g., when prompted or at a later time). The check - in may also enable user 222 to satisfy their emotional state and build trust in performing activities through application 165 towards achieving endpoints. The prompt 224 in the depicted example may enable user 222 to indicate, among other things, the user's mood (which may be referred to herein as an emotional state), such as happiness, sadness, anger, fear, disgust, surprise, or excitement. This response may be used to select a configuration file 155 for presenting a targeted relaxation. Other states may include, among other things, behavioral states (e.g., at rest, during meals, at work, studying, during leisure, during conversation, playing, or exploring) or physiological states (e.g., at rest, during activity, during stress, or in an intense state). Behavior manager 175 may activate profile creator 170 to present questionnaire prompt 224 via user interface element 195 of user interface 190 to prompt user 222 to indicate a state. Questionnaire prompt 224 may be presented to user 222 at defined times (e.g., once every 4 - 6 hours, once a day in the evening, or once a week). Through questionnaire prompt 224, behavior manager 175 may receive a response indicating the state of user 222. Upon receipt, behavior manager 175 may include the response from user 222 in response data 282.
[0083] In some embodiments, the behavior manager 175 can determine or identify one or more personal values of the user 222 from the responses of the user 222 in response to the prompt 224. Examples of questionnaire prompts 224 regarding personal values are depicted in FIGS. 18A - C. In the depicted examples, the interface of FIG. 18A can present scenarios to be considered to the user 222, the interface of FIG. 18B can present the user 222 with an opportunity to explore values or preferences for a goal or endpoint in mind, and the prompt of FIG. 18C can allow the user 222 to input one or more personal values that resurface throughout the session. Personal values can identify characteristics of activities that the user 222 desires to perform or endpoints that the user 222 identifies as purposes when performing activities. The questionnaire prompt 224 can be presented to the user 222 at defined times (e.g., once every 4 - 6 hours, once a day in the evening, or once a week for a check - in). Through the questionnaire prompt 224, the behavior manager 175 can receive responses indicating one or more personal values. Upon receipt, the behavior manager 175 may include the response from the user 222 in the response data 282.
[0084] In some embodiments, while executing the routine logic 202 of the configuration file 155, the behavior manager 175 may determine, obtain, or otherwise identify the scoring associated with the activity before execution. To identify, the behavior manager 175 may present a prompt 224 indicating the scoring associated with the activity before the execution of the activity. In addition, the behavior manager 175 may determine, obtain, or otherwise identify the scoring associated with the activity after execution via the application 165. To identify, the behavior manager 175 may present a prompt 224 indicating the scoring associated with the activity after the execution of the activity. The scoring may be obtained from the responses of the user 222 in response to one or more prompts 224 indicating the scoring. The pre-execution scoring may indicate the self-evaluation value expected by the user 222 when dealing with conditions or achieving endpoints by executing the activity specified in the prompt 224. The post-execution scoring can identify the self-evaluation value of the user 222's experience in dealing with the conditions after executing the activity specified in the prompt 224 or in achieving the endpoint.
[0085] Regarding scoring, through the configuration file 155, the application 165 may present lesson content explaining the relationship between thoughts, feelings, and actions to inform the user 222 of the premises of cognitive restructuring and how the activities deal with conditions. By the configuration file 155, the application 165 may present one or more interactive activities to help the user 222 understand the thinking patterns that contribute to defeatist moods associated with negative symptoms.
[0086] For example, in the orientation phase, after introducing the pre- and post-activity survey concepts to user 222, behavior manager 175 surveys the user a predetermined number of times (e.g., 4 times). Before user 222 starts an activity, behavior manager 175 may prompt user 222 with a prediction question regarding the activity to be selected from a scale of 1 to 10. After user 222 completes the activity, behavior manager 175 may prompt user 222 with a retrospective question regarding the activity to be selected from a scale of 1 to 10. In the active phase, behavior manager 175 may prompt user 222 to take a survey before and after each activity. Before user 222 starts an activity, behavior manager 175 may prompt user 222 with a prediction question regarding the activity to be selected from a scale of 1 to 10. After user 222 completes the activity, behavior manager 222 may prompt user 222 with a retrospective question regarding the activity to be selected from a scale of 1 to 10.
[0087] Examples of questionnaire prompts 224 for self-evaluation scoring before and after an activity are depicted in FIGS. 19A - D. In the depicted examples, the prompts encourage the user to practice noticing expectations for each activity. The questions of prompt 224 may be pre- / post-activity questions, and the response data may be used to review the user's own signs in order to combat defeatist moods and show growth. These self-evaluations by user 222 can be used to reflect changes in perception. Showing improvement can be a powerful motivator for trust and can lead to a change in user perception that motivates user 222 to more faithfully adhere to the digital therapy presented through profile 255. After performing an activity, user 222 may be prompted to review the experience gained from performing the activity. User 222 may show pre- and post-activity responses to encourage strict adherence to and continuous execution of the activities presented via application 165. Through questionnaire prompt 224, behavior manager 175 may receive responses indicating scoring. Upon receipt, behavior manager 175 may include the responses from user 222 in response data 282.
[0088] The progress tracker 150 executed on the application configuration service 105 may use the response data 282 to change, modify or otherwise update the user profile 160 maintained on the database 115. As described above, the user profile 160 maintained on the database 115 may be used to track the progress of the user 222 of each routine presented via the package 228. The progress tracker 150 may search for, identify or otherwise receive the response data 282 from the user device 110. Upon receipt, the progress tracker 150 may analyze the response data 282 to extract or identify the information contained therein. In some embodiments, the progress tracker 150 may store and maintain the response data 282 (e.g., including a display of the status of the user 222, one or more personal values or scores) in the database 115. The progress tracker 150 may use the user profile 160 or a log record associated with the user 222 to store the response data 282 on the database 115. The log record may be a data structure associated with the user profile 160.
[0089] Based on the information parsed from the response data 282, the progress tracker 150 may set, update or otherwise modify the user profile 160. Using the identifier of the user 222 from the response data 282, the progress tracker 150 may identify the user profile 160 associated with the user 222. From the user profile 160, the progress tracker 150 may identify the currently recorded level 208 of the user 222. The level 208 may in particular correspond to a stage or progress towards the achievement of dealing with a given endpoint, set of activities or conditions. For each configuration file 155 selected for the user 222, the user profile 160 may identify the current state 204 and the current level 208 of the routine logic 202.
[0090] Specifically, the progress tracker 150 may determine whether there is a transition from the current level 208 to the next level 208 based on the response data 282. From the response data 282, the progress tracker 150 may extract or identify the level 208 of the user 222. In some embodiments, the progress tracker 150 may determine whether to transition the level 208 of the user 222 towards achieving an endpoint. When the user 222 has achieved an endpoint or activity, the level 208 indicated by the response data 282 may be higher than the level 208 currently identified in the user profile 160. If the user 222 has not achieved an endpoint or activity, the level 208 indicated by the response data 282 may be the same as or lower than the level 208 currently identified in the user profile 160. In some embodiments, the progress tracker 150 may use one or more interactions as specified in the response data 282 to determine new states 204 and levels 208 according to the routine logic 202 of the configuration file 155 selected for the user 222. The new level 208 may be in a direction towards achieving an endpoint different from the previous level 208, as shown in the user profile 160.
[0091] The progress tracker 150 can compare the level 208 from the user profile 160 with the level 208 identified by the response data 282 to determine whether there is a transition. If the levels are not different, the progress tracker 150 may determine that there is no transition from the current level 208 of the user 222. If the levels are different, the progress tracker 150 may determine that there is a transition from the current level 208 to the next level 208. The progress tracker 150 may set the state 204 and level 208 within the user profile 160 to the state 204 and level 208 identified by the response data 282, respectively. In some embodiments, the progress tracker 150 may determine or identify a transition to a higher or lower level based on the identified level 208. When the current level 208 is lower than the level 208 identified from the response data 282, the progress tracker 150 may determine a transition to a higher level. Conversely, when the current level 208 is higher than the indicated level 208, the progress tracker 150 may determine a transition to a lower level.
[0092] Furthermore, the progress tracker 150 can use the information from the response data 282 to set, update, or otherwise modify the parameter 226 within the user profile 160. As described above, the parameter 226 can in particular identify the endpoint to be achieved and the condition of the user 222 to be addressed, the state of the user 222, the type of routine, the frequency, period, and time for the routine (e.g., day of the week or time of day). In some embodiments, the progress tracker 150 can adjust, set, or change the frequency and period based on an indication of the success or failure of the routine selected for the user 222 or an update of the state 204 or level 208. For example, the progress tracker 150 may increase the frequency or period of the routine if the response data 282 indicates successful completion of the routine. Conversely, the progress tracker 150 may decrease the frequency or period of the routine if the response data 282 indicates failure of the completion of the routine.
[0093] In some embodiments, the progress tracker 150 may identify or determine at least one progress metric regarding a personal value based on the response data 282. The response data 282 may identify the execution of activities towards the achievement of an endpoint, such as one or more interactions with content items presented via the user interface 190 of the application 165. The progress metric may identify or correspond to a measure of improvement or deterioration regarding fulfilling a personal value by performing the activities specified by the configuration file 155. For example, regarding the personal value of excitement, the progress tracker 150 may determine a relatively high progress metric if the response data 228 indicates that the user is satisfied with the activities performed. Based on this determination, the progress tracker 150 can communicate, transmit, or otherwise present the relationship between the progress metric and the personal value for presentation via the user interface 190 of the application 165. For example, the relationship may be presented on the user interface 190 as part of the prompt 224 or following the presentation of the prompt 224. In some embodiments, the progress tracker 150 may present the progress metric as part of a subsequent package presented to the application 165. The progress metric may be presented to the user 222 to prompt reflection and facilitate awareness of progress.
[0094] In some embodiments, the progress tracker 150 may compare a score obtained before the execution of an activity with a score obtained after the execution of the activity as specified in the response data 282. Based on the comparison, the progress tracker 150 may calculate, generate, or otherwise determine an indicator that identifies the difference between the two scores. Based on the determination, the progress tracker 150 may communicate, transmit, or otherwise present the comparison between the scores (or the indicator of the difference or both) for presentation via the application 165. For example, the comparison may be presented as part of the prompt 224 or on the user interface 190 following the presentation of the prompt 224. The presentation of the comparison may be to reinforce for the user 222 the concept of experimentation in the execution of the activity, regardless of the expected result. Also, the presentation of the pre- and post-activity evaluations may challenge the user 222's preconceptions and defeatist views, using the evidence of the user's own experience of following a progress different from what was expected. In some embodiments, the progress tracker 150 may present the comparison or the indicator of the difference as part of a subsequent package presented to the application 165.
[0095] Upon updating the user profile 160, the progress tracker 150 may modify, set, or change the endpoints to be achieved. In some embodiments, the progress tracker 150 may modify, set, or change the conditions of the user 222 based on the information parsed from the response data 282. The information may include responses received via the prompt 224. The progress tracker 150 may replace, change, or otherwise set the endpoints or conditions of the user 222 shown in the user profile 160 with the endpoints or conditions shown in the response data 282, respectively. The changes to the endpoints and conditions may result in changes to the parameters 226 within the user profile 160. In some embodiments, the progress tracker 150 may calculate, determine, or generate new metrics based on the updated parameters 226. The generation of the metrics using the parameters 226 may be performed in a manner similar to that described above. For example, the progress tracker 150 may use, among other things, functions that calculate the characteristics of the user 222 and the values of the likelihood that the user 222 will execute a given routine. Upon generation, the progress tracker 150 may store and maintain the new metrics together with the user profile 160 on the database 115.
[0096] The configuration selector 135 may select, identify, or otherwise determine one or more new endpoints for the user 222. The identification of the endpoints (and the activities associated with the endpoints) may be in a manner similar to that described above, and may be based on the parameters 226 and selection criteria 210 of the user profile 160. For example, changes to the user profile 160 may include an update to the status 204 or level 208, or a display of successful completion, or an increase in the period or frequency for a routine. In this case, the configuration selector 135 may select the next endpoint with increased period and frequency of activities. In contrast, changes to the user profile 160 may include an update to the status 204 or level 208, or a display of non - completion, or a decrease in the period or frequency of a routine. In this scenario, the configuration selector 135 may select a routine with decreased period and frequency. Subsequently, changes to the user profile 160 can include a modification of the endpoints or the conditions of the user 222. Based on this change, the configuration selector 135 can select activities for the new endpoints or conditions.
[0097] In some embodiments, the configuration selector 135 can use information derived from response data 282 received via the prompt 224 to select a new endpoint (or activity) for the user 222. The information can include that generated by the progress tracker 150 from the response data 282. In some embodiments, the configuration selector 135 can identify or select a new endpoint based on the state of the user 222 shown in the response data 282 (e.g., mood, emotional, behavioral, or physiological state). For example, if the state of the user 222 indicates a sad state, the configuration selector 135 may select an endpoint with the aim of calming the user 222 while performing an activity to address the user 222's condition. In some embodiments, the configuration selector 135 may identify or select a new endpoint based on personal values identified by the user 222. For example, the configuration selector 135 may select an endpoint aimed at presenting activities related to adventure, self-care, or art, as shown in the response data 282.
[0098] Based on the determination of the new endpoint, the configuration selector 135 may select one or more configuration files 155 from the entire set of configuration files 155 for presentation to the application 165. The selection of the configuration file 155 may be performed in a similar manner as discussed above using the newly selected endpoint or activity. In some embodiments, the configuration selector 135 may select one or more configuration files 155 based on a transition at level 208. Using the selected configuration file 155, the configuration packager 140 may generate at least one new package 228'. The package 228' may be generated in a similar manner as detailed above and may include instructions for configuring the functionality to be executed on the application 165 according to the routine logic 202 as defined by the configuration file 155. At generation time, the configuration packager 140 may present the package 228' having the newly selected configuration file 155 to the application 165. The application 165 may receive and load the package 228'. Using the package 228', the application 165 may repeat the operations as described above.
[0099] By selecting and presenting the configuration file 155 in this way, the application configuration service 105 can configure the functionality of the application 165 customized according to the response indicated by the user 222. The configuration file 155 can present a wide range of experiences to the user 222 and provide a sequence of content via the content item 264 adapted to the state and interaction from the user 222 according to the routine logic 202. Therefore, the configuration file 155 can improve the quality of the human-computer interaction (HCI) between the user 222 and the application 165. In the context of digital therapeutics, the configuration file 155 and the content item 264 identified therein can lead to higher user engagement with the application 165. With increased interaction possibilities, the digital therapeutics presented by the application 165 can have higher effectiveness in addressing the condition, and the likelihood of the user 222's compliance with the digital therapeutics may increase. Also, the configuration file 155 may reduce the consumption of computing resources (e.g., both the user device 110 and the application configuration service 105) that would have been used to present and load content unrelated to the application 165. Furthermore, the configuration file 155 can also further save computing resources by reducing the reliance on updating the application 165 itself to present additional functionality. The configuration file 155 (and the package 228 by extension) can reduce the consumption of network bandwidth due to the round-trip communication related to content requests and searches.
[0100] Referring now to FIG. 3, a flowchart of a method 300 for selecting a configuration file for an application is depicted. The functionality of method 300 may be performed by, or executed using, any of the components detailed herein in connection with FIGS. 1-2E, such as application configuration service 105 and user device 110, or FIG. 17, such as computing system 1700. In general, the server identifies a user profile (305). The server determines the user's endpoint (310). The server identifies a configuration file (315). The server provides a package (320). The server receives response data (325). The server determines an indicator (330). The server may determine whether to update the configuration (335). If it is determined to update, the server may select a new endpoint and repeat the functionality from (310). Otherwise, if the determination is not to update, the server waits for additional response data and repeats the functionality from (325).
[0101] Referring now to FIG. 4, a block diagram of a system architecture is depicted for adaptive goal setting to select a configuration file. This architecture can be implemented using components of system 100 such as application configuration service 105 and application 165 on user device 110. As depicted, the architecture may divide adaptive goal setting (AGS) into three parts. First, the discovery component can select skills (e.g., endpoints) to present to the user. This selection may be based in part on the user's history. Second, the skills may be compiled for the user into corresponding modules A, B, C, ··· N (e.g., in the form of configuration file 155). All logic for the skills may be contained within the modules and may be self - contained such that the operation of the module is new and unique each time the module is executed. Third, the notification component is used to remind and encourage the user to execute the skills compiled in the modules. Thereafter, the discovery component performs a check on the user to determine whether the user has completed the skill module. Based on this determination, the discovery component selects a new skill module and the functionality of the architecture can be repeated again.
[0102] Referring now to FIG. 5A, a flowchart of a method for performing adaptive goal setting when selecting a configuration file is depicted. This method may be executed or implemented using components of system 100 such as application configuration service 105 and user device 110. For example, at least one configuration file 155 may be used to define and execute at least a portion of the illustrated method. As shown, the system may present an introduction to the user. From the introduction, the system may receive a selection of an activity by the user. The system may set a level of the user's activity. The user may confirm the selection of the level and activity via an interaction. The system may monitor the user's interaction to determine whether the user is idle. If idle, the system may check in with the user and prompt the user to perform an activity. When complete, the system may update the user's level, notify the user of the update to the level change, and proceed to perform a re-evaluation of the user. The system may present the user with a help prompt that indicates how to perform the activity. Depending on the result, the system may further perform a re-evaluation. During that time, the system may also retrieve statistical information about the user's activity.
[0103] Referring now to FIG. 5B, a flowchart of a method for executing activities according to a configuration file is depicted. The method may be executed or implemented using components of system 100 such as application configuration service 105 and user device 110. For example, at least one configuration file 155 may be used to define and execute at least a portion of the illustrated method. As shown, the system can determine whether the user will execute the activity now (e.g., within a time frame from the current time) or later (e.g., outside the time frame from the current time). If the activity is to be executed now, the system can determine whether there is a problem with executing the activity now. If there is a problem, the system can identify the cause of the failure or malfunction and display a tool (e.g., a user interface) to address the problem. On the other hand, if it is determined that the activity will be executed at a later time, the system can determine whether to present a reminder or change the activity. If it is determined to remind, the system presents a reminder. If the decision is to change, the system can identify a new activity.
[0104] (B. Network and Computing Environment) The various operations described herein can be implemented on a computer system. FIG. 20 shows a simplified block diagram of a representative server system 2000, a client computer system 2014, and a network 2026 that can be used to implement certain embodiments of the present disclosure. In various embodiments, the server system 2000 or a similar system can implement the services or servers or portions thereof described herein. The client computer system 2014 or a similar system can implement the clients described herein. The system 100 described herein can be similar to the server system 2000. The server system 2000 can have a modular design that incorporates a number of modules 2002 (e.g., blades in a blade server embodiment), and although two modules 2002 are shown, any number can be presented. Each module 2002 can include a processing unit 2004 and local storage 2006.
[0105] The processing unit 2004 can include a single processor or multiple processors having one or more cores. In some embodiments, the processing unit 2004 can include a general-purpose primary processor and one or more special-purpose coprocessors such as a graphics processor, a digital signal processor, etc. In some embodiments, some or all of the processing units 2004 can be implemented using customized circuits such as application-specific integrated circuits (ASICs) or field-programmable gate arrays (FPGAs). In some embodiments, such integrated circuits execute instructions stored in the circuit itself. In other embodiments, the processing unit 2004 can execute instructions stored in the local storage 2006. Any combination of any type of processor can be included in the processing unit 2004.
[0106] Local storage 2006 can include a volatile memory medium (e.g., DRAM, SRAM, SDRAM, etc.) and / or a non-volatile memory medium (e.g., magnetic or optical disk, flash memory, etc.). The memory medium incorporated in local storage 2006 can be fixed, removable or upgradeable as required. Local storage 2006 can be physically or logically divided into various subunits such as system memory, read-only memory (ROM), permanent storage device, etc. The system memory can be a read-write memory device or a volatile read-write memory such as dynamic random access memory. The system memory can store some or all of the instructions and data required by the processing unit 2004 during execution. The ROM can store the static data and instructions required by the processing unit 2004. The permanent storage device can be a non-volatile read-write memory device and can store instructions and data even when the power of module 2002 is off. The term "storage medium" as used herein includes any medium that can store data indefinitely (subject to overwriting, electrical interference, power loss, etc.), and does not include carrier waves propagated by wireless or wired connections and transient electronic signals.
[0107] In some embodiments, local storage 2006 can store one or more software programs to be executed by a processing unit(s) 2004, such as programs implementing various server functions such as the operating system and / or functions of system 100 or other systems described herein, or other server(s) related to system 100 or other systems described herein.
[0108] "Software" generally refers to a sequence of instructions that, when executed by processing unit 2004, causes server system 2000 (or a part thereof) to perform various operations. Thus, it defines an implementation of one or more specific machines that execute and perform the operations of a software program. The instructions can be stored as program code in firmware that resides in read-only memory and / or in non-volatile storage media that can be read into volatile working memory for execution by processing unit 2004. Software can be implemented as a single program or, if necessary, as an assembly of separate programs or program modules that interact with each other. From local storage 2006 (or non-local storage described later), processing unit 2004 can retrieve the program instructions to be executed and the data to be processed in order to perform the various operations described above.
[0109] In some server systems 2000, a plurality of modules 2002 can be interconnected via a bus or other interconnect 2008 to form a local area network that supports communication between module 2002 and other components of server system 2000. Interconnect 2008 can be implemented using various technologies such as server racks, hubs, routers, etc.
[0110] Wide area network (WAN) interface 2010 can provide data communication capabilities between a local area network (e.g., via interconnect 2008) and a network 2026 such as the Internet. Other technologies can be used to communicatively couple server system 2010 and network 2026, including wired (e.g., Ethernet, IEEE 802.3 standard) and / or wireless technologies (e.g., Wi-Fi, IEEE 802.11 standard).
[0111] In some embodiments, local storage 2006 is intended to provide a working memory for processing unit 2004 that presents fast access to the programs and / or data being processed while reducing traffic on interconnect 2008. Storage of larger amounts of data can be presented on a local area network by one or more mass storage subsystems 2012 connectable to interconnect 2008. Mass storage subsystem 2012 can be based on magnetic, optical, semiconductor, or other data storage media. Direct-attached storage, storage area networks, network-attached storage, etc. can be used. Any data store or other collection of data described herein as being produced, consumed, or maintained by a service or server can be stored in mass storage subsystem 2012. In some embodiments, additional data storage resources are accessible via WAN interface 2010 (potentially with increased latency).
[0112] Server system 2000 can operate in response to requests received via WAN interface 2010. For example, one of modules 2002 can implement a supervision function and, in response to a received request, can assign individual tasks to other modules 2002. Work assignment techniques can also be used. When a request is processed, the results can be returned to the requester via WAN interface 2010. Such operations can generally be automated. Further, in some embodiments, WAN interface 2010 can connect multiple server systems 2000 to each other and present a scalable system capable of managing a large amount of activity. Other techniques for managing server systems and server farms (collections of cooperating server systems) can be used, including dynamic resource allocation and reallocation.
[0113] The server system 2000 can interact with various user-owned or user-operated devices via a wide-area network such as the Internet. An example of a user-operated device is shown in FIG. 20 as the client computing system 2014. The client computing system 2014 can be implemented as a consumer device such as a smartphone, other mobile phone, tablet computer, wearable computing device (e.g., smartwatch, glasses), desktop computer, laptop computer, etc.
[0114] For example, the client computing system 2014 can communicate via the WAN interface 2010. The client computing system 2014 can include computer components such as a processing unit 2016, a storage device 2018, a network interface 2020, a user input device 2022, and a user output device 2024. The client computing system 2014 can be a computing device implemented in various form factors such as a desktop computer, laptop computer, tablet computer, smartphone, other mobile computing device, wearable computing device, etc.
[0115] The processor 2016 and the storage device 2018 can be similar to the processing unit 2004 and the local storage 2006 described above. Appropriate devices can be selected based on the requirements placed on the client computing system. For example, the client computing system 2014 can be implemented as a "thin" client with limited processing capabilities or as a high-powered computing device. The client computing system 2014 can be provided with program code executable by the processing unit 2016 to enable various interactions with the server system 2000.
[0116] The network interface 2020 can present a connection to a network 2026, such as a wide area network (e.g., the Internet) to which the WAN interface 2010 of the server system 2000 is also connected. In various embodiments, the network interface 2020 can include a wired interface (e.g., Ethernet) and / or a wireless interface implementing various RF data communication standards such as Wi-Fi, Bluetooth, or cellular data network standards (e.g., 3G, 4G, 5G, 20G, LTE, etc.).
[0117] The user input device 2022 can include any device (or devices) by which a user can present a signal to the client computing system 2014, and the client computing system 2014 can interpret the signal as indicative of a particular user request or information. In various embodiments, the user input device 2022 can include any or all of a keyboard, touchpad, touch screen, mouse or other pointing device, scroll wheel, click wheel, dial, button, switch, keypad, microphone, etc.
[0118] The user output device 2024 can include any device through which the client computing system 2014 can present information to the user. For example, the user output device 2024 can include an inter-display image generated or distributed by the client computing system 2014. The display can incorporate various image generation technologies, such as liquid crystal displays (LCDs), light-emitting diodes (LEDs) including organic light-emitting diodes (OLEDs), projection systems, cathode ray tubes (CRTs), etc., along with electronic devices (such as digital-to-analog converters or analog-to-digital converters, signal processors, etc.) that support them. Some embodiments can include devices such as touchscreens that function as both input and output devices. In some embodiments, in addition to or instead of the display, other user output devices 2024 can be presented. Examples include indicator lights, speakers, tactile “display” devices, printers, etc.
[0119] Some embodiments include electronic components such as a microprocessor, storage, and memory that store computer program instructions on a computer-readable storage medium. Many of the features described herein can be implemented as a process specified as a set of program instructions encoded on a computer-readable storage medium. When these program instructions are executed by one or more processing units, the various processes indicated by the program instructions are caused to be executed by the processing units. Examples of program instructions or computer code include machine code such as produced by a compiler and files containing high-level code that is executed by a computer, an electronic component, or a microprocessor using an interpreter. Through appropriate programming, processing units 2004 and 2016 can present various functionalities for server system 2000 and client computing system 2014, including any of the functionalities described herein as being performed by a server or a client, or other functionalities.
[0120] The server system 2000 and the client computing system 2014 are examples, and it will be understood that they can be modified and changed. The computer systems used in connection with the embodiments of the present disclosure can have other capabilities not specifically described herein. Further, although the server system 2000 and the client computing system 2014 are described with reference to specific blocks, it should be understood that these blocks are defined for the convenience of the description and are not intended to mean a specific physical arrangement of component parts. For example, different blocks can be arranged within the same facility, within the same server rack, or on the same motherboard, but they do not have to be. Further, the blocks do not have to correspond to physically different components. The blocks can be configured to perform various operations, for example, by programming a processor or presenting appropriate control circuitry, and various blocks can be reconfigurable or non-reconfigurable depending on how the initial configuration is obtained. The embodiments of the present disclosure can be realized in various devices including electronic devices implemented using any combination of circuits and software.
[0121] Although the present disclosure has been described with respect to specific embodiments, those skilled in the art will recognize that numerous changes are possible. Embodiments of the present disclosure are not limited to the specific examples described herein, but can be implemented using a variety of computer systems and communication technologies. Embodiments of the present disclosure can be implemented using any combination of dedicated components and / or programmable processors and / or other programmable devices. The various processes described herein can be implemented on the same processor or different processors in any combination. When a component is described as being configured to perform a particular operation, such a configuration can be realized, for example, by designing an electronic circuit to perform the operation, by programming a programmable electronic circuit (such as a microprocessor) to perform the operation, or by any combination thereof. Further, although the above-described embodiments may refer to specific hardware and software components, those skilled in the art will understand that different combinations of hardware and / or software components may also be used, and that specific operations described as being implemented in hardware may also be implemented in software, or vice versa.
[0122] Computer programs incorporating various features of the present disclosure may be encoded and stored on various computer-readable storage media. Suitable media include magnetic disks or tapes, optical storage media such as compact discs (CDs) or digital versatile discs (DVDs), flash memory, and other non-transitory media. A computer-readable medium encoded with program code may be packaged together with a compatible electronic device, or the program code may be presented separately from the electronic device (e.g., via an Internet download or as a separately packaged computer-readable storage medium).
[0123] Accordingly, while the present disclosure has been described with reference to particular embodiments, it will be understood that the present disclosure is intended to cover all modifications and equivalents within the scope of the following claims.
Claims
1. A method for selecting a configuration file for an application, The steps include: maintaining a plurality of configuration files that the computing system can read from the application, each of which specifies a separate set of content items to prompt the user to perform at least one of a plurality of activities through the application toward achieving a separate endpoint at each of a plurality of endpoints; The computing system determines a certain endpoint among the plurality of endpoints to address the user's condition, The computing system includes the steps of selecting a configuration file from the plurality of configuration files that identifies a set of content items for a particular activity in the plurality of activities performed by the user through the application toward achieving the endpoint, and The computing system provides the application with the configuration file in order to present the set of content items that prompt the user to perform the activity through the application. A method that includes [a certain feature].
2. The method according to claim 1, further, The computing system receives response data from the application that identifies one or more interactions by the user with the set of content items presented through the application toward achieving the endpoint. The computing system provides a second endpoint for the plurality of endpoints based on the response data to the endpoint, and The computing system includes the step of selecting a second configuration file based on the second endpoint from among the plurality of configuration files to provide to the application, A method that includes [a certain feature].
3. The method according to claim 2, further, The computing system includes the steps of identifying a first level from a user profile, which is one of several levels for achieving the endpoint, The computing system determines a transition from the first level to the second level based on response data that identifies one or more interactions by the user with the set of content items presented through the application, and The computing system performs the steps of selecting a second configuration file from the plurality of configuration files based on the transition to the second level, A method that includes [a certain feature].
4. A method according to claim 3, wherein the step of determining the transition further includes determining whether to transition to the first level or the second level of the plurality of levels toward achieving the second endpoint, based on the user's performance of the activities toward achieving the endpoint.
5. The method of claim 4, wherein each of the plurality of configuration files identifies a separate criterion that defines a first measure of the user in order to select a corresponding configuration file that identifies a set of content items to prompt users to perform the activity, the method further, The steps include determining a second scale based on a user profile using the computing system, wherein the second scale identifies at least one of (i) the likelihood that the user will perform the activity, or (ii) the expected effectiveness of the activity for the user in achieving the endpoint, and The computing system provides a step of identifying the activity from the plurality of activities based on a comparison of the first scale and the second scale, A method that includes [a certain feature].
6. The method according to claim 1, further, The computing system includes the steps of receiving a response from the application that identifies the user's mood in response to a prompt being presented through the application at a defined time, and The computing system includes the steps of identifying the activity from the plurality of activities based on the user's mood as indicated in the response, A method that includes [a certain feature].
7. The method according to claim 1, further, The computing system includes the steps of receiving a response from the application that identifies multiple personal values of the user, and The computing system includes the step of identifying the activity from the plurality of activities based on the plurality of personal values associated with the user identified in the response, A method that includes [a certain feature].
8. The method according to claim 7, further, The computing system provides a step of determining progress indicators based on the execution of the activities toward achieving the endpoint, and The computing system provides, through the application, a relationship between the progress indicator and the personal values associated with the user; A method that includes [a certain feature].
9. The method according to claim 1, further, The computing system provides, via the application, a first score related to the activity, prompting the user to perform the activity via the application, and The computing system includes the steps of storing a response that identifies the first score related to the activity from the application, A method that includes [a certain feature].
10. The method according to claim 9, further, The computing system provides the user, via the application, a prompt to show a second score related to the activity after the activity has been performed via the application, and The computing system provides, via the application, a comparison of the second score with respect to the first score, A method that includes [a certain feature].
11. A method according to claim 1, the step of determining the endpoint further includes the step of determining the endpoint from the plurality of endpoints based on at least one of (i) a baseline assessment and (ii) instructions from the user requesting activities toward achieving the endpoint.
12. The method according to claim 1, wherein at least one of the plurality of configuration files defines a finite state machine, and the finite state machine is A plurality of states, each including at least a first and a second state, where each state corresponds to an intensity level of the corresponding activity and specifies an output, the output of which identifies one or more of the content items to be presented through the user interface of the application, and Multiple transitions, each transition specifying an event detected through the user interface of the application to transition from the first state to the second state, the event corresponding to an interaction performed through the application for each of the activities, A method for identifying something.
13. A method according to claim 1, wherein the plurality of endpoints are associated with at least one of a plurality of classifications for endpoints.
14. A method according to claim 1, wherein a first subset of the plurality of endpoints is associated with a first classification, and a second subset of the plurality of endpoints is associated with a second classification.
15. A method according to claim 1, wherein the user receives medication to address the condition at least partially concurrently with performing the activity via the application.
16. A method according to any one of claims 1 to 15, wherein the condition includes a mental disorder.
17. A system for selecting configuration files for an application, A computing system comprising one or more processors coupled with memory, wherein the computing system The step of maintaining multiple configuration files that the application can read, each of which identifies a separate set of content items for prompting the user to perform at least one of a set of activities through the application toward achieving a separate endpoint at each of the multiple endpoints, A step of determining a certain endpoint among the multiple endpoints in order to address the user's condition, The steps include selecting a configuration file from the plurality of configuration files that identifies a set of content items for a particular activity in the plurality of activities performed by the user through the application toward achieving the endpoint, and A step of providing the application with the configuration file in order to present the set of content items that prompt the user to perform the activity through the application, A system configured to perform the following actions.
18. The system according to claim 17, wherein the computing system further comprises: The steps include receiving response data from the application that identifies one or more interactions by the user with the set of content items presented through the application toward achieving the endpoint, A step of determining a second endpoint from among the plurality of endpoints based on the response data of the endpoint, and A step of selecting a second configuration file based on the second endpoint from the plurality of configuration files to provide to the application, A system configured to perform the following actions.
19. The system according to claim 18, wherein the computing system further comprises: A step of identifying the first level among multiple levels toward achieving the endpoint from the user profile, A step of determining a transition from the first level to the second level based on response data that identifies one or more interactions by the user with the set of content items presented through the application, and Based on the transition to the second level, the step of selecting a second configuration file from the plurality of configuration files, A system configured to perform the following actions.
20. A system according to claim 19, wherein the computing system is further configured to perform the step of determining whether to move to the first level or the second level of the plurality of levels toward achieving the second endpoint, based on the user's performance of the activities toward achieving the endpoint.
21. The system according to claim 20, wherein each of the plurality of configuration files identifies a distinct criterion that defines a first measure of the user in order to select a corresponding configuration file that identifies a set of content items to prompt users to perform the activity, the computing system further, A step of determining a second scale based on the user profile, wherein the second scale identifies at least one of (i) the likelihood that the user will perform the activity, or (ii) the expected effectiveness of the activity for the user in achieving the endpoint, and A step of identifying the activity from the aforementioned multiple activities based on a comparison of the first scale and the second scale, A system configured to perform the following actions.
22. The system according to claim 17, wherein the computing system further comprises: The steps include: receiving a response from the application that identifies the user's mood in response to a prompt being presented through the application at a defined time; and From the aforementioned multiple activities, a step of identifying the activity based on the user's mood as indicated in the response, A system configured to perform the following actions.
23. The system according to claim 17, wherein the computing system further comprises: The steps include receiving a response from the application that identifies the user's multiple personal values, and A step of identifying the activity from the multiple activities based on the multiple personal values related to the user identified in the response, A system configured to perform the following actions.
24. The system according to claim 23, wherein the computing system further comprises: A step of determining progress indicators based on the execution of the activities toward achieving the aforementioned endpoint, and A step of presenting the relationship between the progress indicator and the personal values associated with the user through the aforementioned application, A system configured to perform the following actions.
25. The system according to claim 17, wherein the computing system further comprises: The steps include: before the activity is performed via the application, prompting the user via the application to show a first score related to the activity; and A step of storing a response from the application that identifies the first score related to the activity, A system configured to perform the following actions.
26. The system according to claim 25, wherein the computing system further comprises: The steps include: prompting the user via the application to show a second score related to the activity after the activity has been performed via the application; A step of presenting a comparison of the second score with the first score via the aforementioned application, A system configured to perform the following actions.
27. A system according to claim 17, wherein the computing system is further configured to perform the step of determining an endpoint from a plurality of endpoints based on at least one of (i) a baseline assessment and (ii) instructions from the user requesting activities toward achieving the endpoint.
28. The system according to claim 17, wherein at least one of the plurality of configuration files defines a finite state machine, in the system, the finite state machine is A plurality of states, each including at least a first and a second state, where each state corresponds to an intensity level of the corresponding activity and specifies an output, the output identifying one or more content items to be presented through the user interface of the application, and Multiple transitions, each transition specifying an event detected through the user interface of the application to transition from the first state to the second state, the event corresponding to an interaction performed through the application for each of the activities, A system for identifying something.
29. The system according to claim 17, wherein the plurality of endpoints are associated with at least one of a plurality of classifications for endpoints.
30. The system according to claim 17, wherein a first subset of the plurality of endpoints is associated with a first domain, and a second subset of the plurality of endpoints is associated with a second domain.
31. The system according to claim 17, wherein the user receives medication to address the condition at least partially simultaneously with performing the activity via the application.
32. A system according to any one of claims 17 to 31, wherein the condition includes a mental illness.