제2장

제2장: 세포 원천과 GMP 제조 공정

세포치료제의 품질은 출발 물질과, 그 물질을 투여 용량으로 바꾸는 공정의 품질을 넘어설 수 없다. 이 장은 WIA-BIO-005 §2.4와 §3을 따라 공여자 선별에서 수확 백까지를 살펴본다. 표준이 전제하는 시설과 장비, CAR-T 제조의 각 단계, 증식 배수 계산, SDK가 감시하는 핵심 공정 변수, 그리고 배치를 계속 진행할지 결정하는 공정 중 시험 지점이 차례로 다뤄진다.

이 장의 수치를 읽는 법. 아래에 인용하는 모든 기준값은 WIA-BIO-005 v1.0이 담고 있는 값이다. 제조 담당자와 소프트웨어 엔지니어가 같은 값을 기준으로 배치 기록을 대조할 수 있도록 옮겨 적은 것이며, 작업 지시가 아니다. 허가받은 제품의 승인된 제조 공정, 규제 제출 자료, 그리고 해당 시설의 밸리데이션된 절차가 언제나 우선한다. 규격 자체에 오류나 내부 모순이 있는 곳은 본문에서 그렇다고 명시한다.

2.1 공여자 선별과 출발 물질

제조는 청정실에서 시작되지 않는다. 공여자와 채집물이 받아들일 만한지 판단하는 데서 시작된다. WIA-BIO-005 §2.4는 이 판단을 두 부분으로 나눈다. 하나는 전파성 감염에 대한 공여자 선별이고, 다른 하나는 채집된 세포 자체를 출발 물질로 적격 판정하는 일이다.

감염성 질환 선별

§2.4.1은 표준이 요구하는 검사 목록을 제시한다. 이 목록은 혈액·조직 규제 당국이 수렴해 온 표지와 같은 흐름에 있다. 세포치료제는 정맥으로 투여되고, 저분자 의약품이나 혈장 유래 의약품처럼 최종 멸균이나 바이러스 불활화를 거칠 수 없기 때문이다. 세포와 함께 공정에 들어온 것은 세포와 함께 공정을 빠져나간다.

대상 병원체§2.4.1의 검사두 종류의 검사를 쓰는 이유
HIV-1/2항체 및 핵산증폭검사(NAT)NAT는 최근 감염이 아직 항체 양성으로 나타나지 않는 공백기(window period)를 줄인다.
B형 간염표면항원(HBsAg) 및 코어항체(anti-HBc)HBsAg는 활동성 감염을, anti-HBc는 과거 감염이나 잠복 감염까지 드러낸다.
C형 간염항체 및 NATHIV와 같은 공백기 논리이다.
HTLV-I/II항체림프구 친화성 바이러스로, 림프구 제품과 직접 관련된다.
매독RPR 또는 동등 검사기관 관행에 따라 트레포네마 또는 비트레포네마 선별 검사를 쓴다.
CMV항체, 동종 제품에 한함자동 배제 기준이라기보다 공여자-수혜자 매칭과 투여 후 감시에 쓰이는 정보이다.

여기서 자가와 동종의 구분이 중요하다. 자가 제품에서 "공여자"는 환자 자신이므로, 동종 조직에 요구되는 공여자 적격성 판정은 같은 방식으로 적용되지 않는다. 미국에서는 21 CFR 1271.90이 자가 사용 세포에 대한 예외를 둔다. 그래도 많은 시설이 자가 채집물을 검사한다. 환자를 배제하기 위해서가 아니라, 다른 환자의 배치를 오염시키지 않도록 그 물질을 어떻게 분리·표시·취급할지 정하기 위해서이다. 따라서 구현자는 선별 결과를 하나의 예/아니오 관문이 아니라 채집물에 딸린 데이터로 모델링하고, 자가 채집물에서 반응성 결과가 나왔을 때의 처리는 시설 절차가 결정하도록 두어야 한다.

출발 물질 적격 기준

§2.4.2는 이어서 채집물 자체를 판정한다. 세 가지 값이 제시된다.

