URS & FS — спецификация пользователя и функциональная спецификация
Документ описывает контролируемый интерфейс и поведение утилиты ScreeningAssayAcceptanceChecker для сценария Screening Assay Acceptance Checker.
Предметные ограничения и критические параметры
Ниже приведены ключевые фрагменты исходного описания. Перед продуктивным применением пределы должны быть сверены с утверждённой спецификацией, регистрационным досье и локальными SOP.
- ℹ️ Утилита выполняет приемку скрининговых запусков согласно FDA SaMD guidance, EU IVDR Annex I, CLSI EP28-A3c, CAP/CLIA §GEN.48800 и WHO Principles of Screening:
- КОНТРОЛИ (КРИТИЧЕСКИЕ ДЛЯ СКРИНИНГА):
- Recovery ≥ 80%. ⛔ Failure = нельзя подтвердить способность обнаруживать слабые сигналы.
- МОНИТОРИНГ РАСПРЕДЕЛЕНИЯ SCORES:
- • Z-Score vs Historical Baseline ≤ 2.0: Обнаружение систематического дрейфа.
- • Distribution Normality: Ненормальное распределение = артефакт или изменение популяции.
- • Observed vs Expected Positivity Rate: Отклонение ≤ 3× от ожидаемой превалентности.
- • Intra-Run CV ≤ 15%: Воспроизводимость внутри запуска.
- • Signal-to-Noise Ratio ≥ 10: Различимость сигнала на пороге.
- • Plate Position Effect Correlation ≤ 0.1: Краевые эффекты и pipetting bias.
- ⚠️ ВАЖНО:
- • Аккредитация CAP/ISO: Подтверждение screening-specific QC procedures.
- 3. Positivity Dashboard: Мониторьте позитивность в реальном времени; настройте алерты при >2× expected.
URS — пользовательские требования
| ID | Требование | Критичность | Критерий приемки |
|---|
| URS-001 | Утилита должна принимать файл input.csv для Screening Assay Acceptance Checker с заголовками, определёнными в контракте данных. | High | Файл обрабатывается без ручного изменения заголовков. |
| URS-002 | Утилита должна выполнять детерминированную оценку QC/ОКК без машинного обучения и без вероятностного принятия решения о соответствии. | High | При одинаковых входных данных, версии правил и конфигурации результат полностью воспроизводим. |
| URS-003 | Утилита должна валидировать обязательные поля, типы данных, диапазоны, единицы измерения и предметную правдоподобность значений. | High | Ошибки схемы, преобразования и диапазона явно отражаются в результате. |
| URS-004 | Утилита должна применять предметные пределы и правила из описания, утверждённой спецификации, регистрационного досье и локальных SOP. | High | Каждая проверка имеет результат PASS/WARNING/FAIL и понятное сообщение. |
| URS-005 | Утилита должна формировать output.json с машинно-читаемыми результатами, исходными значениями, предупреждениями, отказами и критическими находками. | High | JSON пригоден для LIMS/ELN/MES-интеграции и QA/QC review. |
| URS-006 | Утилита должна сохранять трассируемость между серией/образцом, входным файлом, применёнными правилами и итоговым статусом. | High | Выход содержит идентификаторы, список параметров и audit metadata. |
| URS-007 | Документация должна поддерживать подготовку IQ/OQ/PQ, CSV/CSA и обсуждение с инспекторами или внутренним QA. | Medium | URS, FS, контракт input/output и тестовые сценарии поставляются вместе с утилитой. |
| URS-008 | Утилита должна использоваться как decision-support инструмент QC, а не как замена утверждённым спецификациям и выпускному решению Qualified Person/QA. | Medium | В документации указан контроль change control и необходимость сверки пределов. |
Контракт input.csv
| # | Поле | Тип | Пример | Назначение |
|---|
| 1 | RunID | string / controlled vocabulary | SCR-2026-0142 | Контролируемый входной параметр для детерминированных QC-правил. |
| 2 | AssayName | string / controlled vocabulary | OncoDetect_MC_v3 | Контролируемый входной параметр для детерминированных QC-правил. |
| 3 | ScreeningProgram | string / controlled vocabulary | MCED | Контролируемый входной параметр для детерминированных QC-правил. |
| 4 | Platform | string / controlled vocabulary | NovaSeq_6000 | Контролируемый входной параметр для детерминированных QC-правил. |
| 5 | RunDate | string / controlled vocabulary | 2026-06-08 | Контролируемый входной параметр для детерминированных QC-правил. |
| 6 | TotalSamples | string / controlled vocabulary | 96 | Идентификатор образца или лабораторной пробы. |
| 7 | ValidatedSensitivity_Percent | decimal | 82.5 | Контролируемый входной параметр для детерминированных QC-правил. |
| 8 | ValidatedSpecificity_Percent | decimal | 99.2 | Контролируемый входной параметр для детерминированных QC-правил. |
| 9 | ValidatedPPV_Percent | decimal | 52.0 | Контролируемый входной параметр для детерминированных QC-правил. |
| 10 | ValidatedNPV_Percent | decimal | 99.8 | Контролируемый входной параметр для детерминированных QC-правил. |
| 11 | ValidatedLOD_Unit | string / controlled vocabulary | 0.01 | Контролируемый входной параметр для детерминированных QC-правил. |
| 12 | LOD_UnitType | string / controlled vocabulary | VAF% | Контролируемый входной параметр для детерминированных QC-правил. |
| 13 | AllControls_Passed | string / controlled vocabulary | true | Контрольная точка/контрольный образец для валидности серии анализа. |
| 14 | LowPositiveControl_Passed | string / controlled vocabulary | true | Контрольная точка/контрольный образец для валидности серии анализа. |
| 15 | NegativeControl_Passed | string / controlled vocabulary | true | Контрольная точка/контрольный образец для валидности серии анализа. |
| 16 | NTC_Passed | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
| 17 | HighPositiveControl_Passed | string / controlled vocabulary | true | Контрольная точка/контрольный образец для валидности серии анализа. |
| 18 | LowPosControl_Recovery_Percent | decimal | 95.2 | Восстановление/извлечение; показатель валидности анализа. |
| 19 | MinLowPosControl_Recovery_Percent | decimal | 80 | Восстановление/извлечение; показатель валидности анализа. |
| 20 | NegControl_Signal_Mean | string / controlled vocabulary | 0.002 | Контрольная точка/контрольный образец для валидности серии анализа. |
| 21 | MaxNegControl_Signal | string / controlled vocabulary | 0.005 | Контрольная точка/контрольный образец для валидности серии анализа. |
| 22 | ScoreDistribution_Mean | integer / decimal | 0.14 | Контролируемый входной параметр для детерминированных QC-правил. |
| 23 | HistoricalScore_Mean | integer / decimal | 0.15 | Контролируемый входной параметр для детерминированных QC-правил. |
| 24 | ScoreDistribution_SD | decimal | 0.05 | Контролируемый входной параметр для детерминированных QC-правил. |
| 25 | HistoricalScore_SD | decimal | 0.05 | Контролируемый входной параметр для детерминированных QC-правил. |
| 26 | ScoreZScore_VsHistorical | decimal | -0.20 | Контролируемый входной параметр для детерминированных QC-правил. |
| 27 | MaxScoreZScore_Allowed | decimal | 2.0 | Контролируемый входной параметр для детерминированных QC-правил. |
| 28 | ScoreDistribution_Normal | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
| 29 | ObservedPositivityRate_Percent | decimal | 1.8 | Контролируемый входной параметр для детерминированных QC-правил. |
| 30 | ExpectedPositivityRate_Percent | decimal | 1.5 | Контролируемый входной параметр для детерминированных QC-правил. |
| 31 | PositivityRate_UpperCI95 | decimal | 5.2 | Контролируемый входной параметр для детерминированных QC-правил. |
| 32 | MaxPositivityDeviation_Fold | decimal | 3.0 | Контролируемый входной параметр для детерминированных QC-правил. |
| 33 | BatchEffect_Detected | string / controlled vocabulary | false | Идентификатор серии/партии для трассируемости. |
| 34 | PlatePositionEffect_Correlation | integer / decimal | 0.03 | Контролируемый входной параметр для детерминированных QC-правил. |
| 35 | MaxPlatePositionEffect_Correlation | integer / decimal | 0.1 | Контролируемый входной параметр для детерминированных QC-правил. |
| 36 | CV_IntraRun_Percent | decimal | 6.5 | Контролируемый входной параметр для детерминированных QC-правил. |
| 37 | MaxCV_IntraRun_Percent | decimal | 15 | Контролируемый входной параметр для детерминированных QC-правил. |
| 38 | SignalToNoise_Ratio | decimal | 28.0 | Отношение компонентов; структурный или рецептурный CQA. |
| 39 | MinSignalToNoise_Ratio | decimal | 10 | Отношение компонентов; структурный или рецептурный CQA. |
| 40 | CurrentThreshold_Value | decimal | 0.50 | Контролируемый входной параметр для детерминированных QC-правил. |
| 41 | ValidatedThreshold_Value | string / controlled vocabulary | 0.50 | Контролируемый входной параметр для детерминированных QC-правил. |
| 42 | Threshold_MatchesValidated | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
| 43 | ThresholdLock_Enabled | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
| 44 | ReagentLot_Verified | string / controlled vocabulary | true | Идентификатор серии/партии для трассируемости. |
| 45 | Calibration_Current | string / controlled vocabulary | true | Отношение компонентов; структурный или рецептурный CQA. |
| 46 | ProficiencyTesting_Current | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
| 47 | PipelineVersion_Validated | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
| 48 | AuditTrail_Complete | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
| 49 | DirectorReview_Completed | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
| 50 | SoftwareVersion | string / controlled vocabulary | v4.2.1 | Контролируемый входной параметр для детерминированных QC-правил. |
| 51 | SoftwareVersion_Locked | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
RunID,AssayName,ScreeningProgram,Platform,RunDate,TotalSamples,ValidatedSensitivity_Percent,ValidatedSpecificity_Percent,ValidatedPPV_Percent,ValidatedNPV_Percent,ValidatedLOD_Unit,LOD_UnitType,AllControls_Passed,LowPositiveControl_Passed,NegativeControl_Passed,NTC_Passed,HighPositiveControl_Passed,LowPosControl_Recovery_Percent,MinLowPosControl_Recovery_Percent,NegControl_Signal_Mean,MaxNegControl_Signal,ScoreDistribution_Mean,HistoricalScore_Mean,ScoreDistribution_SD,HistoricalScore_SD,ScoreZScore_VsHistorical,MaxScoreZScore_Allowed,ScoreDistribution_Normal,ObservedPositivityRate_Percent,ExpectedPositivityRate_Percent,PositivityRate_UpperCI95,MaxPositivityDeviation_Fold,BatchEffect_Detected,PlatePositionEffect_Correlation,MaxPlatePositionEffect_Correlation,CV_IntraRun_Percent,MaxCV_IntraRun_Percent,SignalToNoise_Ratio,MinSignalToNoise_Ratio,CurrentThreshold_Value,ValidatedThreshold_Value,Threshold_MatchesValidated,ThresholdLock_Enabled,ReagentLot_Verified,Calibration_Current,ProficiencyTesting_Current,PipelineVersion_Validated,AuditTrail_Complete,DirectorReview_Completed,SoftwareVersion,SoftwareVersion_Locked
SCR-2026-0142,OncoDetect_MC_v3,MCED,NovaSeq_6000,2026-06-08,96,82.5,99.2,52.0,99.8,0.01,VAF%,true,true,true,true,true,95.2,80,0.002,0.005,0.14,0.15,0.05,0.05,-0.20,2.0,true,1.8,1.5,5.2,3.0,false,0.03,0.1,6.5,15,28.0,10,0.50,0.50,true,true,true,true,true,true,true,true,v4.2.1,true
SCR-2026-0143,Neonatal_MSMS_Panel,Neonatal,Xevo_TQ-S,2026-06-09,192,99.0,99.5,45.0,99.99,0.5,umol/L,false,false,true,true,true,62.0,80,0.15,0.20,1.85,1.20,0.35,0.25,2.60,2.0,true,4.2,1.2,6.8,3.0,true,0.18,0.1,18.5,15,7.5,10,2.0,2.0,true,true,true,true,false,true,true,false,v3.1.0,true
Правила валидации входных данных
| ID | Поле | Правило | Критичность |
|---|
| VR-001 | RunID | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | High |
| VR-002 | AssayName | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | High |
| VR-003 | ScreeningProgram | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | High |
| VR-004 | Platform | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-005 | RunDate | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-006 | TotalSamples | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-007 | ValidatedSensitivity_Percent | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-008 | ValidatedSpecificity_Percent | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-009 | ValidatedPPV_Percent | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-010 | ValidatedNPV_Percent | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-011 | ValidatedLOD_Unit | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-012 | LOD_UnitType | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-013 | AllControls_Passed | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-014 | LowPositiveControl_Passed | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-015 | NegativeControl_Passed | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-016 | NTC_Passed | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-017 | HighPositiveControl_Passed | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-018 | LowPosControl_Recovery_Percent | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-019 | MinLowPosControl_Recovery_Percent | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-020 | NegControl_Signal_Mean | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-021 | MaxNegControl_Signal | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-022 | ScoreDistribution_Mean | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-023 | HistoricalScore_Mean | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-024 | ScoreDistribution_SD | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-025 | HistoricalScore_SD | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-026 | ScoreZScore_VsHistorical | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-027 | MaxScoreZScore_Allowed | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-028 | ScoreDistribution_Normal | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-029 | ObservedPositivityRate_Percent | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-030 | ExpectedPositivityRate_Percent | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-031 | PositivityRate_UpperCI95 | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-032 | MaxPositivityDeviation_Fold | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-033 | BatchEffect_Detected | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-034 | PlatePositionEffect_Correlation | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-035 | MaxPlatePositionEffect_Correlation | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-036 | CV_IntraRun_Percent | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-037 | MaxCV_IntraRun_Percent | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-038 | SignalToNoise_Ratio | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-039 | MinSignalToNoise_Ratio | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-040 | CurrentThreshold_Value | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-041 | ValidatedThreshold_Value | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-042 | Threshold_MatchesValidated | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-043 | ThresholdLock_Enabled | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-044 | ReagentLot_Verified | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-045 | Calibration_Current | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-046 | ProficiencyTesting_Current | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-047 | PipelineVersion_Validated | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-048 | AuditTrail_Complete | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-049 | DirectorReview_Completed | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-050 | SoftwareVersion | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-051 | SoftwareVersion_Locked | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
FS — функциональная спецификация
| ID | Функция | Реализация |
|---|
| FS-001 | CLI execution | Поддержать режимы запуска: demo mode без аргументов и production mode input.csv output.json. |
| FS-002 | CSV import | Прочитать input.csv в UTF-8/CSV-совместимом формате, проверить наличие заголовка и ожидаемых колонок. |
| FS-003 | Schema validation | Проверить обязательные поля, количество колонок, неизвестные ключевые поля и пустые обязательные значения. |
| FS-004 | Type conversion | Преобразовать числовые, флаговые и текстовые значения; некорректный формат фиксировать как ошибку строки. |
| FS-005 | Domain rule engine | Применить правила для Screening Assay Acceptance Checker, включая критические пределы из описания и утверждённой спецификации. |
| FS-006 | Status aggregation | Сформировать итоговый статус: FAIL при критическом отказе, WARNING при некритическом отклонении, PASS при соответствии. |
| FS-007 | JSON export | Записать output.json с детализацией проверок, исходными значениями, предупреждениями, отказами и critical findings. |
| FS-008 | Audit support | Сохранять структуру результата пригодной для review, расследования отклонений и воспроизведения расчёта. |
| FS-009 | Integration contract | Поддержать сценарий LIMS/ELN/MES → input.csv → utility → output.json → portal/admin review. |
| FS-010 | Error handling | Возвращать явные сообщения для отсутствующего файла, пустого CSV, неверной схемы, ошибки записи output.json и некорректного формата. |
Пример output.json
{
"utilityId": "screeningassayacceptancechecker",
"utilityFolder": "ScreeningAssayAcceptanceChecker",
"package": "LiquidBiopsy",
"overallStatus": "PASS|WARNING|FAIL",
"sourceFile": "input.csv",
"processedAtUtc": "2026-06-10T00:00:00Z",
"checks": [
{
"parameter": "RunID",
"value": "SCR-2026-0142",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-001"
},
{
"parameter": "AssayName",
"value": "OncoDetect_MC_v3",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-002"
},
{
"parameter": "ScreeningProgram",
"value": "MCED",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-003"
},
{
"parameter": "Platform",
"value": "NovaSeq_6000",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-004"
},
{
"parameter": "RunDate",
"value": "2026-06-08",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-005"
},
{
"parameter": "TotalSamples",
"value": "96",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-006"
},
{
"parameter": "ValidatedSensitivity_Percent",
"value": "82.5",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-007"
},
{
"parameter": "ValidatedSpecificity_Percent",
"value": "99.2",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-008"
},
{
"parameter": "ValidatedPPV_Percent",
"value": "52.0",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-009"
},
{
"parameter": "ValidatedNPV_Percent",
"value": "99.8",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-010"
},
{
"parameter": "ValidatedLOD_Unit",
"value": "0.01",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-011"
},
{
"parameter": "LOD_UnitType",
"value": "VAF%",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-012"
}
],
"criticalFindings": [],
"warnings": [],
"audit": {
"inputHash": "sha256:<calculated at runtime>",
"rulesVersion": "<utility executable version>",
"documentation": "ScreeningAssayAcceptanceChecker.documentation.html"
}
}
Матрица трассируемости
| URS | FS | Тест | Подтверждение |
|---|
| URS-001 | FS-001, FS-002 | OQ-001 | Проверить запуск и импорт валидного input.csv. |
| URS-002 | FS-005, FS-006 | OQ-004 | Повторить один и тот же набор данных и сравнить output.json. |
| URS-003 | FS-003, FS-004, FS-010 | OQ-002, OQ-003 | Проверить отсутствующие колонки и неверные типы. |
| URS-004 | FS-005, FS-006 | OQ-004, PQ-001 | Проверить критические отклонения по реальным/граничным данным. |
| URS-005 | FS-007, FS-009 | OQ-005 | Проверить JSON schema и пригодность для downstream-систем. |
| URS-006 | FS-008 | OQ-006 | Проверить наличие идентификаторов и audit metadata. |
| URS-007 | FS-008, FS-010 | IQ-001, OQ-007 | Проверить комплектность документации и control evidence. |
| URS-008 | FS-005, FS-008 | PQ-002 | Проверить review workflow и запрет автоматической замены QA-решения. |
IQ/OQ/PQ тестовые сценарии
| ID | Сценарий | Ожидаемый результат |
|---|
| IQ-001 | Проверить наличие executable, input.csv, документации и контрольной суммы. | Комплект поставки полон; версия зафиксирована. |
| OQ-001 | Валидная строка из примера input.csv. | PASS или допустимый WARNING согласно правилам. |
| OQ-002 | Удалить обязательную колонку из CSV. | Ошибка схемы или FAIL с указанием отсутствующей колонки. |
| OQ-003 | Внести нечисловое значение в числовое поле. | Ошибка преобразования типа с указанием строки/поля. |
| OQ-004 | Значение критического параметра вывести за предел. | FAIL и critical finding. |
| OQ-005 | Проверить структуру output.json. | Все обязательные секции присутствуют, JSON валиден. |
| OQ-006 | Проверить трассируемость серии/образца. | Идентификаторы входа и результатов совпадают. |
| PQ-001 | Проверить 3–5 реальных партий/образцов пользователя. | Результат подтверждён QC/QA review. |
| PQ-002 | Проверить workflow отклонения и ручного QA-решения. | Утилита поддерживает review, но не заменяет утверждённое решение. |
QA/QC и change control
- Не менять имена колонок без обновления валидатора, документации и тестового набора.
- Хранить
input.csv, output.json, версию исполняемого файла и контрольную сумму. - Перед продуктивным использованием провести IQ/OQ/PQ или эквивалентную CSV/CSA-проверку.
- Критические пределы должны быть сверены с утверждённой спецификацией, регистрационным досье и локальными SOP.
- Утилита предоставляет формализованный QC decision support, но окончательное решение выпуска остаётся за QA/QP и утверждёнными процедурами.