RadionuclideImpurityChecker

Radionuclide Impurity

decay correction endotoxins impurities PET radionuclide purity radiopharma SPECT sterility
Открыть подборку
Radionuclide Impurity Checker — Универсальная утилита для расчёта примесей-радионуклидов по данным гамма-спектрометрии

ℹ️  Утилита автоматически рассчитывает процент примеси радионуклида с коррекцией на период полураспада. Активность приводится к эталонному времени (времени калибровки/производства).
ℹ️  Поддерживает любые комбинации радионуклидов — достаточно указать периоды полураспада.
ℹ️  Не использует машинное обучение — только физические расчёты по формуле: A_ref = A_meas × exp(λ × t)

Использование:
  RadionuclideImpurityChecker.exe                            → демо-режим (вывод в консоль)
  RadionuclideImpurityChecker.exe input.csv output.json      → расчёт по вашим данным

Формат input.csv:
BatchNumber,MainRadionuclide,MainActivityMeasMBq,ImpurityRadionuclide,ImpurityActivityMeasMBq,TimeDiffHours,MainHalfLifeHours,ImpurityHalfLifeHours

Пояснение полей:
• BatchNumber — номер серии препарата
• MainRadionuclide — основной радионуклид (например, "Lu-177")
• MainActivityMeasMBq — активность основного радионуклида при измерении (МБк)
• ImpurityRadionuclide — примесь-радионуклид (например, "Lu-177m")
• ImpurityActivityMeasMBq — активность примеси при измерении (МБк)
• TimeDiffHours — время от эталонного момента (калибровки) до измерения в часах (≥0)
• MainHalfLifeHours — период полураспада основного радионуклида (часы)
• ImpurityHalfLifeHours — период полураспада примеси (часы)

⚠️ КРИТИЧЕСКИ ВАЖНО:
• Входные активности ДОЛЖНЫ быть измерены в ОДИН И ТОТ ЖЕ момент времени!
• Время измерения ДОЛЖНО быть позже эталонного времени (TimeDiffHours ≥ 0)
• Активности должны быть получены из гамма-спектрометрии с корректной калибровкой детектора
• Периоды полураспада должны соответствовать справочным данным

— КАК ЭТО РАБОТАЕТ?
1. Утилита рассчитывает фактор распада для основного радионуклида:
   λ_main = ln(2) / T½_main
   Factor_main = exp(λ_main × TimeDiffHours)
   
2. Рассчитывает фактор распада для примеси аналогично
   
3. Приводит активности к эталонному времени:
   A_main_ref = A_main_meas × Factor_main
   A_imp_ref = A_imp_meas × Factor_imp
   
4. Рассчитывает процент примеси:
   Impurity % = (A_imp_ref / A_main_ref) × 100%
   
5. Сравнивает с фармакопейным пределом для данной комбинации радионуклидов
   (если комбинация неизвестна — используется предел 1.0% с пометкой "Default")

📌 Встроенные фармакопейные пределы:
• Lu-177 + Lu-177m: ≤0.1% (Ph. Eur. / EMA для Lutathera®)
• I-131 + I-132: ≤0.1% (USP <823>)
• Ra-223 + Ra-226: ≤0.001% (спецификация Xofigo®)
• Tc-99m + Mo-99: ≤0.015% (Ph. Eur. для генераторов)
• Sr-89 + Sr-85: ≤0.02% (Ph. Eur.)
• Ga-68 + Ge-68: ≤0.001% (Ph. Eur. для генераторов)

💡 Советы по использованию:
1. Получите активности основного радионуклида и примеси из гамма-спектрометра (уже скорректированные на эффективность детектора и вероятность излучения)
2. Определите время между калибровкой (эталонным временем) и измерением в часах
3. Используйте точные периоды полураспада из справочника (см. ниже)
4. Для неизвестных комбинаций утилита использует предел 1.0% — ВСЕГДА сверяйтесь со спецификацией вашего препарата!

📚 Справочник периодов полураспада (часы):
Lu-177: 160.08    | Lu-177m: 3840      | I-131: 192        | I-132: 2.3
Ra-223: 277.2     | Ra-226: 1295040    | Mo-99: 66         | Tc-99m: 6.01
Sr-89: 1295       | Sr-85: 15984       | Ga-68: 1.13       | Ge-68: 21360
F-18: 1.83        | Cu-64: 12.7        | Y-90: 64.1        | In-111: 67.3

