SampleIdentityConsistencyChecker
Sample Identity Consistency
Описание утилиты: Sample Identity Consistency
Sample Identity Consistency Checker — Многоуровневая верификация идентичности образцов
ℹ️ Утилита выполняет комплексную проверку идентичности согласно CAP/CLIA §GEN.48800, ISO 15189 §7.3.2, CLSI GP44-A2 и Joint Commission NPSG.01.01.01:
ДЕМОГРАФИЧЕСКАЯ СОГЛАСОВАННОСТЬ:
• Patient Name: Совпадение между направлением и LIMS.
• Date of Birth: Идентичность даты рождения в обоих источниках.
• Sex: Согласованность заявленного пола.
• MRN: Совпадение медицинского номера записи.
• ⚠ Любое несовпадение = потенциальная ошибка идентификации.
ШТРИХ-КОДЫ НА ВСЕХ ЭТАПАХ:
• Sample Tube → Extraction Plate → Library Plate → Sequencing Flow Cell.
• All Match: Все баркоды соответствуют одному образцу.
• Readable All Stages: Баркоды читаемы на каждом этапе (нет ручной транскрипции).
• Mismatch на любом этапе = возможная подмена при обработке.
ГЕНЕТИЧЕСКИЙ ФИНГЕРПРИНТ:
• SNP Panel Concordance Score ≥ 0.95: Сравнение с референсным профилем или предыдущим образцом пациента.
• Score < 0.95 = ПОДОЗРЕНИЕ НА ПОДМЕНУ ИЛИ КОНТАМИНАЦИЮ.
• Discordant SNPs > 2 = идентичность под вопросом.
ГЕНЕТИЧЕСКИЙ ПОЛ:
• XX/XY determination vs declared sex.
• Mismatch = возможная подмена, DSD (disorder of sex development) или ошибка ввода данных.
• Требует расследования, но не автоматически означает подмену.
CHAIN OF CUSTODY:
• Complete: Все передачи образца документированы.
• Gap Description: Описание отсутствующих записей о передаче.
• Неполная CoC = период необработанного обращения с образцом.
МЕТАДАННЫЕ И ПРАВДОПОДОБНОСТЬ:
• Collection Date Plausible: Не будущая дата, не невозможный возраст.
• Age at Collection Plausible: DOB согласована с датой сбора.
• Sex Consistent Across Sources: Реquisition, LIMS, генетический пол.
• Duplicate Accession: Один номер акцессии для нескольких образцов = критическая ошибка.
• Unexpected Sample Type: Заказана ткань, получена кровь (или наоборот).
ПРЕДЫДУЩИЕ РЕЗУЛЬТАТЫ:
• Prior Genotype Concordance: Общие варианты совпадают с предыдущим тестированием пациента.
• Discordance = ВЫСОКАЯ ВЕРОЯТНОСТЬ ПОДМЕНЫ ОБРАЗЦА.
⚠️ ВАЖНО:
• Ошибки идентификации — причина ~10% серьезных лабораторных инцидентов.
• ЛЮБОЕ расхождение = ЗАДЕРЖКА ВЫДАЧИ до завершения расследования.
• SUSPECTED_SWAP = НЕМЕДЛЕННАЯ ОСТАНОВКА + изоляция образца + уведомление директора.
• Генетический фингерпринт — наиболее надежный метод верификации; используйте при возможности.
• Ручная транскрипция баркодов увеличивает риск ошибок на порядок.
• Для герминальных тестов сравнение с предыдущими результатами обязательно при наличии истории.
• Sex mismatch может быть биологическим (DSD, трансплантация); не всегда означает ошибку.
Использование:
SampleIdentityConsistencyChecker.exe → демо-режим (вывод в консоль)
SampleIdentityConsistencyChecker.exe input.csv output.json → оценка ваших данных
📍 Область применения:
• Клинические лаборатории: Обязательная верификация перед выдачей каждого результата.
• Аккредитация CAP/ISO: Документирование patient identification procedures.
• Расследование инцидентов: Ретроспективная проверка при подозрении на ошибку.
• Биобанки: Верификация идентичности хранимых образцов.
• Мультицентровые trials: Контроль идентичности при передаче между сайтами.
💡 Советы:
1. Two-Identifier Policy: Всегда используйте минимум два идентификатора (имя + DOB или MRN).
2. Barcode Automation: Минимизируйте ручную транскрипцию; используйте сканеры на каждом этапе.
3. Genetic Fingerprint Panel: Внедрите стандартную панель 24+ SNP для рутинной верификации.
4. Sex Check Automation: Автоматически сравнивайте генетический пол с заявленным в LIMS.
5. Incident Protocol: Разработайте SOP для действий при SUSPECTED_SWAP (quarantine, notify, investigate, document).
⚠️ Примечание: Утилита выполняет ВЕРИФИКАЦИЮ ИДЕНТИЧНОСТИ на основе доступных данных. Она не гарантирует абсолютную корректность; отсутствие расхождений ≠ гарантия правильной идентификации. Комбинация методов (демография + баркоды + генетика + CoC) обеспечивает максимальную надежность. Решения о выдаче результатов при DISCREPANCY принимаются лабораторным директором после расследования.input.csv
SampleID,PatientID,AssayName,Req_PatientName,Req_DateOfBirth,Req_Sex,Req_MRN,Req_OrderingProvider,LIMS_PatientName,LIMS_DateOfBirth,LIMS_Sex,LIMS_MRN,LIMS_AccessionNumber,Barcode_SampleTube,Barcode_ExtractionPlate,Barcode_LibraryPlate,Barcode_SequencingFlowCell,Barcode_AllMatch,Barcode_Readable_AllStages,GeneticFingerprint_Performed,GeneticFingerprint_MatchScore,MinGeneticFingerprint_MatchScore,GeneticSex_Determined,GeneticSex_MatchesDeclared,SNPs_Checked,SNPs_Concordant,ChainOfCustody_Complete,CustodyTransfers_Count,AllTransfers_Documented,CustodyGap_Description,CollectionDate_Plausible,AgeAtCollection_Plausible,SexConsistent_AcrossSources,DuplicateAccession_Detected,UnexpectedSampleType,PriorResults_Available,PriorGenotype_Concordant,PriorDiscordance_Details ID-2026-001,PAT-LUNG-042,NSCLC_CGP,Ivanov Ivan,1965-03-15,M,MRN-12345,Dr. Petrov,Ivanov Ivan,1965-03-15,M,MRN-12345,ACC-2026-0891,BC-TUBE-0891,BC-EXT-0891,BC-LIB-0891,BC-FC-0891,true,true,true,0.998,0.95,XY,true,24,24,true,4,true,,true,true,true,false,false,true,true, ID-2026-002,PAT-CRC-055,CRC_Panel,Smirnova Anna,1978-07-22,F,MRN-67890,Dr. Sidorova,Smirnova Anna,1978-07-22,F,MRN-67890,ACC-2026-0892,BC-TUBE-0892,BC-EXT-0892,BC-LIB-0893,BC-FC-0892,false,true,true,0.97,0.95,XY,false,24,23,true,4,true,,true,true,false,false,false,false,, ID-2026-003,PAT-BRCA-061,BRCA1_2_Germline,Kozlova Maria,1985-11-03,F,MRN-11111,Dr. Ivanova,Kozlova Maria,1985-11-03,F,MRN-11111,ACC-2026-0893,BC-TUBE-0893,BC-EXT-0893,BC-LIB-0893,BC-FC-0893,true,true,true,0.72,0.95,XX,true,24,17,false,5,false,Missing transfer record between extraction and library prep,true,true,true,false,false,true,false,3/24 SNPs discordant with prior germline test from 2025-08
URS & FS — спецификация пользователя и функциональная спецификация
Документ описывает контролируемый интерфейс и поведение утилиты SampleIdentityConsistencyChecker для сценария Sample Identity Consistency Checker.
Предметные ограничения и критические параметры
- ℹ️ Утилита выполняет комплексную проверку идентичности согласно CAP/CLIA §GEN.48800, ISO 15189 §7.3.2, CLSI GP44-A2 и Joint Commission NPSG.01.01.01:
- • SNP Panel Concordance Score ≥ 0.95: Сравнение с референсным профилем или предыдущим образцом пациента.
- • Score < 0.95 = ПОДОЗРЕНИЕ НА ПОДМЕНУ ИЛИ КОНТАМИНАЦИЮ.
- • Discordant SNPs > 2 = идентичность под вопросом.
- • Mismatch = возможная подмена, DSD (disorder of sex development) или ошибка ввода данных.
- • Duplicate Accession: Один номер акцессии для нескольких образцов = критическая ошибка.
- ⚠️ ВАЖНО:
- • SUSPECTED_SWAP = НЕМЕДЛЕННАЯ ОСТАНОВКА + изоляция образца + уведомление директора.
- • Аккредитация CAP/ISO: Документирование patient identification procedures.
- 5. Incident Protocol: Разработайте SOP для действий при SUSPECTED_SWAP (quarantine, notify, investigate, document).
URS — пользовательские требования
| ID | Требование | Критичность | Критерий приемки |
|---|---|---|---|
| URS-001 | Утилита должна принимать файл input.csv для Sample Identity Consistency 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 | SampleID | string / controlled vocabulary | ID-2026-001 | Идентификатор образца или лабораторной пробы. |
| 2 | PatientID | string / controlled vocabulary | PAT-LUNG-042 | Контролируемый входной параметр для детерминированных QC-правил. |
| 3 | AssayName | string / controlled vocabulary | NSCLC_CGP | Контролируемый входной параметр для детерминированных QC-правил. |
| 4 | Req_PatientName | string / controlled vocabulary | Ivanov Ivan | Контролируемый входной параметр для детерминированных QC-правил. |
| 5 | Req_DateOfBirth | string / controlled vocabulary | 1965-03-15 | Контролируемый входной параметр для детерминированных QC-правил. |
| 6 | Req_Sex | string / controlled vocabulary | M | Контролируемый входной параметр для детерминированных QC-правил. |
| 7 | Req_MRN | string / controlled vocabulary | MRN-12345 | Контролируемый входной параметр для детерминированных QC-правил. |
| 8 | Req_OrderingProvider | string / controlled vocabulary | Dr. Petrov | Контролируемый входной параметр для детерминированных QC-правил. |
| 9 | LIMS_PatientName | string / controlled vocabulary | Ivanov Ivan | Контролируемый входной параметр для детерминированных QC-правил. |
| 10 | LIMS_DateOfBirth | string / controlled vocabulary | 1965-03-15 | Контролируемый входной параметр для детерминированных QC-правил. |
| 11 | LIMS_Sex | string / controlled vocabulary | M | Контролируемый входной параметр для детерминированных QC-правил. |
| 12 | LIMS_MRN | string / controlled vocabulary | MRN-12345 | Контролируемый входной параметр для детерминированных QC-правил. |
| 13 | LIMS_AccessionNumber | string / controlled vocabulary | ACC-2026-0891 | Контролируемый входной параметр для детерминированных QC-правил. |
| 14 | Barcode_SampleTube | string / controlled vocabulary | BC-TUBE-0891 | Идентификатор образца или лабораторной пробы. |
| 15 | Barcode_ExtractionPlate | string / controlled vocabulary | BC-EXT-0891 | Контролируемый входной параметр для детерминированных QC-правил. |
| 16 | Barcode_LibraryPlate | string / controlled vocabulary | BC-LIB-0891 | Контролируемый входной параметр для детерминированных QC-правил. |
| 17 | Barcode_SequencingFlowCell | string / controlled vocabulary | BC-FC-0891 | Контролируемый входной параметр для детерминированных QC-правил. |
| 18 | Barcode_AllMatch | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
| 19 | Barcode_Readable_AllStages | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
| 20 | GeneticFingerprint_Performed | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
| 21 | GeneticFingerprint_MatchScore | decimal | 0.998 | Контролируемый входной параметр для детерминированных QC-правил. |
| 22 | MinGeneticFingerprint_MatchScore | decimal | 0.95 | Контролируемый входной параметр для детерминированных QC-правил. |
| 23 | GeneticSex_Determined | string / controlled vocabulary | XY | Контролируемый входной параметр для детерминированных QC-правил. |
| 24 | GeneticSex_MatchesDeclared | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
| 25 | SNPs_Checked | decimal | 24 | Контролируемый входной параметр для детерминированных QC-правил. |
| 26 | SNPs_Concordant | decimal | 24 | Контролируемый входной параметр для детерминированных QC-правил. |
| 27 | ChainOfCustody_Complete | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
| 28 | CustodyTransfers_Count | integer / decimal | 4 | Счётный показатель; используется для микробиологического, частичного или клеточного контроля. |
| 29 | AllTransfers_Documented | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
| 30 | CustodyGap_Description | string / controlled vocabulary | | Контролируемый входной параметр для детерминированных QC-правил. |
| 31 | CollectionDate_Plausible | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
| 32 | AgeAtCollection_Plausible | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
| 33 | SexConsistent_AcrossSources | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
| 34 | DuplicateAccession_Detected | string / controlled vocabulary | false | Контролируемый входной параметр для детерминированных QC-правил. |
| 35 | UnexpectedSampleType | string / controlled vocabulary | false | Идентификатор образца или лабораторной пробы. |
| 36 | PriorResults_Available | string / controlled vocabulary | true | Результат или статус, применяемый в итоговой классификации. |
| 37 | PriorGenotype_Concordant | string / controlled vocabulary | true | Контролируемый входной параметр для детерминированных QC-правил. |
| 38 | PriorDiscordance_Details | string / controlled vocabulary | | Контролируемый входной параметр для детерминированных QC-правил. |
SampleID,PatientID,AssayName,Req_PatientName,Req_DateOfBirth,Req_Sex,Req_MRN,Req_OrderingProvider,LIMS_PatientName,LIMS_DateOfBirth,LIMS_Sex,LIMS_MRN,LIMS_AccessionNumber,Barcode_SampleTube,Barcode_ExtractionPlate,Barcode_LibraryPlate,Barcode_SequencingFlowCell,Barcode_AllMatch,Barcode_Readable_AllStages,GeneticFingerprint_Performed,GeneticFingerprint_MatchScore,MinGeneticFingerprint_MatchScore,GeneticSex_Determined,GeneticSex_MatchesDeclared,SNPs_Checked,SNPs_Concordant,ChainOfCustody_Complete,CustodyTransfers_Count,AllTransfers_Documented,CustodyGap_Description,CollectionDate_Plausible,AgeAtCollection_Plausible,SexConsistent_AcrossSources,DuplicateAccession_Detected,UnexpectedSampleType,PriorResults_Available,PriorGenotype_Concordant,PriorDiscordance_Details ID-2026-001,PAT-LUNG-042,NSCLC_CGP,Ivanov Ivan,1965-03-15,M,MRN-12345,Dr. Petrov,Ivanov Ivan,1965-03-15,M,MRN-12345,ACC-2026-0891,BC-TUBE-0891,BC-EXT-0891,BC-LIB-0891,BC-FC-0891,true,true,true,0.998,0.95,XY,true,24,24,true,4,true,,true,true,true,false,false,true,true, ID-2026-002,PAT-CRC-055,CRC_Panel,Smirnova Anna,1978-07-22,F,MRN-67890,Dr. Sidorova,Smirnova Anna,1978-07-22,F,MRN-67890,ACC-2026-0892,BC-TUBE-0892,BC-EXT-0892,BC-LIB-0893,BC-FC-0892,false,true,true,0.97,0.95,XY,false,24,23,true,4,true,,true,true,false,false,false,false,, ID-2026-003,PAT-BRCA-061,BRCA1_2_Germline,Kozlova Maria,1985-11-03,F,MRN-11111,Dr. Ivanova,Kozlova Maria,1985-11-03,F,MRN-11111,ACC-2026-0893,BC-TUBE-0893,BC-EXT-0893,BC-LIB-0893,BC-FC-0893,true,true,true,0.72,0.95,XX,true,24,17,false,5,false,Missing transfer record between extraction and library prep,true,true,true,false,false,true,false,3/24 SNPs discordant with prior germline test from 2025-08
Правила валидации входных данных
| ID | Поле | Правило | Критичность |
|---|---|---|---|
| VR-001 | SampleID | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | High |
| VR-002 | PatientID | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | High |
| VR-003 | AssayName | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | High |
| VR-004 | Req_PatientName | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-005 | Req_DateOfBirth | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-006 | Req_Sex | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-007 | Req_MRN | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-008 | Req_OrderingProvider | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-009 | LIMS_PatientName | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-010 | LIMS_DateOfBirth | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-011 | LIMS_Sex | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-012 | LIMS_MRN | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-013 | LIMS_AccessionNumber | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-014 | Barcode_SampleTube | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-015 | Barcode_ExtractionPlate | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-016 | Barcode_LibraryPlate | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-017 | Barcode_SequencingFlowCell | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-018 | Barcode_AllMatch | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-019 | Barcode_Readable_AllStages | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-020 | GeneticFingerprint_Performed | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-021 | GeneticFingerprint_MatchScore | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-022 | MinGeneticFingerprint_MatchScore | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-023 | GeneticSex_Determined | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-024 | GeneticSex_MatchesDeclared | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-025 | SNPs_Checked | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-026 | SNPs_Concordant | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-027 | ChainOfCustody_Complete | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-028 | CustodyTransfers_Count | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-029 | AllTransfers_Documented | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-030 | CustodyGap_Description | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-031 | CollectionDate_Plausible | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-032 | AgeAtCollection_Plausible | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-033 | SexConsistent_AcrossSources | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-034 | DuplicateAccession_Detected | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-035 | UnexpectedSampleType | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-036 | PriorResults_Available | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-037 | PriorGenotype_Concordant | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | Medium |
| VR-038 | PriorDiscordance_Details | Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме. | 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 | Применить правила для Sample Identity Consistency 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": "sampleidentityconsistencychecker",
"utilityFolder": "SampleIdentityConsistencyChecker",
"package": "LiquidBiopsy",
"overallStatus": "PASS|WARNING|FAIL",
"sourceFile": "input.csv",
"processedAtUtc": "2026-06-10T00:00:00Z",
"checks": [
{
"parameter": "SampleID",
"value": "ID-2026-001",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-001"
},
{
"parameter": "PatientID",
"value": "PAT-LUNG-042",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-002"
},
{
"parameter": "AssayName",
"value": "NSCLC_CGP",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-003"
},
{
"parameter": "Req_PatientName",
"value": "Ivanov Ivan",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-004"
},
{
"parameter": "Req_DateOfBirth",
"value": "1965-03-15",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-005"
},
{
"parameter": "Req_Sex",
"value": "M",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-006"
},
{
"parameter": "Req_MRN",
"value": "MRN-12345",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-007"
},
{
"parameter": "Req_OrderingProvider",
"value": "Dr. Petrov",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-008"
},
{
"parameter": "LIMS_PatientName",
"value": "Ivanov Ivan",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-009"
},
{
"parameter": "LIMS_DateOfBirth",
"value": "1965-03-15",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-010"
},
{
"parameter": "LIMS_Sex",
"value": "M",
"status": "PASS|WARNING|FAIL",
"message": "Deterministic rule-based check result",
"ruleReference": "FS-RULE-011"
},
{
"parameter": "LIMS_MRN",
"value": "MRN-12345",
"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": "SampleIdentityConsistencyChecker.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 и утверждёнными процедурами.
Входит в пакеты
Биофармацевтика расширенная
Расширенный coverage-пакет QC-утилит для mAb, биоаналогов, белков, инсулинов, вакцин, mRNA/LNP, HCP, стерильного выпуска, микробиологии, воды, cleanroom и стабильности.
ОткрытьИммунология
Пакет QC-утилит для иммунологии: моноклональные антитела, биоаналоги, иммуномодуляторы, иммуносупрессанты, ELISA/SPR, HCP, белковая характеристика, стерильность и pyrogen/release checks.
ОткрытьИнфекционистика
Пакет QC-утилит для инфекционистики: антибактериальные, противовирусные, противогрибковые и противопаразитарные продукты, микробиология, стерильность, эндотоксины, вирусная безопасность, вакцинные release-checks.
ОткрытьЖидкостная биопсия
Пакет для QC и преданалитического контроля жидкостной биопсии: cfDNA/ctDNA, CTC, EV/exosomes, метилирование, NGS/qPCR/ddPCR, контроль образцов, контаминации, чувствительности и отчётности.
Открыть