제형화와 충전·마감 모델링: 원료에서 완제로
📍 현재 위치: 제5부 · 충전·마감과 출하의 모델링 — 제17장. 원료의약품은 출하를 정박시키는 로트입니다. 이 장은 그것을 환자가 실제로 받게 되는 것으로 바꾸는 과정 — 그리고 공정이 벌크 물질에 관한 일이기를 멈추고 셀 수 있는 단위에 관한 일이 되기 시작하는 순간 — 을 모델링합니다.
원료의약품(drug substance)은 제형화되고 시험을 마친 벌크 액체이지만, 아직 누구도 쓸 수 있는 약은 아닙니다. 제형화와 충전·마감(formulation and fill-finish)은 그것을 완제의약품(drug product, DP)으로 바꿉니다. DS를 부형제(excipient)와 합쳐 최종 제형을 만든 다음, 무균 조건에서 바이알이나 주사기에 충전하고, 마개를 끼우고, 밀봉합니다 [1]. 우리 캠페인에서는 이 과정이 DP-001을 낳습니다. 여기서 두 가지 모델링의 전환이 일어나며, 둘 다 중대합니다. 계보가 전방으로 분기하고(하나의 DS 로트가 여러 DP 로트를 채움), 제품의 종류가 바뀝니다 — 농도로 측정되는 벌크 물질에서, 일련화(serialization) 이후 저마다 고유한 정체성을 갖게 될, 이산적이고 셀 수 있는 단위들의 집단으로 말입니다.
수프 한 솥은 그릇에 떠 담길 때 비로소 점심이 됩니다. 솥은 부피로 재는 하나의 물건이고, 그릇들은 수를 세는 여럿입니다. 충전은 무엇을 추적하느냐를 바꿉니다 — 그리고 솥 하나가 그릇 여럿을 채우므로, 솥에서 문제가 드러나면 거기서 나온 모든 그릇이 연루됩니다. 충전·마감(fill-finish)은 원료의약품을 바이알에 떠 담습니다. 이 장은 부피로 재는 벌크에서 수를 세는 단위로의 그 변화를, 그리고 단 하나의 원료 로트의 운명이 거기서 채워진 모든 제품 로트에 공유된다는 것을 뜻하는 일대다 연결을 모델링합니다.
이 장에서 다루는 내용
우리는 제형화(formulation)를 DS와 부형제를 합치는 일로, 충전·마감(fill-finish)을 이산적인 완제의약품 단위를 산출하는 공정으로, 용기-마개 시스템(container-closure system)을 제품 정체성의 일부인 모델링된 개체로 모델링합니다. DS에서 DP로의 전방 분기를 구체화하고, DP-001 노드를 해부하며, 벌크에서 셀 수 있는 단위로의 전환 — 그리고 모델이 개별 바이알을 추적할 것인가 아니면 로트만 추적할 것인가의 물음 — 과 마주합니다.
제형화, 용기-마개, 그리고 종류의 변화
제형화(formulation)는 원료의약품을 부형제(excipient) — 완충제, 안정제, 계면활성제 — 와 합치며, 이들은 항체가 안정하고 전달 가능한 상태로 유지되도록 합니다. 모델링하면, 제형화된 제품은 DS로부터 derivedFrom이고 동시에 부형제 물질을 hasComponent하므로, 레시피의 제형 구성은 배치 기록 속에 파묻히는 대신 계보로서 추적 가능합니다. 그런 다음 충전·마감이 완제의약품 로트를 산출합니다. 무균 충전 작업이라는 하나의 사건(occurrent)이며, 그 산출물은 채워지고 밀봉된 단위들의 집단입니다. 용기-마개 시스템 — 바이알, 마개, 봉인 — 은 제품에 부수적인 포장이 아닙니다. 그것은 제품이 무엇인가의 일부인데, 용기-마개 무결성(integrity)이 유효기간에 걸쳐 무균성과 안정성에 영향을 주는 품질 속성이기 때문입니다 [3]. 모델은 용기-마개를, 제품이 isContainedIn하는 개체로 다루며, 그것은 출하 게이트(release gate)가 점검할 고유한 품질(무결성, 용출물)을 갖습니다.
이 부형제와 공정 클래스들은 align.ttl에서 위로 접지되며, 진짜 IOF 공백은 꾸며 내는 대신 명시됩니다:
# align.ttl — formulation and fill-finish grounded UP (excerpt).
bp:DrugProduct rdfs:subClassOf iof:MaterialProduct . # IOF biopharma 'material product'
bp:FormulationProcess rdfs:subClassOf iof:DrugProductFormulationProcess . # IOF biopharma 'drug product formulation process' (Released)
bp:Excipient rdfs:subClassOf obo:CHEBI_24431 . # ChEBI 'chemical entity' (generic anchor; a polysorbate-80 / L-histidine / sucrose leaf stays ILLUSTRATIVE)
bp:derivedFrom rdfs:subPropertyOf obo:RO_0001000 . # RO 'derives from' (also owl:TransitiveProperty)
# An honest IOF gap: there is NO fill-finish / aseptic-fill / lyophilization class in IOF biopharma, so
# bp:FillFinishProcess and bp:ContainerClosureSystem stay ILLUSTRATIVE local classes; bp:fillsInto is local too.
더 깊은 전환은 종류(kind)의 전환입니다. 상류의 모든 것은 벌크 물질이었고, 단위 조작(unit operation)으로 개별화되며 농도로 측정되었습니다. 완제의약품은 이산적입니다. 이제 로트는 근본적으로 단위들의 개수이며, 각각은 충전 가능하고, 검사 가능하며, 종국에는 일련화 가능합니다. 이것은 모델이 추적해 온 것과 똑같은 연속체(continuant)이지만, 그 관련 입도(granularity)가 "얼마나 많이"에서 "몇 개"로 바뀌었습니다 — 그리고 모델은, 일련화 시점에 "어느 것"까지 답할 수 있게 되는 날에 대비되어 있어야 합니다.
전방 분기: 하나의 원료, 여러 제품, 공유된 운명
원료의약품 장은 하나의 DS 로트가 보통 여러 DP 로트를 채운다는 점을 짚었습니다 — 그리고 여기서 그 분기가 실제 엣지로 놓입니다. DP-001 derivedFrom DS-001, DP-002 derivedFrom DS-001이며, 편의를 위한 전방 엣지 bp:DS-001 bp:fillsInto bp:DP-001 , bp:DP-002가 일대다 방향을 명시적으로 포착합니다. 우리 실행 예시의 DP-001 노드는 헐벗은 스텁이기는커녕, 그 원료로 거슬러 올라가는 계보 엣지, 부형제 성분들, 그것이 담긴 용기-마개, 그것이 conformsTo하는 제품 개념, 완전한 출하 패널, 마감 게이트 품질들(무균성, 외관, 충전 부피), 그리고 귀속 가능한 서명입니다 [2]:
@prefix bp: <https://example.org/bioproc#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
bp:DP-001 a bp:DrugProduct ;
bp:derivedFrom bp:DS-001 ;
bp:conformsTo bp:PC-mAb-A ;
bp:isContainedIn bp:CCS-001 ;
bp:hasComponent bp:EXC-PS80 , bp:EXC-HIS , bp:EXC-SUC ;
bp:releaseStatus "PASS" ;
bp:monomerPct "98.611"^^xsd:float ;
bp:hmwPct "1.287"^^xsd:float ;
bp:cexMainPct "70.686"^^xsd:float ;
bp:hcpPpm "12.0"^^xsd:float ;
bp:proteinConcMgPerMl "50.2"^^xsd:float ;
bp:sterilityResult "STERILE" ;
bp:appearance "clear, colourless, essentially free of visible particles" ;
bp:fillVolumeMl "1.0"^^xsd:float ;
bp:approvedBy bp:SIG-DP-001 .
bp:DS-001 bp:fillsInto bp:DP-001 , bp:DP-002 .
bp:derivedFrom이 owl:TransitiveProperty(OBO 관계 온톨로지의 obo:RO_0001000, derives from의 하위 속성)로 선언되어 있으므로, 이 단 하나의 엣지가 DS-001, PApool-001, BATCH-2026-001, SEED-001을 거쳐 세포 은행까지 이르는 전체 계보를 추이적으로 재구성합니다 — 조인 테이블 없이, 추론만으로요. 이 전방 분기는 포획(capture)의 후방 풀링 분기를 거울처럼 비추며, 그래프가 계산 가능하게 만드는 날카로운 귀결을 담고 있습니다. 바로 공유된 운명(shared fate)입니다. 만약 DS-001이 나중에 결함이 있다고 밝혀지면, 그로부터 파생된 모든 DP 로트가 연루됩니다 — 분기를 따라 한 번 순회하면 그것들을 모두 찾아냅니다. 반대로 DP-004가 불합격하면, 그래프는 DS-001까지 거슬러 올라간 뒤 다시 내려가며 부모를 공유하는 모든 형제 DP 로트로 가서 영향 범위를 산정합니다. 이 OOS 형제는 우리 데이터셋에서 구체적으로 존재하며, 그 실패 양태는 시사적입니다. DP-004는 단량체 순도에서는 규격 이내이지만 그래도 OOS로 표시되는데, SEC 고분자량 응집체가 출하 한계를 초과하기 때문입니다:
@prefix bp: <https://example.org/bioproc#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
bp:DP-004 a bp:DrugProduct ; bp:derivedFrom bp:DS-004 ;
bp:releaseStatus "OOS" ;
bp:monomerPct "98.687"^^xsd:float ;
bp:hmwPct "2.41"^^xsd:float ;
bp:cexMainPct "69.40"^^xsd:float ;
bp:hcpPpm "18.0"^^xsd:float ;
bp:proteinConcMgPerMl "49.7"^^xsd:float ;
bp:sterilityResult "STERILE" ;
bp:appearance "clear, colourless, essentially free of visible particles" ;
bp:fillVolumeMl "1.0"^^xsd:float ;
bp:approvedBy bp:SIG-DP-004 .
출하 게이트(release gate)는 단량체가 아니라 bp:hmwPct에 대한 SHACL sh:maxInclusive 2.0 제약으로 이를 걸어냅니다 — 합격한 속성 하나가 로트를 구해 주지 못하는, 현실적인 OOS 양태입니다. 이것은 정확히 지식 그래프 장이 규격 이탈(OOS) 로트로 시연한 영향 분석이며, 충전·마감은 그것을 가능케 하는 전방 분기가 생성되는 곳입니다. 분기를 명시적으로 모델링하는 것 — 각 DP 로트를 외딴섬처럼 다루는 대신에 — 이야말로 DP 실패를 추측 게임에서 질의로 바꿔 놓는 일입니다.
펼쳐 본 완제의약품 로트: 그것은 전방 분기의 한 가지로서 DS로부터 파생되며(공유된 운명 영향 분석의 뿌리), 부형제를 결합하고, 모델링된 용기-마개 안에 살며, 농도로 측정되는 대신 단위로 셉니다 — 벌크에서 이산으로의 변화입니다.
저자가 AI의 도움을 받아 직접 제작한 그림입니다.
하나의 원료가 여러 로트를 채우고, 모든 로트는 은행까지 거슬러 운명을 공유한다: DS-001은 형제 로트 DP-001과 DP-002로 전방 분기하고, 규격을 벗어난 DP-004는 DS-004를 거쳐 같은 WCB-CHO-001로 이어진다 — 추측이 아니라 질의로 리콜 범위를 정하는 구조입니다.
저자가 AI의 도움을 받아 직접 제작한 그림입니다.
미해결 과제: 로트 대 개체, 그리고 어디까지 개별화할 것인가
충전·마감이 강제하는 정직한 물음은 얼마나 깊이까지 개별화할 것인가입니다. 한 로트는 수만 개의 바이알일 수 있습니다. 모델이 바이알마다 노드를 만들어 내야 할까요? 이 단계에서는 거의 그러지 않습니다 — 모델은 로트(lot)를 단위로 삼는데, 함께 채워지고 검사되고 출하되는 것이 바로 로트이며, 바이알마다 노드를 두는 것은 아직 누구도 묻지 않는 질의를 위해 그래프를 폭발시킬 뿐이기 때문입니다. 그러나 일련화(serialization)가 곧 그것을 바꿀 참입니다. 규제는 판매 가능한 모든 단위가 고유한 정체성을 지니도록 요구할 것이므로, 그래프는 일부 목적(추적·추적성)을 위해 개체 수준까지 개별화할 준비가 되어 있으면서도 다른 목적(출하, 품질)을 위해서는 로트 수준 입도를 유지해야 합니다. 두 입도 — 로트와 개체 — 를, 그래프를 바이알 노드로 익사시키지도 않고 규제가 요구하는 개체 정체성을 잃지도 않으면서 일관되게 붙들고 있는 일은 실재하고 미해결된 모델링 긴장이며, 충전·마감은 그것이 태어나는 곳입니다 — 비록 그것이 무는 곳은 일련화이지만요.
더 미묘한 문제도 있습니다. 벌크에서 이산으로의 종류의 변화는 깔끔하지 않습니다. 충전 동안 벌크와 단위는 공존합니다 — 로트가 바이알 하나하나씩 이산이 되어 가는 중입니다 — 그리고 그 전이를 또렷하게 모델링하는 일("벌크 DP"는 언제 "채워진 단위들"이 되는가?)은 똑같은 개별화(individuation)의 모호함이며, 이제는 벌크-개체 경계에서 그렇습니다. 실용적 관례는 채워진 로트를 단위 개수를 가진 새 물질로 모델링하고 개체 정체성은 일련화로 미루는 것인데, 이는 잘 작동합니다 — 하지만 그것은 연속적인 충전 공정을 덮어 가리는 관례이며, 로트 개수를 단단한 사실로 다루는 모델은 그것이 수천 번의 개별 충전 사건에 대한 추상화임을 기억해야 합니다. 정직한 표준은, 로트 수준 모델링이 지금으로서는 옳고, 개체 수준 정체성이 다가오고 있으며, 모델은 일련화가 도착할 때 허둥지둥 개조되는 대신 둘 다를 붙들 수 있도록 설계되어야 한다는 것입니다.
왜 중요한가
충전·마감은 공유된 운명 영향 분석을 가능케 하는 전방 분기를 만들어 내며, 제품이 환자가 받게 되는 이산적이고 셀 수 있는 것이 되는 경첩입니다. DS에서 DP로의 분기를 명시적으로 모델링하면 DP 실패는 형제들에 걸친 범위가 정해진, 질의 가능한 조사가 됩니다. 용기-마개를 제품의 일부로 모델링하면 그 무결성은 뒤늦은 생각이 아니라 점검 가능한 품질이 됩니다. 벌크-개체 전환을 예견하면 일련화는 재구축이 아니라 확장이 됩니다. 각 DP 로트를 외딴섬으로 다루면, 리콜에서 가장 중대한 물음 — 또 무엇이 영향을 받는가? — 은 속도가 가장 중요한 바로 그때 수작업 교차 참조로 되돌아갑니다. 이 장은 계보가 환자를 향해 펼쳐지는 곳입니다.
실제 현장에서는
부형제를 통한 제형화, 적격성이 평가된 용기-마개 시스템으로의 무균 충전·마감, 그리고 이산적 완제의약품 로트의 출하는 보편적이며, 용기-마개 무결성은 고유한 지침을 가진 명시적 규제 사안입니다 [1][2][3]. 공장들은 이미 정확히 이 장이 모델링하는 그 리콜 범위 산정의 이유로 DS-DP 관계를 추적합니다 — 그것은 공급망에서 가장 안전성이 중요한 연결 중 하나입니다. 모델링의 진전은, 전방 분기를 일급의 순회 가능한 구조로 만들고, 개체 수준 일련화가 깔끔하게 끼워지도록 로트 모델을 설계하는 것이며, 일련화 장이 바로 그 위에 직접 쌓아 올립니다. 현장에서 충전 라인 자체는 ISA-88 PackML 상태 기계(Idle → Starting → Execute → Holding, 그리고 되돌아가기)로 돌아가며, 컴패니언 examples/datasets/packml_log.csv는 FILL-LINE-01에서 BATCH-2026-001에 대한 그 상태 시퀀스로, 오픈소스 충전·마감 장이 실시간으로 포착합니다. 그래프는 원시 상태 로그가 아니라 그 결과인 완제의약품 로트와 그 출하 사실을 색인합니다 — 조밀한 기계·센서 스트림을 트리플 밖에 두는 색인 대 페이로드와 동일한 규율입니다.
핵심 용어
- 완제의약품(drug product, DP) — 용기에 담긴 최종 제형화·충전·밀봉된 약(
DP-001); 원료의약품으로부터derivedFrom인, 이산적 단위들의 집단. - 제형화 / 부형제(formulation / excipients) — DS를 안정화 성분들과 합치는 일로, 파묻힌 레시피가 아니라 계보 더하기
hasComponent엣지로 모델링됨. - 용기-마개 시스템(container-closure system) — 바이알, 마개, 봉인으로, 무결성을 점검 가능한 품질로 하여 제품 정체성의 일부로 모델링됨.
- DS에서 DP로의 전방 분기(DS-to-DP forward fork) — 하나의 DS 로트가 여러 DP 로트를 채우는 일대다 계보; 공유된 운명 영향 분석을 가능케 하는 구조.
- 공유된 운명(shared fate) — 분기의 계산 가능한 귀결: 순회를 통해, DS 결함은 모든 형제 DP 로트를 연루시키고, DP 실패는 그 형제들로 범위가 정해짐.
- 벌크 대 이산(로트 대 개체) — 농도로 측정되는 벌크에서 수를 세는 단위 집단으로의 종류의 변화로, 개체 수준 정체성은 일련화로 미뤄지되 미리 설계됨.
다음 이야기
이제 약은 이산적이고 밀봉된 단위로 존재합니다 — 하지만 좋다고 입증되기 전에는 출하될 수 없습니다. 다음 장 QC와 출하 게이트 모델링: SHACL로서의 규격은 품질의 실이 줄곧 향해 온 종착점이었던 그 결정을 모델링합니다. 로트가 출하를 주장할 수 있기 전에, 요구되는 모든 CQA가 적합하고 규격 이내이며 서명된 결과를 갖추었는지 점검하는 것입니다 — 그리고 출하 규격이 어떻게 그래프를 통제하는 SHACL 형상(shape)이 되는지를 보여 주는데, 이는 오픈소스 책이 코드로 실행하는 바로 그 메커니즘입니다.