⚠️ ВАЖНО:
• Примеси-радионуклиды увеличивают лучевую нагрузку на пациента БЕЗ терапевтического эффекта!
• Некоторые примеси имеют длительный период полураспада (например, Lu-177m: 160 дней) — даже 0.1% создаёт значительную хроническую нагрузку
• Для диагностических препаратов примеси снижают качество изображения и увеличивают дозу
• Утилита НЕ заменяет валидированный метод анализа, но позволяет быстро оценить результаты гамма-спектрометрии

input.csv

BatchNumber,MainRadionuclide,MainActivityMeasMBq,ImpurityRadionuclide,ImpurityActivityMeasMBq,TimeDiffHours,MainHalfLifeHours,ImpurityHalfLifeHours
RNI-Lu177-2026-001,Lu-177,5000.0,Lu-177m,0.8,24.0,160.08,3840.0
RNI-I131-2026-001,I-131,3700.0,I-132,1.5,12.0,192.0,2.3
RNI-Ra223-2026-001,Ra-223,1100.0,Ra-226,0.005,48.0,277.2,1295040.0

URS & FS — пользовательские требования и функциональная спецификация

Этот документ описывает требования пользователя и функциональную спецификацию для утилиты контроля качества. Он предназначен для обсуждения внедрения, подготовки IQ/OQ и интеграции в контур ОКК/QC.

Утилита: RadionuclideImpurityCheckerAPI / объект: Radionuclide ImpurityКатегория: Radiopharmaceuticals

1. Область применения

Утилита Radionuclide Impurity Checker применяется для объекта Radionuclide Impurity. Источником истины для структуры входных данных является фактический input.csv; критерии контроля задаются исполняемым модулем и предметным описанием.

Утилита не использует машинное обучение; решение формируется детерминированными правилами.

Категории: Radiopharmaceuticals

Теги: decay correction, endotoxins, impurities, PET, radionuclide purity, radiopharma, SPECT, sterility

2. Режимы запуска

RadionuclideImpurityChecker.exe                            → демо-режим (вывод в консоль)
RadionuclideImpurityChecker.exe input.csv output.json      → расчёт по вашим данным

3. Ключевые контролируемые области

  • чистота и примеси
  • микробиология и патогены
  • pH и физико-химические параметры
  • радиоактивность, распад и радиохимическая чистота

4. Предметные ограничения и критические параметры

  • TimeDiffHours — время от эталонного момента (калибровки) до измерения в часах (≥0)
  • ⚠️ КРИТИЧЕСКИ ВАЖНО:
  • Входные активности ДОЛЖНЫ быть измерены в ОДИН И ТОТ ЖЕ момент времени!
  • Время измерения ДОЛЖНО быть позже эталонного времени (TimeDiffHours ≥ 0)
  • Активности должны быть получены из гамма-спектрометрии с корректной калибровкой детектора
  • Периоды полураспада должны соответствовать справочным данным
  • 1. Утилита рассчитывает фактор распада для основного радионуклида:
  • λ_main = ln(2) / T½_main
  • 2. Рассчитывает фактор распада для примеси аналогично
  • 3. Приводит активности к эталонному времени:
  • 4. Рассчитывает процент примеси:
  • Impurity % = (A_imp_ref / A_main_ref) × 100%
  • 5. Сравнивает с фармакопейным пределом для данной комбинации радионуклидов
  • (если комбинация неизвестна — используется предел 1.0% с пометкой "Default")
  • Lu-177 + Lu-177m: ≤0.1% (Ph. Eur. / EMA для Lutathera®)
  • I-131 + I-132: ≤0.1% (USP <823>)
  • Ra-223 + Ra-226: ≤0.001% (спецификация Xofigo®)
  • Tc-99m + Mo-99: ≤0.015% (Ph. Eur. для генераторов)
  • Sr-89 + Sr-85: ≤0.02% (Ph. Eur.)
  • Ga-68 + Ge-68: ≤0.001% (Ph. Eur. для генераторов)
  • 1. Получите активности основного радионуклида и примеси из гамма-спектрометра (уже скорректированные на эффективность детектора и вероятность излучения)
  • 2. Определите время между калибровкой (эталонным временем) и измерением в часах
  • 3. Используйте точные периоды полураспада из справочника (см. ниже)
  • 4. Для неизвестных комбинаций утилита использует предел 1.0% — ВСЕГДА сверяйтесь со спецификацией вашего препарата!
Пределы, указанные в описании, должны быть сверены с актуальной утверждённой спецификацией, фармакопейной монографией и регистрационным досье перед продуктивным применением.

5. URS — пользовательские требования

