This disclosure relates to a logic flow generator system and method.
Various software tools are available to enable users to select functional blocks from a development library to build an underlying application. Such tools require a skilled software professional to implement new features of the given application. A programming tool or software development tool is a program or application that software developers use to create, debug, maintain, or otherwise support other programs and applications. This can include taking relatively simple programs such as library functions that can be combined together to accomplish a larger more complex task, much as one might use multiple tools to create a physical object. For many years, computer-assisted software engineering (CASE) tools were the preferred platform for development. In one sense, CASE tools emphasized design and architecture support and required sophisticated developers to utilize the tools. In the majority of modern development platforms, the most successful of these tools are referred to as Integrated Development Environments also known as IDE's. A common example of an IDE is the Visual development platform (e.g., Visual Basic, Visual C++) that is common in the desktop programming environment. In general, the IDE's combine the features of many tools into one package. For example, these tools make it easier to perform specific tasks, such as searching for content only in files in a particular project. The IDE's may for example be used for development of enterprise-level applications that can support various business operations.
Although IDE's enable skilled professionals to quickly develop new applications, they suffer from not being more broadly used by people who are not trained in software development. For example, if a business person needed a new application to serve a business need, they would have to propose their idea to a software developer to generate a new application. Moreover, the new application would have to be integrated with the existing system which often requires recompiling of the new application and/or the underlying system along with associated retesting to fully support the new application.
This disclosure relates to a logic flow generator system and method. In one aspect, a system includes an interface to connect and define one or more steps of a workflow. Each step has at least one action to perform a task for an enterprise. The one or more steps of the workflow and the at least one action to perform the task are defined as an abstraction layer to select preprogrammed instruction code blocks to implement the action. A logic flow generator processes the workflow from the interface to generate a configuration file that defines executable actions representing the workflow from the selected instruction code blocks specified by the abstraction layer.
In another aspect, a method includes selecting one or more steps from a library in response to a user input. This includes selecting one or more actions for each step in response to another user input. The one or more steps and the one or more actions are defined as an abstraction layer to select executable instruction code blocks to implement the action. The method includes connecting each step to form a workflow for an enterprise in response to a user input. Each connection specifies a source action and a destination action to traverse in the workflow. The method includes generating a configuration file representing the workflow. The configuration file defines an abstraction layer for the arrangement of actions.
In yet another aspect, a system includes a configuration file that defines a sequence of discrete executable actions and associated connections between each pair of sequential actions to represent an ordered workflow. The workflow includes one or more steps. Each step includes at least one action to perform a task for an enterprise. The one or more steps of the workflow and the at least one action to perform the task are defined in an abstraction layer to select preprogrammed instruction code blocks to implement each action. An execution engine interprets the workflow provided by the configuration file to perform the task for the enterprise by invoking each of the selected code blocks identified in the abstraction layer and in an ordered sequence represented by the workflow.
This disclosure relates to a logic flow generator system and method. For example, a system and method can provide a browser-based tool for new code modules that can be developed in a business environment without modifying the underlying execution environment. Thus, the systems and methods disclosed herein can be used for application development by various members of an enterprise such as a business. A logic flow generator can access a library that includes pre-configured actions to enable enterprise tasks to be efficiently specified and developed from a graphical user interface (e.g., a browser-based interface), which can be utilized by various members across the enterprise. The pre-configured actions can be assigned to logic flow steps of the interface that represent portions of an enterprise workflow which can be interconnected by browser graphical connections, such as an arrow (e.g., a directed arc) corresponding to logical connectivity from one action to a next action. For instance, a given connector can define which target step to follow next and/or include logic (e.g., a conditional expression) to implement as part of a decision-branch connection to invoke one or more subsequent target steps of the workflow. A configuration file thus can be generated to define a given workflow, including each of the pre-configured actions as well as logical connectivity between such actions. By connecting the steps on the browser-based interface to define a given workflow, users can configure enterprise workflows to perform various enterprise tasks in an abstract manner without having to understand the underlying code to perform the actions selected in the steps and without having to compile an application for execution of the workflow.
A workflow can be considered a combination of steps and/or other pre-configured logic flows that are interconnected to perform an overall task. In some examples the task can include an application specific task for an enterprise. The logic flow generator 110 receives input from a library 120 (or libraries) that includes pre-configured executable actions 124 to enable enterprise tasks to be efficiently specified and developed from a browser-based interface 130 (also referred to as interface 130). In some examples, the interface 130 can be utilized by various users across the enterprise to create and/or edit one or more logic flows.
The interface 130 can access the library 120 as part of an internal network connection and/or via a public network connection. The pre-configured actions 124 can be assigned to logic flow steps via the interface 130 that represent portions of an enterprise workflow. Each step can be interconnected by interface graphical connections such as an arrow representing which step to follow next. In one example, an action can be selected from the interface 130 and dragged onto a work screen of the interface where a step is automatically generated on the screen with the selected action configured therein. In another example, a non-configured step can be dragged onto the work screen of the interface 130 where an action can subsequently (e.g., dragged onto step from action library) be added to the non-configured step.
In another example decision-branch connections that can connect to one or more other steps of the workflow based on the results of conditional expressions. The conditional expressions can be based on actions performed in one or more preceding steps for example and/or be based on other data that may be available to the device (e.g., computer) executing the logic flow. By connecting the steps on interface 130 to define a given workflow, users can configure enterprise workflows to perform various enterprise tasks in an abstract manner without having to understand the underlying code to perform the actions selected in the steps and without having to compile an application source code for execution of the workflow.
The logic flow generator 110 receives commands from the interface 130 regarding which actions 124 to employ from the library 120 as part of given step. For example, the user can define a step 134 from the library 120 (e.g., graphical output block representing step appearing on interface) having one or more actions 124. Parameters can be defined for configuring the respective actions selected for each respective step 134. Similarly, the user can define other steps and connect the steps with arrows linking a source step with the next step in the workflow to follow. The connector can also be programmed to define a conditional expression which can indicate logic to be implemented on available data before traversing to the next step for executing the corresponding action defined by such next step. As disclosed herein, a condition defined for a connector can include a conditional expression (e.g., Boolean logic, comparisons or the like) that depends on feedback received and/or data collected during execution of the workflow.
After the steps and connections between the steps are selected via the interface 130, the logic flow generator 110 generates a configuration file 140 that includes an arrangement of one or more steps shown as steps 1-N, with N being a positive integer. The configuration file 140 also includes a listing of connections that defines how each of the steps is connected to one or more next step as well as logic (if any) to implement to traverse each such connection. After the configuration file 140 is generated by the logic flow generator 110, an execution engine (See
As shown in this example, the library 120 can include other logic flows 150 that represent previously defined configurations of steps, which include actions and connections between steps, such as can be stored in memory, such as in response to a user input and/or provided as set of predefined logic flows. Thus, new workflows can be developed by implementing a step as including one or more previously defined logic flows 150, which can be connected another step of the new workflow. The library 120 can also include other code modules that can represent custom code developed for the library and selected for use in the workflow. The code modules can be written in substantially any programming language. A code module may be executed directly in the configuration file 140 and/or executed as part of a call (e.g., via label or tag) to the code module as defined in the configuration file as an action of a corresponding step. Additionally, the library 120 can include other libraries that represent other actions 124, steps 134, and logic flows 150 for differing functions and tasks across the organization. For example, other libraries could be a form processing library, a scheduling library, an order library, a medical procedure library, a lab processing library, a business development library, and so forth.
The configuration file 220 can be defined according to a programming language or schema, such as can be a collection of well-defined language commands, for example, that are interpreted by the execution engine 220. The execution engine 220 traverses the configuration file to implement the specified actions at each step according to the specified parameters in the configuration file 220. The execution engine 220 can further access computer-executable code, corresponding to the specified actions, as the executable logic flow 230 is executed. The execution engine can also access system data associated with the enterprise in which the logic flow is being executed. The data can be used to compute logical expression in connectors as well as to provide input parameters/data and receive output parameters/data for other actions defined for each action in the configuration file. The execution engine 220 can be a JAVA virtual machine or SQL command line interpreter, and/or can be constructed as custom-code (e.g., complied application engine) that outputs the executable logic flow 230 based on received commands from the configuration file 230.
For example, for the step defining “get approach” at 506, the configuration file is generated as:
After the steps, actions, and parameters are generated in the configuration file 400, connections between each step at 420 can then be generated and stored as part of the configuration file. An interface 600 is provided as an alternative example in
In view of the foregoing structural and functional features described above, an example method will be better appreciated with reference to
In this example, the data elements 850 can be composed of questions whereas the groups can define sets of questions. The logic flow generator 810 can then define workflows to route and process question groups based on the context encountered during execution of a workflow. Actions in one or more steps of such workflow can also interact with a database or other resources to acquire information that can be automatically utilized to populate one or more data fields, such as for patient information, vitals, demographic information, that may have been entered previously.
The system 800 for generating an enterprise questionnaire thus provides a versatile content management system, data integration mechanism, and business logic processor on multiple levels of the enterprise while mitigating the need for advanced software knowledge by any individual of the enterprise. For example, a logic flow can be created to obtain a set of global information required by the enterprise and different groups within the enterprise can employ another logic flow to obtain information specific to each group and individual users can further employ further logic flows to obtain information specific each such individual's role in the enterprise. One or more of these different levels of enterprises can be implemented as different steps of a composite logic flow configured to obtain the requisite intake information through each level of the enterprise according to the user's context. The logic flow further can be configured to remove duplicate questions from among the steps and still provide complete data sets for each level. These components can provide a questionnaire to the patient or provider and assist in patient data collection and provider-based documentation, for example.
As a further example, the questions can be stored in the library 830 as a store of individual discrete questions built and referenced in multiple Question Groups, for example. Each question is unique across the system, and can be used in any number of enterprise groups. This allows for easy manageability across groups and within the system. The Question Group is a store containing groupings of questions. Within a Question Group, any number of questions can be inserted together with branching logic defined for the specific group. Each group of questions can be short or as long as necessary for a given enterprise purpose. The logic flow generator 810 and interface 820 enables business rules to be developed that allows the presentation of Question Groups based on defined business rules in a workflow paradigm. The rules can be simple or complex (e.g., nested decisions and logic). Further, the logic flow generator 810 can select other logic flows, allowing for a highly reusable architecture across the enterprise. Thus, the selected steps in a logic flow provide the ability to perform actions including the execution of Web services, production of messages, processing of messages, emails and implementation of custom blocks of C# code or other programming languages, for example, if customization is needed.
As opposed to a classical questionnaire approach based on single monolithic surveys, questions and question groups can be de-linked via the workflow. Flexible linkages are created based on the defined logic flows within an overall workflow. This transformation allows for an effective management solution, enables complex decision making around Question Groups, and provides the effective clinical reporting that is necessary for any enterprise. As new regulatory requirements are imposed and new tools become available, this approach eliminates the need to write new logic as it resides outside the EMR, allowing a more flexible response to change. Instead, different actions, each corresponding to a given question or question group (e.g., a logic flow itself), can be swapped with other actions (different questions) to update a given questionnaire that defined by given configuration file. As a result, modifications and expenses are minimized. In addition, the creation of substantially any type of question grouping is possible by editing the logic flow to provide an updated configuration file.
In the event a system is organized as a set of components tied to an organizational structure, the effectiveness and differentiation of forms processing becomes more prevalent. Therefore, the workflows described herein allow the organization of patient intake based on Question Groups as well as the organizational structure combined with workflow and clinical intelligence, for example. Thus, questions and Question Groups can provide the backbone and content of intake and form processing. The creation of questions and Question Groups is the first step in the system and can be done through the user interface 820. Questions can be organized within libraries for ease of management. For example, one could create a wellness library and an orthopedic library, for example. Libraries can be used to make question management simpler and more effective. Question Groups are created to group questions together logically, such as to provide Question groups for each logic grouping within the enterprise. For example, a clinic could designate a standard set of questions that it would like in every questionnaire including demographic information and other cross-institute items. In addition, Question Groups can contain metadata that allows for the creation of header and footer information, for example.
The hierarchy of information can executed using logic flow configuration files which wrap business rules around Question Groups, for example. One of the largest issue enterprises face today is the replication of information and data that should be standardized across the enterprise. In turn, reporting on the data not only becomes an immense challenge but it becomes extremely costly. This problem is solved by separating the questionnaire from a single monolithic object into a simple questions group-based paradigm, placed together with business rules defined by the steps, actions, and connections of a workflow constructed by a logic flow generator as disclosed herein.
As noted previously, the term action refers to a task that can be performed by a given enterprise or business yet is defined as an abstraction in the abstraction layer 1124 which selects the underlying instructions or computer languages that implement the action from the instruction code blocks of the library 1130. Examples of actions can include executing one or more block of compiled code or custom code for: gathering data from a resource, generating and populating a questionnaire, performing a database action, scoring answers to questions, generating an e-mail, ordering supplies, executing custom code module, generating a lab request, scheduling an appointment, and so forth. A configuration file 1140 defines executable actions representing the workflow file from the selected instruction code blocks of the abstraction layer 1124. An execution engine 1150 interprets each of the actions and connections between pairs of actions, as defined in the configuration file, to perform the task for the enterprise from the selected code blocks of the abstraction layer. As shown, the execution engine also has access to the library 1120 to retrieve instruction code blocks for execution as specified by the configuration file 1140. In some examples, the configuration file 1140 itself can include executable code blocks. In other examples, the configuration file 1140 can include an identifier or link that is interpreted by the execution engine 1150 to retrieve an instruction code block for execution from the library 1120 to perform an enterprise task.
As will be appreciated by those skilled in the art, portions of the invention may be embodied as a method, data processing system, or computer program product. Accordingly, these portions of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware. Furthermore, portions of the invention may be a computer program product on a computer-usable storage medium having computer readable program code on the medium. Any suitable computer-readable medium may be utilized including, but not limited to, static and dynamic storage devices, hard disks, optical storage devices, and magnetic storage devices.
Certain embodiments of the invention are described herein with reference to flowchart illustrations of methods, systems, and computer program products. It will be understood that blocks of the illustrations, and combinations of blocks in the illustrations, can be implemented by computer-executable instructions. These computer-executable instructions may be provided to one or more processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus (or a combination of devices and circuits) to produce a machine, such that the instructions, which execute via the processor, implement the functions specified in the block or blocks.
These computer-executable instructions may also be stored in computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory result in an article of manufacture including instructions which implement the function specified in the flowchart block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart block or blocks.
What have been described above are examples. It is, of course, not possible to describe every conceivable combination of components or methodologies, but one of ordinary skill in the art will recognize that many further combinations and permutations are possible. Accordingly, the disclosure is intended to embrace all such alterations, modifications, and variations that fall within the scope of this application, including the appended claims. As used herein, the term “includes” means includes but not limited to, the term “including” means including but not limited to. The term “based on” means based at least in part on. Additionally, where the disclosure or claims recite “a,” “an,” “a first,” or “another” element, or the equivalent thereof, it should be interpreted to include one or more than one such element, neither requiring nor excluding two or more such elements.
This application claims the benefit of U.S. Provisional Patent Application 61/917,123 filed on Dec. 17, 2013, and entitled LOGIC FLOW GENERATOR SYSTEM AND METHOD, the entirety of which is incorporated by reference herein.
Number | Date | Country | |
---|---|---|---|
61917123 | Dec 2013 | US |