SDK에서 이 값들은 ManufacturingProcess의 startingMaterial 블록, 즉 totalCells, viability, 선택 항목인 cd3Percent와 cd56Percent에 담긴다. 현재 SDK는 이 블록을 평가하지 않고 추적성을 위해 기록만 한다. §2.4.2를 강제하려는 시스템은 이 검사를 직접 추가해야 한다. 작은 작업이지만 중요하다. 출발 물질 기준에 미달한 배치가 활성화 단계에 도달해서는 안 되기 때문이다.

2.2 시설: 청정실 구역 설정

세포치료제는 무균 공정으로 제조된다. 최종 멸균 단계가 없으므로, 노출된 제품 가까이에 오는 공기·표면·사람·자재를 통제하여 무균성을 공정 안에 만들어 넣어야 한다. §3.1.1은 이를 세 등급의 청정실으로 정리한다.

§3.1.1의 구역ISO 14644-1 등급옛 명칭≥0.5 µm 입자 최대 개수(/m³)일반적 용도
핵심 공정(개방 세포 배양)ISO 5"Class 100"3,520제품이 노출되는 생물안전작업대 또는 아이솔레이터 내부
지원 구역ISO 7"Class 10,000"352,000작업대를 둘러싼 배경 구역, 자재 준비
에어록 / 갱의실ISO 8"Class 100,000"3,520,000사람과 자재가 들어오는 전이 공간

"Class 100" 식 명칭은 미국 연방 표준 209E에서 왔으며, 이 표준은 ISO 14644-1로 대체되어 폐지되었다. 그래도 일상 대화와 옛 문서에 남아 있어 규격도 두 표기를 함께 적는다. 환경 모니터링 데이터를 저장하는 소프트웨어는 ISO 등급을 정규 값으로 쓰고, 옛 명칭은 표시용 라벨로만 다뤄야 한다. 표의 입자 수는 등급이 한 단계 오를 때마다 10배가 되는 ISO 14644-1 등급 공식에서 나온다.

§3.1.1의 정오표. 규격은 ISO 5에 대해 "≥5.0 µm 입자: ≤29 /m³"와 "생균: 평판당 ≤1 CFU"도 적고 있다. 두 줄 모두 대체된 옛 문구에서 온 것이다. 현행 ISO 14644-1(2015)은 ISO 5에 5 µm 한도를 두지 않으며, 현행 EU GMP Annex 1(2022)은 Grade A에서 집락 1개를 허용하는 것이 아니라 미생물이 검출되지 않을 것을 기대한다. 따라서 이 책은 규격의 3,520 /m³(≥0.5 µm) 한도만 사용하고, 미생물 한도는 시설에 적용되는 현행 EU GMP Annex 1과 FDA 무균 공정 가이드를 따르도록 한다.

환경 모니터링은 방이 여전히 적격성 평가를 받은 그 상태라는 것을 계속 입증하는 일이다. 비생균 입자 계수, 부유균 채취, 표면의 낙하균·접촉 평판, 장갑과 작업복에 대한 작업자 모니터링이 함께 쓰인다. 결과는 한도와 비교될 뿐 아니라 추세로도 분석된다. 필터, 차압 단계, 갱의 습관이 나빠지고 있다는 첫 신호는 흔히 수치의 완만한 상승으로 나타나기 때문이다. 정보 시스템 입장에서 이는 환경 모니터링 결과를 방과 배치에 연결된 시계열로 저장해야 한다는 뜻이다. 그래야 나중에 배치를 조사할 때 그 배치가 노출되었던 조건을 재구성할 수 있다.

2.3 장비와 적격성 평가

§3.1.2는 다섯 범주의 핵심 장비와, 그 모두에 적용되는 적격성 평가 체계를 제시한다.