IDТребованиеКритичностьКритерий приемки
URS-001Система должна принимать файл input.csv для Radionuclide Impurity с точным набором колонок, перечисленным в разделе «Контракт входных данных».HighФайл с корректным заголовком читается без ручного редактирования; отсутствие обязательной колонки приводит к FAIL/ошибке импорта.
URS-002Система должна обрабатывать запуск без аргументов в демонстрационном режиме и запуск с аргументами input.csv output.json для пользовательских данных.MediumОба сценария запуска дают предсказуемый результат или понятное сообщение об ошибке.
URS-003Система должна выполнять rule-based контроль по областям: чистота и примеси, микробиология и патогены, pH и физико-химические параметры, радиоактивность, распад и радиохимическая чистота.HighКаждый контролируемый параметр получает статус и сообщение; результат не зависит от скрытых Excel-формул или ML.
URS-004Система должна сохранять трассируемость между серией/партией, исходными значениями, применёнными правилами и итоговым вердиктом.HighВ выходе присутствуют идентификатор серии, исходные значения, статусы параметров и критические находки.
URS-005Система должна формировать машинно-читаемый output.json для LIMS/ELN/MES, batch record и QA/QC review.HighJSON содержит общий статус, массив проверок, предупреждения, отказы и ссылку на исходный файл.
URS-006Система должна поддерживать применение в валидационном пакете клиента: URS/FS, IQ/OQ-подготовка, проверка установки и операционных сценариев.HighДокумент, тестовые сценарии и воспроизводимый CSV/JSON-поток пригодны для аудита и внутреннего согласования.
URS-007Система должна явно отделять технические ошибки данных от предметных несоответствий спецификации.MediumОшибки схемы/типов не смешиваются с фармакопейными отклонениями и отображаются отдельно.

6. Контракт входных данных input.csv

Источник истины для схемы входа — фактический заголовок input.csv. Имена колонок технические и не переводятся.

#КолонкаТипЕд.ОписаниеПримерПравило контроля
1BatchNumberидентификаторas specifiedBatch NumberRNI-Lu177-2026-001обязательное поле; используется для трассируемости серии/партии
2MainRadionuclideтекстas specifiedMain RadionuclideLu-177обязательное значение; формат и допустимость проверяются утилитой
3MainActivityMeasMBqдесятичное числоMBqMain Activity Meas MBq5000.0обязательное числовое значение; сравнение с правилом выполняет утилита
4ImpurityRadionuclideдесятичное числоas specifiedImpurity RadionuclideLu-177mчисло; сравнивается с индивидуальным или суммарным пределом примесей
5ImpurityActivityMeasMBqдесятичное числоMBqImpurity Activity Meas MBq0.8число; сравнивается с индивидуальным или суммарным пределом примесей
6TimeDiffHoursдесятичное числоhTime Diff Hours24.0обязательное числовое значение; сравнение с правилом выполняет утилита
7MainHalfLifeHoursдесятичное числоhMain Half Life Hours160.08обязательное числовое значение; сравнение с правилом выполняет утилита
8ImpurityHalfLifeHoursдесятичное числоhImpurity Half Life Hours3840.0число; сравнивается с индивидуальным или суммарным пределом примесей

Пример CSV

BatchNumber,MainRadionuclide,MainActivityMeasMBq,ImpurityRadionuclide,ImpurityActivityMeasMBq,TimeDiffHours,MainHalfLifeHours,ImpurityHalfLifeHours
RNI-Lu177-2026-001,Lu-177,5000.0,Lu-177m,0.8,24.0,160.08,3840.0

7. FS — функциональная спецификация

IDФункцияОписание реализации
FS-001CLI entry pointИсполняемый файл RadionuclideImpurityChecker.exe принимает режим демонстрации и режим обработки input.csv output.json.
FS-002CSV parserМодуль импорта читает CSV, проверяет заголовок, порядок/наличие колонок, количество значений и кодировку. Для десятичных значений ожидается точка.
FS-003Field conversionДля каждой колонки выполняется преобразование к ожидаемому типу: идентификатор, текст, десятичное число, дата/время или логический флаг.
FS-004Domain rule engineДля объекта Radionuclide Impurity применяются явные правила: диапазон, минимум, максимум, отсутствие запрещённого признака, полнота данных или расчётная проверка.
FS-005Criticality handlingКритичные нарушения формируют FAIL; некритичные отклонения и неполные данные формируют WARNING; соответствие всем правилам формирует PASS.
FS-006JSON writeroutput.json сохраняет общий статус, результаты по каждому параметру, исходные значения, предупреждения, отказы и диагностические сообщения.
FS-007Integration contractФормат CSV → JSON стабилен для вызова из LIMS/ELN/MES, планировщика задач или wrapper-сервиса.
FS-008Error handlingПри ошибке схемы, отсутствующем файле, нечисловом значении или невозможности записи JSON возвращается диагностируемая ошибка без тихого PASS.

