Лучшие практики создания приложений GxP
  • 31 Jan 2024
  • 5 Минуты для чтения
  • Авторы

Лучшие практики создания приложений GxP


Article Summary

Среды GxP имеют уникальные требования, которые могут быть учтены при создании и настройке приложений Tulip App. Tulip имеет стандартизированный набор лучших практик для обеспечения соответствия, которые описаны здесь.

В этой статье вы найдете:

  • Список лучших практик и рекомендаций по созданию приложений в среде GxP
  • Информацию о том, как реализовать лучшие практики в приложениях Tulip Apps для обеспечения соответствия GXP, включая прослеживаемость аудиторского следа и целостность данных.

:::(Info) (ПРИМЕЧАНИЕ)Эта статья предполагает предварительное знание основных концепций Tulip, таких как переменные, таблицы и записи завершения.Принеобходимости обратитесь к соответствующим статьям.:::

Лучшие практики, рассмотренные в этой статье:

  1. Генеалогия захвата и EDHR/eBR:

1.1 Использование данных о завершении для создания неизменяемой записи истории

1.2 Используйте данные о завершении для создания полной прослеживаемости при изменении таблиц

1.3 Используйте данные о завершении, чтобы показать полную прослеживаемость изменений исторических записей.
2. Лучшие практики управления параметрами процесса (например, единица измерения, десятичная точность и соглашение об именовании переменных)
3. Минимальная практика отображения стандартной информации на каждом этапе
4. Захват электронных подписей с помощью виджетов подписи
5. Управление исключениями и возможность просмотра по исключениям
6. Работа с временными метками и управление ими
7. Включение функции "Пауза и возобновление" для процесса Apps.


1. Захват генеалогических и исторических записей: Используйте данные Completions для создания неизменяемой записи истории.

  • Исторические записи создаются путем связывания записи таблицы Tulip Table (т. е. строки в таблице) с данными о завершении (записями/строками). Любая запись таблицы Tulip, включенная в данные завершения, может быть использована для этой связи, поэтому запись таблицы, необходимая для записи истории, будет загружена в приложение в то же время, когда происходит завершение приложения. Обязательно включайте завершение приложения в логику триггера при работе с данными записи.
  • Записи истории составляются из нескольких завершений, поэтому приложения должны "завершаться" в тех точках процесса, где необходимо регистрировать данные. Поэтому может потребоваться, чтобы приложение завершалось несколько раз во время выполнения. Обратите внимание, что при завершении приложения очищаются неперсистентные переменные, и это следует учитывать при разработке приложения.

Захват генеалогических и исторических записей: Используйте данные о завершении для создания полной прослеживаемости при изменении таблиц.

  • При работе с записями таблицы обеспечьте прослеживаемость с помощью завершений: Напоминание: Манипуляции с данными в записях таблиц во время выполнения приложения происходят в реальном времени и не привязаны к завершению приложения. Чтобы данные были современными, включите манипуляции с данными в таблице в ту же последовательность триггеров, что и завершение приложения.

Захват генеалогических и исторических записей: Используйте данные завершения для обработки полного отслеживания изменений в исторических записях.

  • Исправление записей {{глоссарий.История цифровых записей}} может быть выполнено только путем добавления новых данных завершения. Не существует способа намеренно изменить значения в записи о завершении. Это сделано специально, чтобы обеспечить сохранность исходных данных.
  • Проще говоря, запись о завершении - это аудиторский след выполнения приложения. Данные, которые уже были внесены в запись о завершении, исправляются дополнительной записью о завершении.

Пример исправления, реализованного в приложенияхКак сделать исправление: Повторно выполнить приложение или шаги приложения с дополнительной переменной, определяющей запись как "исправление".

  • Создайте переменную "Тип записи", которой присваиваются стандартные значения, такие как "Нормальный", "Исправление" и т. д., которые можно использовать для сортировки/фильтрации записи о завершении.
  • В большинстве случаев для сортировки записей об исправлениях достаточно использовать полученные даты, так как они располагаются в хронологическом порядке, а действительным значением является самая последняя запись.