장비§3.1.2의 요구그 요구가 지키는 것
생물안전작업대Class II, Type A2 또는 B2ISO 5 작업 구역을 만들고 작업자를 보호한다. B2는 전량 배기, A2는 일부 공기를 재순환한다.
배양기37 °C ± 0.5 °C, CO₂ 5% ± 0.5%온도는 대사 속도를 좌우하고, CO₂는 중탄산 완충계와 평형을 이루어 pH를 유지한다.
원심분리기세포 처리용으로 밸리데이션됨과도한 전단력이나 세포 손실 없이 세척·농축한다.
세포 계수기자동식, 생존율 측정 기능 포함증식 배수와 용량 계산을 위한 재현성 있는 계수(방법 비교는 제3장).
극저온 보관 장비−150 °C 이하동결 매질의 유리 전이 구간 아래로, 생물학적 활동이 사실상 멈추는 온도이다.

규격이 명시하는 적격성 평가 순서는 IQ, OQ, PQ이며 이후 매년 재평가한다. 설치 적격성 평가(IQ)는 올바른 장비가 사양대로 들어와 설치되었는지 확인한다. 유틸리티, 연결, 소프트웨어 버전, 문서가 대상이다. 운전 적격성 평가(OQ)는 의도한 운전 범위 전체에서 장비가 작동함을 보인다. 배양기가 설정값에 도달하고 유지하는지, 경보가 울려야 할 때 울리는지, 작업대의 기류가 인증 기준을 만족하는지가 여기에 속한다. 성능 적격성 평가(PQ)는 실제 조건에서 장비가 제 역할을 하는지 보인다. 예를 들어 평소처럼 문을 여닫는 부하 운전 중에도 배양기가 대표 배양물을 한도 안에 유지하는지를 확인한다.

연간 주기가 소프트웨어에 중요한 이유는, 배치는 해당 장비를 사용한 날짜에 적격성 평가가 유효했던 장비에 대해서만 기록되어야 하기 때문이다. 적격성 만료일을 담은 장비 대장을 두고 배치 단계를 기록할 때 이를 확인하면, 이 규칙은 서류 관행에서 강제되는 통제로 바뀐다. 제8장은 "장비"가 소프트웨어 시스템 자체일 때 같은 IQ/OQ/PQ 논리를 다시 다룬다.

2.4 CAR-T 제조 공정 단계별 해설

§2.1.1과 §3.2는 함께 대표적인 자가 CAR-T 공정을 기술한다. CAR-T 제조 기간은 10–14일로 제시된다. 아래 단계는 규격의 순서를 따르며, 괄호 안의 단계명은 SDK가 쓰는 ManufacturingStage 값이다. 제6장은 이 값들을 상태 기계로 다룬다.

채집 [collection]

백혈구성분채집술은 약 4–6시간에 걸쳐 환자 혈액에서 단핵세포를 모은다(§2.1.1). 채집물은 제조 시설로 운송되며, 병상에서 확립된 신원 연속성은 모든 튜브와 백에 그대로 이어져야 한다. 이 시점부터 환자 식별자와 배치 식별자는 함께 움직인다.

T세포 분리와 활성화 [activation]

혈액 속 T세포는 휴지 상태에 있다. 효율적으로 형질도입되고 증식하려면 활성화되어야 하며, §3.2.1은 CD3/CD28 비드 또는 항-CD3 항체로 24–48시간 동안 이를 수행한다. CD3 신호는 T세포 수용체를 통한 항원 인식을 흉내 내고, CD28은 세포가 무반응 상태에 빠지지 않고 다음 단계로 나아가게 하는 공동자극 신호를 준다. 목표는 초기 활성화 표지인 CD25와 CD69로 측정한 활성화 세포가 50%를 넘는 것이다.

비드와 세포의 비율은 활성화 시스템 공급사가 정하며, 흔히 비드:세포 1:1 또는 3:1 정도가 쓰인다. 이 부분의 규격 문구("1:3 (cells:beads) or 3:1 (cells:beads)")는 스스로 모순되므로, 구현자는 그 줄을 옮겨 적지 말고 방향(비드:세포)을 명시한 자유 변수로 비율을 기록해야 한다.

유전자 변형 [transduction]

§3.2.2는 CAR 구조체를 도입하는 두 경로를 제시한다.

증식 [expansion]

