InhalerLeakTestChecker
Inhaler Leak Test Checker
ℹ️ Утилита выполняет deterministic QC review для inhaled products:
• Приоритет источников: Ph. Eur. → British Pharmacopoeia / UK implementation → ЕАЭС → EMA/ICH/EU guidance → USP fallback
• Стандартные строгие API defaults, если точная монография ещё не зашита: Assay 98–102%, Total impurities ≤1.0%, Individual impurity ≤0.5%
• Для биопрепаратов / mAb-like продуктов: aggregates, sterility и endotoxin checks
• Для парентеральных/стерильных продуктов: sub-visible particles с поддержкой units particles/container и particles/mL
⚠️ КРИТИЧНО: Product-specific monograph / approved specification имеет приоритет над default limits.
Hardcoded defaults используются для раннего backlog-проекта и должны уточняться при продуктовой проработке.
Использование:
InhalerLeakTestChecker.exe → демо-режим (вывод в консоль)
InhalerLeakTestChecker.exe input.csv output.json → оценка ваших данных
Формат input.csv:
BatchNumber,ProductName,SubstanceName,ProductClass,Assay_Percent,TotalImpurities_Percent,IndividualImpurityMax_Percent,Aggregates_Percent,Sterility_Result,Endotoxin_Value,Endotoxin_Unit,Particles_10um_Value,Particles_10um_Unit,Particles_25um_Value,Particles_25um_Unit,ContainerVolume_mL,Turbidity_NTU,DAR_Value,RadiochemicalPurity_Percent,RadionuclidicPurity_Percent,pH,RegionCode,SpecificationSource,MethodID
Пример:
EU-QC-2026-001,Reference product batch,inhaled products,inhaled products,99.4,0.42,0.18,0.9,PASS,0.12,EU/mL,1200,particles/container,90,particles/container,1.0,2.0,4.0,98.5,99.95,6.4,EU,PhEur_BP_EAEU_EU_guidance_first,QC-METHOD-001
— ЗАЧЕМ ЭТО НУЖНО?
Утилита нужна для быстрого и воспроизводимого QC decision-support слоя:
• уменьшает ручную проверку Excel и локальных шаблонов
• показывает PASS / WARNING / FAIL в LabWare-compatible JSON
• фиксирует, какие hardcoded limits применены
• поддерживает unit variants для частиц и эндотоксинов
• помогает подготовить данные для review, audit trail и последующей CSV/CSA проверки
⚠️ КРИТИЧЕСКИ ВАЖНО:
• Exact Ph. Eur./BP/EAEU monograph limit должен быть зашит в продуктовой версии утилиты, если он известен
• Если exact limit неизвестен, применяется строгий API default: Assay 98–102%, impurities ≤0.5–1.0%
• Для биопрепаратов обязательны aggregates, sterility и endotoxin checks
• Для particles значения могут приходить как particles/container или particles/mL; пересчёт делается через ContainerVolume_mL
• USP используется только как fallback, не как главный источник лимитов
Ключевые особенности утилиты:
• Hardcoded limits в одном Program.cs
• Никакой внешней конфигурации лимитов
• Поддержка EU-first source policy
• Unit conversion для particles/container и particles/mL
• Endotoxin unit handling для EU/mL, IU/mL, EU/mg, IU/mg, EU/container, IU/container
• LabWare-compatible output.json
Критические параметры:
• Assay: 98–102% default, если точная монография не зашита
• Total impurities: ≤1.0% default
• Individual impurity max: ≤0.5% default
• Aggregates for biologics: ≤1.5% strict default
• Sterility: PASS / STERILE / NEGATIVE / COMPLIANT
• Endotoxin: strict unit-based default; product-specific Ph. Eur. 2.6.14 calculation has priority
• Particles ≥10 µm: ≤6000/container; ≥25 µm: ≤600/container for small-volume parenteral default
💡 Советы по использованию:
1. При создании product-specific версии сначала проверьте Ph. Eur. / BP / ЕАЭС монографию
2. Если монографии нет, используйте строгие defaults только как screening layer
3. Для биопрепаратов не отключайте агрегаты, стерильность и эндотоксины
4. Если particle counts пришли per mL, обязательно заполните ContainerVolume_mL
5. Сохраняйте SpecificationSource и MethodID для audit trail
⚠️ Особенность: Утилита intentionally simple для поддержки: все лимиты зашиты в Program.cs. Это удобно для FUZKK-подхода, но требует version control и change control при изменении лимитов.
input.csv
BatchNumber,ProductName,SubstanceName,ProductClass,Assay_Percent,TotalImpurities_Percent,IndividualImpurityMax_Percent,Aggregates_Percent,Sterility_Result,Endotoxin_Value,Endotoxin_Unit,Particles_10um_Value,Particles_10um_Unit,Particles_25um_Value,Particles_25um_Unit,ContainerVolume_mL,Turbidity_NTU,DAR_Value,RadiochemicalPurity_Percent,RadionuclidicPurity_Percent,pH,RegionCode,SpecificationSource,MethodID EU-QC-2026-001,Reference product batch,inhaled products,inhaled products,99.4,0.42,0.18,0.9,PASS,0.12,EU/mL,1200,particles/container,90,particles/container,1.0,2.0,4.0,98.5,99.95,6.4,EU,PhEur_BP_EAEU_EU_guidance_first,QC-METHOD-001 EU-QC-2026-002,Out-of-trend batch,inhaled products,inhaled products,96.7,1.35,0.72,2.2,FAIL,0.9,EU/mL,7200,particles/container,810,particles/container,1.0,14.0,8.6,93.5,99.5,8.6,EU,strict_default_when_exact_monograph_unknown,QC-METHOD-001 EU-QC-2026-003,Unit conversion example,inhaled products,inhaled products,100.1,0.22,0.09,0.6,STERILE,3.2,EU/container,450,particles/mL,40,particles/mL,2.0,1.5,3.5,97.1,99.92,6.8,UK,BP_UK_implementation_units_demo,QC-METHOD-002
Inhaler Leak Test Checker — URS и FS
Ниже приведены русские версии пользовательских требований и функциональной спецификации.
Inhaler Leak Test Checker — URS
Inhaler Leak Test Checker
Документ сформирован для русской локализации. Для английской и остальных языков используется отдельная английская версия без смешения языков.
Назначение
Определить пользовательские требования к автономной FUZKK-утилите, которая принимает CSV-файл лабораторных данных, выполняет проверку по зашитым в код правилам и формирует LabWare-compatible JSON.
Область применения
Утилита предназначена для предварительной QC/QA-оценки, интеграционного тестирования, LIMS/LabWare flow и подготовки evidence trail. Окончательное решение остаётся за валидированной процедурой лаборатории и ответственным персоналом.
Пользователи
QC analyst, QA reviewer, CSV/validation engineer, LIMS/LabWare integration engineer, responsible laboratory specialist.
Пользовательские требования
- Утилита должна запускаться без параметров и выводить самоописание, пример input.csv из GetDemoData() и demo evaluation для встроенного набора данных.
- Утилита должна запускаться с двумя параметрами: input.csv output.json.
- Утилита не должна читать input.csv и не должна писать output.json при запуске без параметров.
- CSV должен читаться с CultureInfo.InvariantCulture для числовых значений.
- Результат должен формироваться в LabWare-compatible JSON с Header, Samples, Results, Status, StatusCode, ErrorMessage, Description и DescriptionEN.
- При PASS поле ErrorMessage должно быть пустой строкой.
- Зашитые лимиты должны следовать приоритету: Ph. Eur. → British Pharmacopoeia / UK implementation → ЕАЭС / региональные требования → EMA/ICH/EU guidance → USP fallback.
- Если точная монография неизвестна, применяются строгие стандартные API-лимиты: Assay 98–102%, total impurities ≤1.0%, individual impurity ≤0.5%, если это применимо к типу утилиты.
- Для биопрепаратов и mAb-like продуктов должны учитываться агрегаты, стерильность и эндотоксины, если такие параметры релевантны назначению утилиты.
- Если параметр может приходить в разных единицах, единица должна быть отдельным входным полем или явно отражаться в имени поля input.csv.
Входной CSV
BatchNumber,ProductName,SubstanceName,ProductClass,Assay_Percent,TotalImpurities_Percent,IndividualImpurityMax_Percent,Aggregates_Percent,Sterility_Result,Endotoxin_Value,Endotoxin_Unit,Particles_10um_Value,Particles_10um_Unit,Particles_25um_Value,Particles_25um_Unit,ContainerVolume_mL,Turbidity_NTU,DAR_Value,RadiochemicalPurity_Percent,RadionuclidicPurity_Percent,pH,RegionCode,SpecificationSource,MethodID EU-QC-2026-001,Reference product batch,inhaled products,inhaled products,99.4,0.42,0.18,0.9,PASS,0.12,EU/mL,1200,particles/container,90,particles/container,1.0,2.0,4.0,98.5,99.95,6.4,EU,PhEur_BP_EAEU_EU_guidance_first,QC-METHOD-001 EU-QC-2026-002,Out-of-trend batch,inhaled products,inhaled products,96.7,1.35,0.72,2.2,FAIL,0.9,EU/mL,7200,particles/container,810,particles/container,1.0,14.0,8.6,93.5,99.5,8.6,EU,strict_default_when_exact_monograph_unknown,QC-METHOD-001 EU-QC-2026-003,Unit conversion example,inhaled products,inhaled products,100.1,0.22,0.09,0.6,STERILE,3.2,EU/container,450,particles/mL,40,particles/mL,2.0,1.5,3.5,97.1,99.92,6.8,UK,BP_UK_implementation_units_demo,QC-METHOD-002
Поля input.csv
| Field | Sample |
|---|---|
| BatchNumber | EU-QC-2026-001 |
| ProductName | Reference product batch |
| SubstanceName | inhaled products |
| ProductClass | inhaled products |
| Assay_Percent | 99.4 |
| TotalImpurities_Percent | 0.42 |
| IndividualImpurityMax_Percent | 0.18 |
| Aggregates_Percent | 0.9 |
| Sterility_Result | PASS |
| Endotoxin_Value | 0.12 |
| Endotoxin_Unit | EU/mL |
| Particles_10um_Value | 1200 |
| Particles_10um_Unit | particles/container |
| Particles_25um_Value | 90 |
| Particles_25um_Unit | particles/container |
| ContainerVolume_mL | 1.0 |
| Turbidity_NTU | 2.0 |
| DAR_Value | 4.0 |
| RadiochemicalPurity_Percent | 98.5 |
| RadionuclidicPurity_Percent | 99.95 |
| pH | 6.4 |
| RegionCode | EU |
| SpecificationSource | PhEur_BP_EAEU_EU_guidance_first |
| MethodID | QC-METHOD-001 |
Описание утилиты
Inhaler Leak Test Checker — проверка качества по EU-first фармакопейным лимитам
Inhaler Leak Test Checker — проверка качества по EU-first фармакопейным лимитам
ℹ️ Утилита выполняет deterministic QC review для inhaled products:
• Приоритет источников: Ph. Eur. → British Pharmacopoeia / UK implementation → ЕАЭС → EMA/ICH/EU guidance → USP fallback
• Стандартные строгие API defaults, если точная монография ещё не зашита: Assay 98–102%, Total impurities ≤1.0%, Individual impurity ≤0.5%
• Для биопрепаратов / mAb-like продуктов: aggregates, sterility и endotoxin checks
• Для парентеральных/стерильных продуктов: sub-visible particles с поддержкой units particles/container и particles/mL
⚠️ КРИТИЧНО: Product-specific monograph / approved specification имеет приоритет над default limits.
Hardcoded defaults используются для раннего backlog-проекта и должны уточняться при продуктовой проработке.
Использование:
InhalerLeakTestChecker.exe → демо-режим (вывод в консоль)
InhalerLeakTestChecker.exe input.csv output.json → оценка ваших данных
Формат input.csv:
BatchNumber,ProductName,SubstanceName,ProductClass,Assay_Percent,TotalImpurities_Percent,IndividualImpurityMax_Percent,Aggregates_Percent,Sterility_Result,Endotoxin_Value,Endotoxin_Unit,Particles_10um_Value,Particles_10um_Unit,Particles_25um_Value,Particles_25um_Unit,ContainerVolume_mL,Turbidity_NTU,DAR_Value,RadiochemicalPurity_Percent,RadionuclidicPurity_Percent,pH,RegionCode,SpecificationSource,MethodID
Пример:
EU-QC-2026-001,Reference product batch,inhaled products,inhaled products,99.4,0.42,0.18,0.9,PASS,0.12,EU/mL,1200,particles/container,90,particles/container,1.0,2.0,4.0,98.5,99.95,6.4,EU,PhEur_BP_EAEU_EU_guidance_first,QC-METHOD-001
— ЗАЧЕМ ЭТО НУЖНО?
Утилита нужна для быстрого и воспроизводимого QC decision-support слоя:
• уменьшает ручную проверку Excel и локальных шаблонов
• показывает PASS / WARNING / FAIL в LabWare-compatible JSON
• фиксирует, какие hardcoded limits применены
• поддерживает unit variants для частиц и эндотоксинов
• помогает подготовить данные для review, audit trail и последующей CSV/CSA проверки
⚠️ КРИТИЧЕСКИ ВАЖНО:
• Exact Ph. Eur./BP/EAEU monograph limit должен быть зашит в продуктовой версии утилиты, если он известен
• Если exact limit неизвестен, применяется строгий API default: Assay 98–102%, impurities ≤0.5–1.0%
• Для биопрепаратов обязательны aggregates, sterility и endotoxin checks
• Для particles значения могут приходить как particles/container или particles/mL; пересчёт делается через ContainerVolume_mL
• USP используется только как fallback, не как главный источник лимитов
Ключевые особенности утилиты:
• Hardcoded limits в одном Program.cs
• Никакой внешней конфигурации лимитов
• Поддержка EU-first source policy
• Unit conversion для particles/container и particles/mL
• Endotoxin unit handling для EU/mL, IU/mL, EU/mg, IU/mg, EU/container, IU/container
• LabWare-compatible output.json
Критические параметры:
• Assay: 98–102% default, если точная монография не зашита
• Total impurities: ≤1.0% default
• Individual impurity max: ≤0.5% default
• Aggregates for biologics: ≤1.5% strict default
• Sterility: PASS / STERILE / NEGATIVE / COMPLIANT
• Endotoxin: strict unit-based default; product-specific Ph. Eur. 2.6.14 calculation has priority
• Particles ≥10 µm: ≤6000/container; ≥25 µm: ≤600/container for small-volume parenteral default
💡 Советы по использованию:
1. При создании product-specific версии сначала проверьте Ph. Eur. / BP / ЕАЭС монографию
2. Если монографии нет, используйте строгие defaults только как screening layer
3. Для биопрепаратов не отключайте агрегаты, стерильность и эндотоксины
4. Если particle counts пришли per mL, обязательно заполните ContainerVolume_mL
5. Сохраняйте SpecificationSource и MethodID для audit trail
⚠️ Особенность: Утилита intentionally simple для поддержки: все лимиты зашиты в Program.cs. Это удобно для FUZKK-подхода, но требует version control и change control при изменении лимитов.
Трассируемость и ограничения
- URS используется как исходный документ для functional specification, CSV review и последующей CSV/validation работы.
- Документ не является заменой утверждённой фармакопейной монографии, валидированного метода или внутренней спецификации продукта.
- Для product-specific лимитов приоритет имеет утверждённая спецификация заказчика.
Inhaler Leak Test Checker — FS
Inhaler Leak Test Checker
Функциональная спецификация описывает поведение автономной консольной утилиты FUZKK, формат входных данных, алгоритм оценки и структуру выходного JSON.
Функциональный поток
- Main() проверяет количество аргументов.
- Если аргументов нет: PrintHello() выводит описание и встроенный пример input.csv, затем RunDemoEvaluation() выполняет Evaluate() по GetDemoData() и печатает demo JSON.
- Если передано два аргумента: RunWithFiles(input.csv, output.json) читает CSV, выполняет Evaluate() по каждой строке и записывает LabWare-compatible JSON.
- LoadData() использует CultureInfo.InvariantCulture и не должен вызываться в no-args режиме.
- Evaluate() возвращает именованный кортеж с BatchNumber, ProductName, Parameters, CriticalFailCount, WarningCount, Recommendation и RecommendationEN.
- GetIssues() формирует сообщения для ErrorMessage при WARNING/FAIL.
Правила оценки
- PASS: CriticalFailCount = 0 и WarningCount = 0.
- WARNING: CriticalFailCount = 0 и WarningCount > 0.
- FAIL: CriticalFailCount > 0.
- ERROR: исключение при чтении или обработке данных.
- ErrorMessage остаётся пустым при PASS.
- Лимиты зашиты в Program.cs; внешняя конфигурация лимитов не требуется.
Ввод и поля
BatchNumber,ProductName,SubstanceName,ProductClass,Assay_Percent,TotalImpurities_Percent,IndividualImpurityMax_Percent,Aggregates_Percent,Sterility_Result,Endotoxin_Value,Endotoxin_Unit,Particles_10um_Value,Particles_10um_Unit,Particles_25um_Value,Particles_25um_Unit,ContainerVolume_mL,Turbidity_NTU,DAR_Value,RadiochemicalPurity_Percent,RadionuclidicPurity_Percent,pH,RegionCode,SpecificationSource,MethodID EU-QC-2026-001,Reference product batch,inhaled products,inhaled products,99.4,0.42,0.18,0.9,PASS,0.12,EU/mL,1200,particles/container,90,particles/container,1.0,2.0,4.0,98.5,99.95,6.4,EU,PhEur_BP_EAEU_EU_guidance_first,QC-METHOD-001 EU-QC-2026-002,Out-of-trend batch,inhaled products,inhaled products,96.7,1.35,0.72,2.2,FAIL,0.9,EU/mL,7200,particles/container,810,particles/container,1.0,14.0,8.6,93.5,99.5,8.6,EU,strict_default_when_exact_monograph_unknown,QC-METHOD-001 EU-QC-2026-003,Unit conversion example,inhaled products,inhaled products,100.1,0.22,0.09,0.6,STERILE,3.2,EU/container,450,particles/mL,40,particles/mL,2.0,1.5,3.5,97.1,99.92,6.8,UK,BP_UK_implementation_units_demo,QC-METHOD-002
| Field | Sample |
|---|---|
| BatchNumber | EU-QC-2026-001 |
| ProductName | Reference product batch |
| SubstanceName | inhaled products |
| ProductClass | inhaled products |
| Assay_Percent | 99.4 |
| TotalImpurities_Percent | 0.42 |
| IndividualImpurityMax_Percent | 0.18 |
| Aggregates_Percent | 0.9 |
| Sterility_Result | PASS |
| Endotoxin_Value | 0.12 |
| Endotoxin_Unit | EU/mL |
| Particles_10um_Value | 1200 |
| Particles_10um_Unit | particles/container |
| Particles_25um_Value | 90 |
| Particles_25um_Unit | particles/container |
| ContainerVolume_mL | 1.0 |
| Turbidity_NTU | 2.0 |
| DAR_Value | 4.0 |
| RadiochemicalPurity_Percent | 98.5 |
| RadionuclidicPurity_Percent | 99.95 |
| pH | 6.4 |
| RegionCode | EU |
| SpecificationSource | PhEur_BP_EAEU_EU_guidance_first |
| MethodID | QC-METHOD-001 |
Выходной JSON
{
"Header": {
"UtilityName": "InhalerLeakTestChecker",
"Version": "1.0.0",
"Timestamp": "UTC",
"InstrumentID": "FUZKK-QC-WORKSTATION",
"OperatorID": "Admin"
},
"Samples": [
{
"SampleID": "from BatchNumber",
"BatchNumber": "from CSV",
"ProductName": "from CSV",
"TestName": "utility-specific test",
"AnalysisCode": "utility-specific code",
"Status": "PASS | WARNING | FAIL | ERROR",
"StatusCode": "1 | 2 | 0 | -1",
"ErrorMessage": "",
"Description": "Russian recommendation",
"DescriptionEN": "English recommendation",
"Results": [
{
"ParameterName": "parameter",
"ResultValue": 0.0,
"UnitOfMeasure": "unit",
"SpecificationLimit": "limit",
"IsWithinSpec": true
}
]
}
]
}Входит в пакеты
Ингаляционные продукты
Ингаляционные продукты: пакет утилит FUZKK для CSV→JSON QC-проверок с EU-first приоритетом лимитов.
Открыть