This article will provide you with basic knowledge for approaching app building in GxP environments.
This article assumes prior knowledge of basic Tulip concepts such as Variables, Tables, and Completion records.
Language
The style and language of Apps should fit with their intended use. Standard operating procedures, work instructions and methods should be written in an imperative mandatory style.
Versioning
When publishing an App, it is recommended to describe the nature of the changes, e.g. UI refresh, error corrections or else, against the previously published App in the comment section.
Standard Information to be Displayed on Each Step
The following elements should be shown on each step in order to provide to the user the appropriate context:
The name or unique ID of the main item that the App is used to process. "Item" e.g. batch, order, equipment, or tool that is being used or processed. In some cases there could be multiple items. In most cases, this should be accomplished by creating or loading a table record containing the information at the beginning of the app.
The Logged-In User
The version of the App
The App Step name
It is also recommended to have a Log-Off button on all steps triggering an “Log-off current user” action.
Timestamps and Date Format
Timestamps in the completion record are captured in UTC with an offset for time zone. Date and time formatting can be set at the Instance level for all Apps. This is done in the "Date and Time" section of the instance's "Settings" menu and needs to be configured by an Account Owner.
Capturing Electronic Signature with the E-Signature Widget
In order to comply with ER/ES (Electronic Records / Electronic Signatures) regulations, a Signature should give context to the signers:
“What” Context of the signature, e.g. batch, order, equipment, etc.
“Why” The reason of the signature, e.g. release of process order
The following structure is recommended for signatures:
Group steps that require an e-signature and include the e-signature widget on the last step in the group
Create a summary step, if applicable, before the widget showing all relevant data to provide the signer the context of the signature (“What”)
Use the form title, e.g. “Signature for label reprint”, and username label, e.g. “Supervisor”, to define the reason for the signature (“Why”).
When the signature is submitted, Tulip automatically logs additional information:
“Who” signed the form
“When” the signature is submitted
Any added comments
It is mandatory to commit the current App data to an immutable completion record. This can be achieved in two ways:
By using the “Save All App Data” action in a “Custom Action” trigger on the submit button of the signature widget.
By completing the App, either using the standard “Complete App” setting for the submit button or using a “Complete App” action in a “Custom Action” trigger.
Save All App Data Action
The “Save All App Data” action stores the current values of all App Variables as well as the current field values of all loaded table records into a Completion record of the App. Completion records are immutable and cannot be deleted.
App Completion
An App Completion stores the data in the same way the “Save All App Data” Action does. In addition, an App Completion resets all Variables to their default value, but the ones which do have the option “clear on completion” deactivated. Additionally, all Table Record Placeholder are cleared. After an App completion, it is possible to restart the same App from the beginning or proceed to a specific step within the same App or another App. This can be configured in the “transition” used to do the completion.
App Cancellation
An App Cancel is identical to an App Completion however all Variables will be reset to their default value.
Automatic App Initialization
For an App which needs to be completed multiple times during execution, i.e. due to multiple signatures, it is recommended to store its context before each completion, hence the App can be configured to automatically restore its context after it restarts. The context can be the ID of table records, e.g. current batch, and/or Variables, e.g. a counter. It is recommended to store the App context in a table using the “App Info: Station Name” as the record ID. This Record can be loaded on App (re)start using an “App Started” trigger. The same approach can be used to achieve a seamless Transition to another App.
Similar principles can be applied to resume App execution after an App cancellation, i.e. due to an auto-logout or selecting “Restart” in the Player menu. For these use cases, it is recommended to store a step name as additional context information for the App to open after restarting. This can either be the name of the last step shown, or a specific step that should be opened for recovery.
Exceptions and enabling review by exception
The use of one Tulip Table to collate all exceptions occurring during app execution is recommended. Every exception (defect, observation, etc.) should be stored as a single record in that Tulip Table including all relevant information on the exception, i.e. type, description, date/time, app, operator, etc. In addition this record should be linked using the “Linked Records” feature to the records of all artifacts related to the exception, i.e. batch, order, material, equipment, room, etc.
Records, Record Correction, Record History
It is recommended to store GxP relevant data as Record into Tulip Tables with reference to its relevant artifacts, i.e. batch, order, material, equipment, room, etc.
It is recommended to correct GxP relevant data within the original record, as any changes will be reflected in the record history. The correction should be submitted by a signature form.
To facilitate record retrieval, it is recommended to assign an unambiguous and systematic ID for all entries, i.e. “-”.
Record History
As described above, the values of Variables are stored into a Completion record at the time of completing or cancelling the App. In contrast, manipulation of data in a Table happens in real time. Any change to any field of a table record will automatically be logged with contextual information (user, app, app version, station, timestamp) by Tulip.
Every Tulip Table record has a record history. This record history will show all the logged changes including the contextual information (user, app, app version, station, timestamp).
Furthermore, the record history will show the data of any App completion or cancellation in which the record is included, i.e. was loaded upon completion/cancellation. This includes any e-signatures logged in those completions/cancellations. Signatures will be shown in the record history timeline according to the timestamp when they were performed. All other completion data will be shown with the timestamp of the completion/cancellation.
Variables are a location to store app information. Variables have a specific type that must match the contents they can store.
Variables are only accessible within a single application and are cleared when the app is restarted or completed.
Tulip Tables
Tulip Tables are a global location to store your production data. Tables are made up of Records (rows). A single can be accessed from multiple apps or stations at the same time.
App Completion
App Completions are a mechanism to store immutable data from a Tulip app. When an app is completed, all Variable's current values will be stored in the app completions tab.This completion data can be analyzed in Analytics.
By default, after a Completion users will be brought back to the Begin Screen of your application. This behavior can be adjusted with other Transition types.
Step
A view your users will see within an application. Steps can be viewed chronologically or in whatever order best fits your process.
Steps can be grouped into Step Groups to manage and organize your app Steps.
Step
A view your users will see within an application. Steps can be viewed chronologically or in whatever order best fits your process.
Steps can be grouped into Step Groups to manage and organize your app Steps.
Tulip Instance
A Tulip customer account. Your instance can be found at https://[your-instance].tulip.co
When your instance is referenced, we are just talking about your Tulip account on an organization-level, not user-level.
Electronic Signatures
In regulated environments (GxP) getting a user signature to the accuracy of data is critical for process validation. The E-Sig Widget allows users to collect user signatures along with associated metadata.
Widget
Widgets are the elements that make up a specific App Step. Widgets can display information to users, collect user input, or trigger app logic.
Common widgets include: Interactive Tables, Number inputs, Machine attribute widgets, and more.
Signatures
In regulated environments (GxP) getting a user signature to the accuracy of data is critical for process validation. The E-Sig Widget allows users to collect user signatures along with associated metadata.
Action
Actions are different operations that can be executed in Triggers. Actions cannot move users to other apps, or other steps.
Many Actions can be added to a single Trigger.
ex. Store the value of variable x to table field y, Print app step, Adjust Edge device GPIO pin.
Variables
Variables are a location to store app information. Variables have a specific type that must match the contents they can store.
Variables are only accessible within a single application and are cleared when the app is restarted or completed.
App Completion
App Completions are a mechanism to store immutable data from a Tulip app. When an app is completed, all Variable's current values will be stored in the app completions tab.This completion data can be analyzed in Analytics.
By default, after a Completion users will be brought back to the Begin Screen of your application. This behavior can be adjusted with other Transition types.
App Completion
App Completions are a mechanism to store immutable data from a Tulip app. When an app is completed, all Variable's current values will be stored in the app completions tab.This completion data can be analyzed in Analytics.
By default, after a Completion users will be brought back to the Begin Screen of your application. This behavior can be adjusted with other Transition types.
Action
Actions are different operations that can be executed in Triggers. Actions cannot move users to other apps, or other steps.
Many Actions can be added to a single Trigger.
ex. Store the value of variable x to table field y, Print app step, Adjust Edge device GPIO pin.
App Completion
App Completions are a mechanism to store immutable data from a Tulip app. When an app is completed, all Variable's current values will be stored in the app completions tab.This completion data can be analyzed in Analytics.
By default, after a Completion users will be brought back to the Begin Screen of your application. This behavior can be adjusted with other Transition types.
Variables
Variables are a location to store app information. Variables have a specific type that must match the contents they can store.
Variables are only accessible within a single application and are cleared when the app is restarted or completed.
Table Record Placeholder
A Table Record Placeholder is a reference to a row in a Tulip Table. Table Records can be created either from the Table UI or from an App Trigger.
App Cancel
App Cancels are a restart of an application without storing its data in a Table.
By default, after a cancellation users will be brought back to the Begin Screen of your application. This behavior can be adjusted with other Transition types.
App Completion
App Completions are a mechanism to store immutable data from a Tulip app. When an app is completed, all Variable's current values will be stored in the app completions tab.This completion data can be analyzed in Analytics.
By default, after a Completion users will be brought back to the Begin Screen of your application. This behavior can be adjusted with other Transition types.
Variables
Variables are a location to store app information. Variables have a specific type that must match the contents they can store.
Variables are only accessible within a single application and are cleared when the app is restarted or completed.
Variables
Variables are a location to store app information. Variables have a specific type that must match the contents they can store.
Variables are only accessible within a single application and are cleared when the app is restarted or completed.
Station
Stations are a digital representation of a physical place or device in your facility. Stations are 1:1 with Interfaces (display devices) running Tulip Player, but Stations can also be assigned Edge Devices, Tulip Vision Camera Configurations, Machines,and more.
Table Record
A Table Record is a reference to a row in a Tulip Table. Table Records can be created either from the Table UI or from with an App Trigger.
To edit a record it must be loaded into a Table Record Placeholder.
Transitions
Transitionsare different operations that can be executed in Triggers. Actions can only move users to other apps, or other steps.
Only 1 Transitioncan be added to a single Trigger.
ex. Complete this app, then go to app x. Move to the next step, etc.
Tulip Player
Tulip Player is the Windows/Mac executable program where users can run Tulip apps. Tulip player allows you to create a more seamless user experience by removing the need for a web browser, and allows increased IT controls.
Tulip Tables
Tulip Tables are a global location to store your production data. Tables are made up of Records (rows). A single can be accessed from multiple apps or stations at the same time.
Linked Records
Linked Records are interconnections between multiple Tulip Tables. Fields in one Table can be mapped to another table.
Linked records simplify traceability, genealogy, and data association for more advanced Tulip apps and app suites.
Table Record
A Table Record is a reference to a row in a Tulip Table. Table Records can be created either from the Table UI or from with an App Trigger.
To edit a record it must be loaded into a Table Record Placeholder.
Tulip Tables
Tulip Tables are a global location to store your production data. Tables are made up of Records (rows). A single can be accessed from multiple apps or stations at the same time.
Variables
Variables are a location to store app information. Variables have a specific type that must match the contents they can store.
Variables are only accessible within a single application and are cleared when the app is restarted or completed.
App Completion
App Completions are a mechanism to store immutable data from a Tulip app. When an app is completed, all Variable's current values will be stored in the app completions tab.This completion data can be analyzed in Analytics.
By default, after a Completion users will be brought back to the Begin Screen of your application. This behavior can be adjusted with other Transition types.
Tulip Tables
Tulip Tables are a global location to store your production data. Tables are made up of Records (rows). A single can be accessed from multiple apps or stations at the same time.
Was this article helpful?
Thank you for your feedback! Our team will get back to you