형질도입된 세포는 임상적으로 쓸 수 있는 수에 이르도록 7–10일간 증식된다(§3.2.3). 규격은 X-VIVO 15 또는 AIM-V 배지에 IL-2 100 IU/mL을 더하고, 0.5–1.0 × 10⁶ cells/mL로 파종하며, 48–72시간마다 배지를 보충한다고 적는다. 배지 보충은 소모된 배지와 사이토카인을 채우는 일이면서 밀도를 관리하는 수단이기도 하다. 세포가 분열함에 따라 새 배지를 넣거나 더 큰 용기로 옮겨, 밀도가 핵심 공정 변수 범위(아래 2.6절) 안에 머물게 한다. 목표 증식 배수는 100–1,000배이며, CAR-T의 최소 기준은 100배 이상이다.

수확과 제형화 [harvest]

수확 단계(§3.2.4)에서 세포는 생리식염수 또는 PlasmaLyte로 2–3회 세척되어 배지, 사이토카인, 남은 활성화 시약이 제거되고, 1–10 × 10⁷ cells/mL로 농축되어 백당 10–50 mL로 충전된다. 동결보호제도 이 단계에서 더해진다. 최종 제형은 단백질을 포함한 담체에 DMSO 10%를 담고, 선택적으로 덱스트란-40을 포함한다. 속도 제어 동결과 보관을 포함한 동결보존 자체는 제6장의 주제이며, 여기서는 제조 기록을 마무리하는 단계로서만 언급한다. 전체 출하 시험 검체는 제형화된 최종 제품에서 채취한다(제3장).

일정표로 본 공정

아래 그림은 예시로 든 12일짜리 배치의 단계를 날짜 축 위에 배치한 것이다. 실제 공정은 위의 범위 안에서 달라진다. 요점은 단계의 순서와 겹침, 그리고 각 공정 중 시험이 어디에 놓이는지이다.

예시 CAR-T 배치 (0일 = 활성화 시작)

일차          0    1    2    3    4    5    6    7    8    9   10   11   12   13   14
              |----|----|----|----|----|----|----|----|----|----|----|----|----|----|
채집        ##                                      (백혈구성분채집, 4-6시간, 0일 이전)
활성화        ##########                            (24-48시간, CD3/CD28)
형질도입           ##########                       (벡터 또는 전기천공)
증식                    ######################################  (7-10일, 48-72시간마다 보충)
수확                                                      #####  (세척, 제형화, 충전)
동결                                                          ###  (제6장 참조)

공정 중       T0        T2        T4                  T7                  T10-14
시험 지점     생존율    CD25/     CAR+ ≥30%           세포 수, 생존율     전체 출하
              ≥85%      CD69 ≥50%                     >80%                시험(§4.2)

2.5 증식 배수 계산

증식은 연필과 종이로 확인할 수 있는 유일한 제조 지표이며, 실제로 확인해 볼 가치가 있다. 세포 수, 배양 부피, 시간이 한데 묶여 있어서 비현실적인 배치 기록이 금방 드러나기 때문이다.

증식 배수(§3.2.3)

Expansion Ratio = 최종 세포 수 ÷ 초기 세포 수

CAR-T 제품의 목표: 100배 이상.

집단 배가 횟수(규격이 정의하지 않은 파생 지표):

배가 횟수 = log₂(증식 배수)   평균 배가 시간 = 배양 시간 ÷ 배가 횟수

두 지표는 같은 내용을 서로 다른 단위로 말한다. 배수는 목표와 비교하기에 직관적이고, 배가 횟수는 시간에 따라 더해지므로 중간 날짜에 배양이 제 궤도에 있는지 보기 쉽다. 100배 증식은 log₂(100) ≈ 6.6회 배가이고, 1,000배는 약 10회 배가이다.

계산 예시(예시 수치)

어떤 배치가 생존 세포 5 × 10⁷개를 0.5 × 10⁶ cells/mL로 파종해 증식을 시작하고, 밀도를 0.5–2.0 × 10⁶ cells/mL 범위 안에 유지하며 10일간 배양한다고 하자.