8. Выходной контракт output.json

Выходной файл должен быть пригоден для автоматической обработки, аудита и сопоставления с исходной строкой input.csv.

{
  "utility": "RadionuclideImpurityChecker",
  "api": "Radionuclide Impurity",
  "batchNumber": "RNI-Lu177-2026-001",
  "overallStatus": "PASS|WARNING|FAIL",
  "checkedAtUtc": "2026-05-18T00:00:00Z",
  "checks": [
    {
      "parameter": "BatchNumber",
      "value": "RNI-Lu177-2026-001",
      "unit": "as specified",
      "status": "PASS|WARNING|FAIL",
      "message": "Результат проверки по правилу"
    },
    {
      "parameter": "MainRadionuclide",
      "value": "Lu-177",
      "unit": "as specified",
      "status": "PASS|WARNING|FAIL",
      "message": "Результат проверки по правилу"
    },
    {
      "parameter": "MainActivityMeasMBq",
      "value": "5000.0",
      "unit": "MBq",
      "status": "PASS|WARNING|FAIL",
      "message": "Результат проверки по правилу"
    },
    {
      "parameter": "ImpurityRadionuclide",
      "value": "Lu-177m",
      "unit": "as specified",
      "status": "PASS|WARNING|FAIL",
      "message": "Результат проверки по правилу"
    },
    {
      "parameter": "ImpurityActivityMeasMBq",
      "value": "0.8",
      "unit": "MBq",
      "status": "PASS|WARNING|FAIL",
      "message": "Результат проверки по правилу"
    },
    {
      "parameter": "TimeDiffHours",
      "value": "24.0",
      "unit": "h",
      "status": "PASS|WARNING|FAIL",
      "message": "Результат проверки по правилу"
    },
    {
      "parameter": "MainHalfLifeHours",
      "value": "160.08",
      "unit": "h",
      "status": "PASS|WARNING|FAIL",
      "message": "Результат проверки по правилу"
    },
    {
      "parameter": "ImpurityHalfLifeHours",
      "value": "3840.0",
      "unit": "h",
      "status": "PASS|WARNING|FAIL",
      "message": "Результат проверки по правилу"
    }
  ],
  "criticalFindings": [],
  "sourceFile": "input.csv"
}

9. Тестовые сценарии OQ/PQ

IDСценарийОжидаемый результат
TC-001Валидный CSV с заголовком и строкой из примераВсе строки обработаны; результат содержит PASS/WARNING/FAIL и детализацию по параметрам.
TC-002Отсутствует обязательная колонка из input.csvИмпорт отклоняется или строка получает FAIL со ссылкой на схему.
TC-003Числовое поле содержит текст или пустое значениеФиксируется ошибка преобразования типа; результат не маскируется как PASS.
TC-004Параметр выходит за предел спецификации / критического лимитаДля критического параметра формируется FAIL; для некритического — WARNING согласно правилу.
TC-008Некорректная активность, время отсчёта или радиохимическая чистотаФормируется FAIL/WARNING с расчётной трассировкой.

10. QA/QC, CSV и управление изменениями

  • Перед применением на производстве клиент фиксирует версию исполняемого файла, контрольную сумму, версию спецификации/монографии, тестовый CSV, ожидаемый JSON и результаты IQ/OQ.
  • Нельзя менять имена колонок без обновления валидатора и тестовых сценариев.
  • Исходный CSV, output.json и версия утилиты должны храниться вместе как пакет доказательств.
  • Любое изменение правил контроля должно проходить change control и повторную проверку OQ-сценариев.

Входит в пакеты

PetRad QC Suite

Пакет специализированных утилит для контроля качества радиофармпрепаратов: ПЭТ, SPECT, терапевтические радионуклиды, генераторы и расчёты распада.

Открыть

Радиология

Пакет для радиологии и диагностической визуализации: радиофармпрепараты, PET/SPECT, контрастные вещества, йодсодержащие и гадолиниевые препараты, а также проверки частиц, стерильности и эндотоксинов.

Открыть

RPH: объединённый радиофармацевтический QC-пакет

RPH объединяет PetRad, PetRad2 и PetRad3 в один обзорный пакет для PET/SPECT, терапевтических радионуклидов, генераторов, меченых соединений, расчётов распада, стерильности, эндотоксинов и радиохимической/радионуклидной чистоты.

Открыть