2. Лучшие практики управления параметрами процесса (например, единицы измерения, десятичная точность и правила именования переменных)

  • Используйте дополнительные вспомогательные переменные для сохранения единиц измерения для данных процесса. Для данных процесса и производства всегда важно указывать единицу измерения (UOM), например °C, кг, литры, фазы и т. д.
  • Для этого используется дополнительная переменная (вспомогательная переменная), которая может быть выбрана или имеет статическое значение.
  • Переменные-помощники будут сохранены в записи завершения.
  • Используйте логику и выражения app Trigger для управления точностью десятичных дробей. Некоторые параметры процесса могут требовать определенной точности, т. е. количества знаков после запятой. Этим необходимо управлять в приложении с помощью логики триггеров и выражений.
  • Используйте четкое именование переменных, чтобы выделить ключевые переменные. Например. Критические параметры процесса (CPP) или Критический атрибут качества (CQA).
  • Определенные параметры процесса должны быть определены как критические параметры процесса (CPP) или критический атрибут качества (CQA).
  • В настоящее время в Tulip нет возможности маркировать переменные, поэтому самый простой способ сделать это - добавить префикс или суффикс к именам переменных. Например, такие имена переменных, как "температура_CPP", "CQA_Assay B" и т.д.

3. Минимальная стандартная информация, которая должна отображаться на каждом шаге

Следующие элементы должны отображаться на каждом шаге, чтобы обеспечить пользователю соответствующий контекст:

  1. Название или уникальный идентификатор основного элемента, который обрабатывается в приложении, например, партия, заказ, оборудование, инструмент. В некоторых случаях таких элементов может быть несколько.
  2. На базовом макете приложения должны присутствовать следующие элементы.
    1. 'App Info / App Name'.
    2. 'Информация о приложении / Версия приложения'.
    3. 'App Info / Logged-In User'.
    4. 'App Info / Step Name' (шрифт заметного размера, так как обычно название шага обеспечивает оператору полезный контекст процесса).

4. Сбор электронных подписей с помощью виджетов подписи

Используйте заголовок подписи или дополнительный захват переменных/ввод данных на шаге, чтобы создать контекст для подписей. Помните, что требования к электронной подписи требуют, чтобы подпись включала

  1. За что вы подписываетесь? Контекст подписи может быть описан в названии шага подписи, например, партия, заказ, оборудование и т. д.
  2. Почему вы подписываете? Используйте переменные, чтобы поместить причину подписи над виджетом подписи.
  3. Когда была поставлена подпись? Штамп даты/времени - это время, когда была поставлена подпись. Приложение автоматически фиксирует это как данные о завершении, когда виджет подписи завершен.

Ниже приведены несколько рекомендуемых способов захвата контекста подписи.

  • Используйте название шага, чтобы определить причину для электронной подписи.
  • Разместите группу шагов, требующих электронной подписи, и включите виджет подписи в качестве последнего шага в группе.
  • Используйте текстовую метку или выпадающий список с одним выбором, описывающий цель подписи.
  • Создайте итоговый шаг перед подписью, чтобы предоставить пользователю контекст того, за что он подписывается.

5. Управление исключениями и включение возможности просмотра по исключениям

Чтобы разрешить просмотр исключений, связанных с записью истории, необходимо выполнить следующие действия.

  • Используйте переменную приложения для определения типа записи (например, обычная, исправление, исключение - см. раздел 1.3), чтобы исключения можно было легко идентифицировать.
  • Используйте таблицу, чтобы собрать исключения для проверки. Каждое исключение (дефект, замечание и т. д.) должно храниться в виде отдельной записи в таблице Tulip, включая всю необходимую информацию (информацию об исключении, дату/время, приложение, заказ/партию, оператора и т. д.). Помимо того, что эти записи хранятся в данных о завершении, они могут быть связаны с партией или заказом.
  • В таблицу исключений включите столбец, который связывает или ссылается на артефакт, для которого предназначено исключение. Например: партия, материал, оборудование, заказ.

6. Работа с временными метками даты и управление ими

  1. Временные метки в записи о завершении фиксируются в UTC со смещением на часовой пояс.
  2. Форматирование даты и времени можно настроить на уровне экземпляра для всех приложений. Это делается в опции "Настройки/Дата и время".

  1. Форматы даты и времени могут быть отформатированы в редакторе выражений. При отображении или вводе даты и времени убедитесь, что дата/время отображаются в соответствии с единым форматом.
  2. Форматы времени GxP требуют однозначного формата, например "04-Jul-2020".
  3. Используйте выражения для форматирования отображения даты/времени в приложениях и аналитике.
  4. Даты можно отформатировать в заданный формат с помощью функции DATETIMETOTEXT в редакторе выражений.

7. Сделать процесс Apps устойчивым к отменам / Включить функцию паузы и возобновления

Пакетные процессы могут длиться много часов или много дней. Чтобы оператор мог приостановить работу над партией и продолжить ее в более позднее время, рассмотрите рекомендации по решению, описанные в разделе "Функциональность паузы и возобновления".


Была ли эта статья полезной?