단계계산결과
초기 배양 부피5 × 10⁷ ÷ 0.5 × 10⁶ /mL100 mL
100배 달성에 필요한 세포 수5 × 10⁷ × 1005 × 10⁹ cells
밀도 상한에서의 최소 최종 부피5 × 10⁹ ÷ 2.0 × 10⁶ /mL2,500 mL (2.5 L)
필요한 배가 횟수log₂(100)≈ 6.6
10일간의 평균 배가 시간240 h ÷ 6.6≈ 36 h
일정하게 자랄 때 7일차 예상 배수2^(6.6 × 7/10) = 2^4.6≈ 25배

여기서 세 가지 교훈이 나온다. 첫째, 밀도 상한이 있는 상태에서 100배 증식은 배양 부피가 25배 늘어난다는 뜻이다. 증식 기간 동안 작업자의 일이 배지 보충과 용기 교체로 채워지는 이유이다. 둘째, 증식 배수는 시간에 비례해 늘지 않는다. 일정하게 자라는 배양도 배양 기간의 70% 시점에는 100배 목표의 약 4분의 1에 있을 뿐이며, 이는 정확히 SDK의 증식 경보(아래)가 평가를 시작하는 시점이다. 셋째, 100배 증식을 기록하면서 부피는 수백 mL를 넘은 적이 없는 배치 기록은 내부적으로 모순이므로 질의 대상이 된다.

도구는 어떻게 계산하는가

SDK는 배수를 직접 계산하지 않는다. currentMetrics.expansionRatio는 호출하는 쪽이 넣는다. trackManufacturing은 이를 parameters.targetExpansion과 비교하여, 배수가 목표의 절반 미만이고 현재 일차가 parameters.cultureDays의 70%를 넘었을 때 warning 경보를 낸다. 목표 100배인 10일 배양에서 8일차의 배수 40은 경보를 일으키지만, 7일차의 같은 값은 비교가 "7보다 큼"이라서 경보를 일으키지 않는다.

CLI 명령 track-batch는 배수를 계산하려 하지만, --cells 값을 5e6으로 적힌 고정 초기 세포 수로 나눈다. 스크립트는 bc로 계산하는데 bc는 지수 표기를 읽지 못하므로, 공개된 그대로의 스크립트는 기본값 5 × 10⁷을 포함한 어떤 입력에 대해서도 0.0×와 "Below target"을 출력한다(제5장 5.8절이 이 결함을 다룬다). 표기를 고치더라도 초기 세포 수가 고정되어 있으므로 배수는 배치의 실제 초기 세포 수와 무관하다. 시연용 도구이지 실제 배치 계산기가 아니다.

$ wia-bio-005 track-batch --batch CT-2024-001 --stage expansion --day 7 --cells 500000000 --viability 92
(출력 일부 생략)
(standard_in) 1: syntax error      # bc가 스크립트 자체의 5e6을 읽지 못함
  Expansion Ratio: 0.0×
⚠ Expansion: Below target (<100×)

2.6 핵심 공정 변수

핵심 공정 변수(CPP)란 그 변동이 제품의 핵심 품질 특성에 영향을 주기 때문에 감시하고 정해진 범위 안에 유지해야 하는 공정 변수를 말한다. §3.3.2는 다섯 가지를 지정하고, SDK는 이를 CELLULAR_THERAPY_CONSTANTS.CPP에 담는다.

변수§3.3.2의 범위SDK 상수trackManufacturing 검사 여부중요한 이유
온도37 °C ± 0.5 °CCPP.TEMPERATURE (36.5–37.5)예, critical 경보대사·분열 속도를 좌우하며, 열 스트레스는 세포를 빠르게 죽인다.
pH7.2–7.4CPP.PH예, critical 경보고밀도 배양에서 젖산이 쌓여 산성화되면 성장이 느려진다.
용존 산소공기 포화도 20–40%CPP.DISSOLVED_OXYGEN아니오(상수만 존재)특히 정치 배양 용기에서는 고밀도일 때 산소 전달이 성장을 제한한다.
세포 밀도0.5–2.0 × 10⁶ cells/mLCPP.CELL_DENSITY예, warning 경보너무 성기면 T세포 성장이 느려지고, 너무 빽빽하면 영양분과 산소가 고갈된다.
삼투압260–320 mOsm/kgCPP.OSMOLALITY아니오(상수만 존재)배지 조성과 증발을 반영하며, 범위를 벗어나면 세포가 붓거나 쪼그라든다.

표에서 구현상의 두 가지 사실이 나온다. SDK는 다섯 변수 중 세 가지만 검사하므로, 용존 산소와 삼투압의 통제를 입증해야 하는 시스템은 SDK 바깥에 그 검사를 더해야 한다. 또 심각도가 균일하지 않다. 온도와 pH 이탈은 critical, 밀도 이탈은 warning이다. 이는 참조 구현의 설계 선택이지 §3.3.2의 요구가 아니며, 시설은 자체 위험 평가에 따라 달리 정할 수 있다.

측정값에서 경보까지

trackManufacturing은 ManufacturingProcess 객체를 받아 alerts에 새 항목을 덧붙인 사본을 돌려준다. 또한 cpp.withinRanges를 설정하는데, 이 값은 해결되지 않은 critical 경보가 하나도 없을 때만 true이다. 생존율 검사(85% 미만)도 critical 경보를 만들기 때문에, 물리적 변수가 모두 정상이어도 생존율이 낮은 배치는 "범위 밖"으로 보고된다. 엔지니어는 withinRanges를 문자 그대로 "모든 CPP가 범위 안"이 아니라 "열린 critical 경보 없음"으로 읽어야 한다.

import { CellularTherapySDK, ManufacturingProcess } from '@wia/bio-005';

const sdk = new CellularTherapySDK();

// 10일 배치의 8일차 스냅숏(예시 값)
const batch: ManufacturingProcess = {
  batchId: 'CT-2024-001',
  cellType: 'CAR-T',
  currentStage: 'expansion',
  startDate: new Date('2025-03-03'),
  expectedCompletion: new Date('2025-03-15'),
  startingMaterial: { totalCells: 5e7, viability: 91, cd3Percent: 62 },
  parameters: { medium: 'X-VIVO 15', cytokines: ['IL-2'], moi: 5,
                targetExpansion: 100, cultureDays: 10 },
  currentMetrics: { cellCount: 2.0e9, viability: 88, dayInCulture: 8,
                    expansionRatio: 40 },
  alerts: [],
  cpp: { temperature: 37.1, pH: 7.15, dissolvedOxygen: 18,
         cellDensity: 1.6e6, osmolality: 300, withinRanges: true },
};

const result = sdk.trackManufacturing(batch);
for (const a of result.alerts) console.log(a.severity, '-', a.message);
console.log('withinRanges =', result.cpp.withinRanges);

// critical - pH out of range: 7.15 (acceptable: 7.2-7.4)
// warning  - Expansion ratio (40.0×) below target (100×) at day 8
// warning  - Viability (88%) below optimal (≥90%)
// withinRanges = false
// 참고: 용존 산소 18%는 §3.3.2 범위 아래지만 경보가 나지 않는다.

각 경보에는 접두어와 타임스탬프로 만든 id, info·warning·critical 중 하나인 severity, 메시지, 타임스탬프, resolved 플래그와 선택 항목인 resolution 메모가 들어 있다. 이 함수는 받은 경보 목록 뒤에 덧붙이기만 하므로, 같은 객체로 반복 호출하면 중복이 쌓인다. 운영 환경의 연동은 변수별로 중복을 제거해야 하며, 경보를 지우지 말고 근거를 기록한 resolved 처리로 닫아서 이력이 배치 기록의 일부로 남도록 해야 한다.

2.7 공정 중 시험 일정

출하 시험(제3장)은 완성된 제품을 사용해도 되는지 결정한다. 공정 중 시험은 그보다 앞서, 더 적은 비용으로 다른 것을 결정한다. 이 배치를 계속 진행할 가치가 있는가이다. §3.3.1은 다섯 개의 시험 지점을 둔다.

시점시험허용 기준(§3.3.1)이 지점이 막으려는 것
0일차(시작)생존율≥85%채집이나 운송 중 손상된 물질로 10–14일 공정을 시작하는 것
2일차(활성화)CD25/CD69 발현≥50% 양성불충분한 활성화. 낮은 형질도입과 약한 증식을 예고한다.
4일차(형질도입)형질도입 효율≥30% CAR+CAR+ 세포가 충분히 들어 있지 않을 집단을 계속 증식시키는 것
7일차(증식 중간)세포 수, 생존율세포 수 배가; 생존율 >80%성장 정체, 또는 수확 전에 죽어 가는 배양
10–14일차(수확)전체 출하 시험§4.2 참조(제3장)확인·순도·역가·안전성에 미달한 제품의 출하

세 개의 CAR+ 수치, 세 가지 목적

규격을 읽다 보면 서로 다른 CAR+ 기준 세 개를 만나게 되고, 이를 하나로 뭉뚱그리기 쉽다. 이들은 역할이 다른 별개의 지점이다.

데이터 모델은 이들을 각기 다른 한도를 가진 별도 필드로 저장해야 한다. 하나의 "car_positive_min" 상수를 모든 곳에 적용하면 출하 시점에 적합한 배치를 부적합으로 판정하거나, 실패한 형질도입을 한 주 더 굴리게 된다.

처리해야 할 생존율 불일치

7일차 기준은 생존율 80% 초과를 허용하지만, trackManufacturing은 85% 미만에서 critical, 90% 미만에서 warning 경보를 내고, CLI는 85% 미만이면 "Below threshold"를 출력한다. 따라서 7일차 생존율 83%는 §3.3.1을 통과하면서도 SDK에서는 critical 경보로 나타난다. 각자의 목적에서는 어느 쪽도 틀리지 않았다. SDK는 배치가 85% 출하 기준 쪽으로 가고 있다고 일찍 경고하는 것이다. 그래도 연동 시스템은 이 차이를 드러내야 한다. 예를 들어 SDK 경보에 공정 중 부적합이 아니라 "출하 위험" 라벨을 붙여, 통과한 시험 지점을 작업자가 일탈로 취급하지 않게 해야 한다.

2.8 CAR-T 너머, 일탈과 흔한 함정

제품마다 다른 시계

10–14일의 CAR-T 일정은 보편적이지 않다. 이를 하드코딩한 시스템은 표준의 다른 제품군에서 오작동한다.

제품규격의 기간 또는 공정 지표추적에 미치는 영향
CAR-T제조 10–14일(§2.1.1)§3.3.1과 같은 일차 기준 시험 지점
TIL원천: 종양 생검, 증식 4–6주(§2.1.2)시험 지점을 주 단위로 정해야 하고 cultureDays가 몇 배 길어지므로, SDK의 70% 규칙 시점도 그만큼 늦어진다.
MSC임상 사용은 계대 P2–P5, 생존율 요건 >90%(§2.3.1)진행을 날짜가 아니라 계대로 측정하며, 로트마다 계대 번호를 기록해야 한다.
iPSC역분화 21–28일(§2.3.2)역분화는 첫 단계일 뿐이며, 파생 제품은 현재 ManufacturingStage 열거형에 없는 분화·특성 분석 단계를 더한다.

ManufacturingStage 값(collection, activation, transduction, expansion, harvest, cryopreservation, complete, failed)은 CAR-T 공정을 잘 기술한다. MSC나 iPSC 제품에서는 여러 실제 단계를 한 단계에 대응시키거나 모델을 확장해야 한다. 공유 열거형에 새 값을 지어내기보다 별도 필드로 확장해야 다른 WIA-BIO-005 시스템과 기록을 주고받을 수 있다.

일탈: C006과 CAPA

공정이 정해진 절차나 한도를 벗어나면 규격의 오류 코드는 C006 — Manufacturing deviation(제조 일탈)이고, 조치는 "기록하고 영향을 평가한다(Document and assess impact)"이다(§8.4). 조치가 "부적합 처리"가 아닌 것은 의도된 것이다. 문을 여는 동안의 짧은 온도 이탈, 몇 시간 늦은 배지 보충, 범위를 살짝 벗어난 pH 측정값은 제품 품질에 영향이 없을 수 있다. 오염된 배양은 당연히 영향이 있다. 일탈 절차는 어느 경우인지를 근거에 따라 판단하고 그 판단을 기록하기 위해 존재한다.

실제 일탈 기록에는 무엇이 언제 일어났는지, 영향을 받은 배치와 장비, 즉각적인 봉쇄 조치, 제품 핵심 품질 특성에 대한 영향 평가, 근본 원인 조사, 그리고 시정 및 예방 조치(CAPA)가 담긴다. 시정 조치는 해당 사례를 바로잡고, 예방 조치는 공정·교육·장비를 바꾸어 같은 원인이 반복되지 않게 한다. README는 배치 기록, 일탈, CAPA를 제조의 필수 문서로 들고 있으며, 제품 기록에서 일탈 참조는 BatchResult.manufacturingSummary.deviations 타입과 시험성적서의 manufacturing.deviations 필드에 들어간다.

SDK는 스스로 C006을 던지지 않는다. trackManufacturing은 경보만 만든다. 해결되지 않은 critical 경보를 공식 일탈로 바꾸는 것은 연동 설계의 결정이며, 사람이 관여해야 한다. 합리적인 패턴은 다음과 같다. 모든 critical 경보는 일탈 초안을 연다. QA는 이를 공식 일탈에 연결하거나, 근거를 기록하고 닫는다. 연결된 일탈이 열려 있는 동안에는 계속 진행하라는 QA 결정 없이 배치가 다음 ManufacturingStage로 넘어갈 수 없다.

흔한 함정

요약

WIA-BIO-005는 제조를 통제된 결정의 연쇄로 본다. 공여자 선별과 출발 물질 기준(§2.4)은 물질이 공정에 들어올지를 정한다. 청정실 구역 설정과 장비 적격성 평가(§3.1)는 물질을 다루는 조건을 확립한다. CAR-T 공정(§3.2)은 활성화, 유전자 변형, 증식, 수확을 거치며, 증식 배수가 그 중심 지표이다. 다섯 개의 핵심 공정 변수(§3.3.2)가 계속 감시되며, 참조 SDK는 그중 세 개를 검사한다. 다섯 개의 공정 중 시험 지점(§3.3.1)이 배치의 진행 여부를 정하고, 서로 다른 세 CAR+ 기준은 서로 다른 목적을 가진다. 일탈은 C006으로 기록되고, 문서화된 영향 평가와 CAPA로 해소된다. 다음 장은 제형화된 제품을 이어받아, 출하 여부를 결정하는 시험들을 따라간다.

복습 문제

  1. §2.4.1은 왜 HIV와 HCV에 대해 항체 검사와 NAT를 모두 요구하는가? 자가 제품은 동종 제품과 어떻게 다른가?
  2. 이 책은 §3.1.1의 ISO 5 기준 가운데 어느 입자 한도를 유지하며, 나머지 두 줄을 정오표로 다루는 이유는 무엇인가?
  3. 어떤 배치가 8 × 10⁷개 세포로 증식을 시작해 100배에 도달해야 한다. 필요한 배가 횟수와, 2.0 × 10⁶ cells/mL에서의 최소 최종 부피를 구하라.
  4. §3.3.2의 핵심 공정 변수 중 trackManufacturing이 검사하지 않는 두 가지는 무엇이며, withinRanges는 실제로 무엇을 뜻하는가?
  5. CAR+ 기준 40%, 30%, 20%의 서로 다른 역할을 설명하라.
  6. 7일차 생존율 83%는 §3.3.1을 통과하지만 SDK에서는 critical 경보를 낸다. 연동 시스템은 이를 작업자에게 어떻게 보여 주어야 하는가?