Skip to content

Latest commit

 

History

History

hemolytic-disease-fetus-newborn

README.md

태아·신생아 용혈성 질환 (Hemolytic Disease of the Fetus and Newborn, HDFN)

QSP model — mechanistic map · 45-ODE mrgsolve model · 12-tab Shiny app · 96 PubMed references


한 문장 (The one sentence)

태아 적혈구가 파괴되는 속도는 세 인자의 곱이며, 이 질환의 모든 치료법은 그중 정확히 하나씩을 소유한다.

destruction  =  A(t)            ×   f_ag(t)              ×   M(t)
                태아에게 실제로       순환 혈색소 중         망상내피계
                전달된 항체           항원-양성 분율          청소 용량
인자 무엇인가 누가 움직이는가
A 모체 역가 × 태반 컨베이어 용량(주당 e^0.268, 16→36주에 약 210배) 니포칼리맙(FcRn 차단), 혈장교환, 고용량 IVIG(FcRn 경쟁), 그리고 그 상류의 anti-D 예방
f_ag 순환 적혈구 중 항원을 가진 분율 자궁내수혈(IUT) — 공혈 적혈구는 항원-음성이므로 수혈은 혈색소를 더하는 것이 아니라 기질을 희석한다
M 비장·간 대식세포의 청소 용량과 그 포화 고용량 IVIG(FcγR 차단), 비장 용적

f_ag가 이 지도의 핵심이다. 아무도 이름 붙이지 않는 이 인자 때문에, 수혈 후 헤모글로빈 감소율은 시행할수록 완만해진다(모델 0.29 → 0.18 → 0.17 g/dL/일, 감시 seed 10개 평균). 수혈의 효과가 그것이 실어다 준 헤모글로빈보다 오래 지속되는 이유다.


두 개의 시계 (Two clocks)

  1. 컨베이어 시계 — 주당 e^0.268. 태반 FcRn 수송 용량은 16주에서 36주 사이에 약 210배 증가한다. 스스로도 자라는 태아에 희석되고 나면, 태아가 실제로 경험하는 양 — 태아:모체 항체 농도비 — 이 19.5주 대비 만삭에 약 17배가 된다. 같은 항체 역가가 임신 주수에 따라 전혀 다른 노출이 된다. 따라서 조기발현(early-onset) 중증 HDFN은 다른 질환이 아니라, 컨베이어가 아직 약할 때에도 위험할 만큼 높은 역가일 뿐이다. FcRn 차단제를 14–16주에 시작해야 하는 이유도 여기 있다 — 질환을 치료하는 것이 아니라 컨베이어가 위험한 용량을 실어 나르기 전에 막는 것이다.

  2. 청소 시계 — 분만 시점의 불연속. 자궁 내에서 빌리루빈은 태반, 즉 모체의 간을 통해 반감기 약 1시간으로 제거된다. 그래서 8 g/dL의 용혈을 겪는 태아는 빈혈이지만 황달은 아니다. 분만하면 그 경로가 절단되고, 성인의 약 6%인 UGT1A1 활성이 그 자리를 대신한다. 용혈은 동일한데 질환이 달라진다 — 분모의 숫자 하나가 바뀌었기 때문이다.

  3. 그리고 하나의 느린 상태변수: 신생아 내 모체 IgG의 반감기 3주. 용혈은 분만보다 6주를 더 산다 — 수혈로 억제된 골수가 가장 답하기 어려운 시점이다.


무엇을 맞추고(fitted) 무엇을 예측했는가(predicted)

여덟 개의 숫자만 적합했다. 모두 발표된 요약 통계이며, 서로 독립적인 4단계로 진행된다(hdfn_calibrate.py, 로그는 calib.log).

단계 파라미터 표적
1 v0, g_pl 태아:모체 총 IgG 비 0.075(19.5주), 1.25(39주) — Malek 1996
2 kops 항-D 15 IU/mL에서 첫 IUT가 26주 — Nishie 2012 코호트 평균 26.1주
3 ksens, fmh_ante 예방 없음 16%, 분만 후 300 µg만 1.6%
4 ugt_birth, ugt_t50 건강한 만삭 신생아의 생리적 황달 정점 8 mg/dL, 약 4일
— emh_thresh 명백한 복수가 5–6 g/dL에서 나타나도록 배치

Kres, dev, nip_pl_pen, do2_alpha(=1), visc_k(=0)는 구조적(structural) 으로 고정하고, 적합하지 않은 대신 민감도로 보고한다.

적합기(fitter)가 한 번도 보지 못한 것들 — 즉 예측:

1. 수혈 후 감소율의 둔화가 유도된다

구간 모델 보고값
1차 IUT 이후 0.291 g/dL/일 0.40 (SD 0.25) — Nishie 2012
2차 IUT 이후 0.183 g/dL/일 (측정되지 않음)
3차 IUT 이후 0.171 g/dL/일 (측정되지 않음)

순서는 예측되고 크기는 1/3만큼 과소예측된다(약 0.5 SD). 감추지 않고 첫 구간을 세 항으로 분해한다.

항 기여
항원-양성 세포 파괴 (4.55 g Hb) +0.345 g/dL/일
공혈 적혈구 노화 (1.41 g Hb) +0.107 g/dL/일
용적 변화 (114 → 101 mL) −0.144 g/dL/일
합계 0.308 g/dL/일

세 번째 항의 부호가 예상과 반대다: 파괴되는 적혈구 용적이 혈장 용적 증가보다 빠르게 줄어들기 때문에 태아태반 혈액량이 오히려 감소하고, 희석은 감소를 돕는 대신 0.14 g/dL/일만큼 거스른다. 공혈 적혈구 수명을 70일 → 45일 → 30일로 줄이면 감소율이 0.290 → 0.322 → 0.359로 커져 남은 격차의 절반쯤만 메워진다. 따라서 공혈세포 생존만으로도 설명되지 않고 최소 한 항이 더 빠져 있다 — 후보는 공혈세포의 bystander 소실, 시술 후 24시간 내 격리, 또는 모델이 잡는 것보다 짧은 실제 간격이다. 모델은 성인의 70일을 유지하고 격차를 보고한다.

2. MCA-PSV 1.5 MoM은 경험적 절단값이 아니다

뇌 산소 전달이 방어된다면(혈류 ∝ 1/Hb), 속도 × 헤모글로빈은 상수이므로

PSV MoM = 1 / Hb MoM      →      1.50 MoM ⟺ Hb 0.667 MoM

즉 그 절단값은 중등도 빈혈의 정의(0.65 MoM) 그 자체의 산술적 상(image) 이며 ROC 산물이 아니다.

민감도와 위양성률은 순수하게 측정 오차의 성질이므로, 모델에 "어떤 측정 오차가 보고값을 재현하는가"를 물을 수 있다. Mari 2000의 코호트 구성(비빈혈 41 · 경증 35 · 중등도 4 · 중증 31)에서:

측정 CV 민감도 위양성률
10% 98% 5%
15% 97% 10%
20% 94% 14%
보고값 100% 12%

민감도는 어떤 CV에서도 재현된다(중증 태아는 절단값보다 한참 위에 있다). 정보를 가진 숫자는 위양성률이고, 그것이 Doppler 재현성의 CV를 15–20%로 못 박는다 — 질환의 성질이 아니라 검사자·기법의 성질에 대한, 검증 가능한 진술이다.

점도항을 따로 더하면 이 결과가 깨진다: visc_k를 0 → 0.45 → 0.90 → 1.80으로 올리면 1.5 MoM이 대응하는 Hb가 0.667 → 0.703 → 0.733 → 0.780 MoM으로 밀리고 위양성률이 10 → 15 → 20 → 31%로 커진다. 관찰된 12%와 맞는 것은 visc_k = 0뿐이다. 물리적 이유도 같다 — 점도 감소가 만드는 혈류 증가가 바로 산소 전달 방어의 기전이므로, 따로 세면 이중 계산이다.

3. 수두종 문턱값도 유도된다

산소 전달이 방어되고 최대 심박출 예비능이 2.2배라면, 태아가 전달을 방어할 수 없게 되는 지점은 Hb MoM = 1/2.2 = 0.45, 즉 약 5.5 g/dL이다. 모델에서 명백한 복수는 0.49 MoM(6.28 g/dL, GA 29.9주) 에서 처음 나타난다. Nicolaides의 임상 규칙(약 5 g/dL 이하)과 일치한다. 제대정맥압은 빈혈과 함께 상승한 뒤 가장 극단적인 경우에 다시 떨어지는데(Ville 1994가 보고한 비단조 패턴), 이것도 모델에서 그대로 나온다.

4. anti-D 예방의 72시간 창(window)은 면역학적 시간상수가 아니다

코팅되지 않은 태아 적혈구는 그저 적혈구다 — 모체 순환에서 반감기 약 70일로 생존한다. 그래서 3일 지연은 항원 노출 적분의 몇 %만 흘린다. 창이 분(minute)이 아니라 일(day) 단위인 이유이고, 2주가 되면 닫히는 이유이기도 하다.

용량 규칙은 약동학이 아니라 화학량론이다: 태아 적혈구 1 mL당 anti-D 20 µg(= 100 IU/mL). 따라서 300 µg = 1500 IU는 태아 적혈구 15 mL, 즉 태아 전혈 30 mL를 덮는다. 모델의 300 µg 곡선은 정확히 태아 전혈 30 mL에서 꺾인다.

요법 집단 감작률
예방 없음 16.00% (적합 표적)
분만 후 300 µg (24시간 내) 1.60% (적합 표적)
분만 후 100 µg (24시간 내) 2.34%
분만 후 300 µg, 72시간 지연 2.17%
분만 후 300 µg, 7일 지연 3.20%
분만 후 300 µg, 14일 지연 4.75%
28주 산전 단독 2.28%
28주 산전 + 분만 후 300 µg 0.26% — 예측, 관찰값 0.1–0.4%
28주 산전 + 분만 후 600 µg 0.22%

잔여 위험이 면역학의 실패가 아니라 산술의 실패이기 때문에 이 예측이 성립한다: 고정 300 µg 용량이 덮을 수 없는 태아모체출혈 분포의 꼬리다.

5. UNITY 시험을 발표된 그대로 시뮬레이션

Moise 2024(NEJM)의 등록 기준을 가정하지 않고 모델 안에서 재현했다 — 가상의 산모는 치료하지 않았을 때 24주 전에 수혈이 필요했을 경우에만 등록된다. 항-D 정량치에 로그정규 사전분포를 두고 그 기준으로 선별한 뒤 니포칼리맙 30 mg/kg/주를 투여한다.

모델 UNITY
32주 이상 생존 출생, IUT 없음 11/30 = 37% 7/13 = 54% (95% CI 25–81)
수두종 1/30 0/13

등록된 가상 산모의 항-D 중앙값은 52 IU/mL(IQR 33–63)이었고, 선별 통과율은 38%였다. 예측은 보고된 95% 신뢰구간(25–81%) 안에 들어간다. 다만 이 결과는 사전분포의 산포(GSD)라는 단 하나의 분포 가정에 의존하며, 그 민감도를 표로 함께 보고한다. 이 시뮬레이션이 만들어낸 가장 예리한 추론은 약에 관한 것이다:

태반 syncytiotrophoblast의 FcRn이 혈관 내피의 FcRn과 같은 니포칼리맙 농도를 본다면 이동은 99% 이상 차단되고 UNITY 집단의 어떤 태아도 수혈이 필요하지 않았을 것이다. 13명 중 6명이 필요했다. 따라서 태반 FcRn은 내피 FcRn보다 훨씬 포화시키기 어렵다(모델의 가정: 간질 침투 15%).

6. anti-K는 anti-D가 아니다 — 같은 빈혈, 사라진 빌리루빈

항-Kell은 순환 적혈구가 아니라 적혈구 전구세포를 파괴한다(Vaughan 1998). 모델에서는 kell_kill 한 개를 0에서 올리는 것뿐이며, 그 결과 같은 헤모글로빈에 전혀 다른 이차 지표가 따라온다. 임상적 귀결은 모델이 만들어낸 경고다: Kell 감작에서 양수 ΔOD450은 빈혈을 3.2배 과소평가한다(같은 조건에서 항-D 0.0398 대 항-K 0.0124) — 순환에 도달하지 못한 세포가 만든 빈혈이므로 헴이 방출되지 않는다. 빌리루빈에 기반한 감시 전략은 Kell 질환에서 구조적으로 틀리고, MCA-PSV에 기반한 것은 그렇지 않다.

7. 수두종은 5–6 g/dL에서 시작한다

무치료 15 IU/mL 사례에서 명백한 복수는 GA 29.9주, Hb 6.28 g/dL(0.49 MoM) 에서 처음 나타난다. 알부민은 EMH에 의해 억제되고, 제대정맥압은 4.5 → 7.2 mmHg로 오르며, 여과는 17 → 71 mL/일로 증가하는데 림프 회수는 17 → 59에서 멈춘다. 건강한 태아는 정의상 표류하지 않는다(림프 용량 = 기저 여과량).

8. 신생아기: 낮은 빌리루빈과 6주 뒤의 최저점

네 번 수혈받은 태아는 질환 중증도에 비해 낮은 빌리루빈으로 태어난다. 순환 헤모글로빈의 대부분이 아무도 공격하지 않는 공혈 헤모글로빈이기 때문이다 — 자궁 내 감소율을 완만하게 만든 그 f_ag가 황달도 완만하게 만든다. 그리고 헤모글로빈 최저점은 첫 주가 아니라 생후 약 39일에 온다(정점 빌리루빈 16.9 mg/dL, 교환수혈 0회, 보충수혈 4회, 철 부하 187 mg): 모체 IgG는 3주 반감기로 남아 있고, 수개월의 수혈로 억제된 골수에는 예비능이 없다. 이 아이들이 2–3개월간 보충 수혈을 필요로 하는 이유다.


실행이 찾아낸 결함 (읽어서는 찾지 못했다)

이 모델은 열한 개의 실제 결함을 실행을 통해 노출시켰고, 전부 hdfn_reference_output.txt 16절에 기록되어 있다. 그럴듯한 숫자만 만들어내는 결함이 가장 위험하다는 점에서, 각 항목에는 그것이 무엇을 했는지를 함께 적었다.

  1. 순환을 "고정 혈액량 + 감쇠하는 초과분"으로 썼더니, 수혈은 시술 직후에는 맞아 보이고 하루 뒤 태아를 20 g/dL로 혈액농축시켰다. 혈장 용적 + 적혈구 용적으로 다시 썼고, 그 과정에서 첫 오류가 감추고 있던 두 번째 오류가 드러났다 — 농축 적혈구가 태아 내 항체를 희석하고 있었는데, 실제로는 그렇지 않다.
  2. 조혈이 빈혈에만 반응하고 다혈에는 반응하지 않아서, 수혈로 다혈이 된 태아가 계속 최대로 적혈구를 만들었다. 이것이 수혈 후 감소의 대부분을 상쇄하고 감소율을 파괴 속도에 둔감하게 만들었다. EPO를 Hb MoM에 대해 양방향으로 고쳤다.
  3. 생산을 절대 속도로 썼는데, 질량이 네 배가 되는 태아에게는 맞지 않는다. 이제 요구량(노화 + 혈액량 성장)의 배수이며, 그래서 k_prod = 1은 적합된 숫자가 아니다.
  4. Starling 균형에 기저 불균형이 있어서 건강한 태아가 18주부터 복수를 모았고 사망 위험 함수가 그것에 반응했다. 이제 림프 용량을 기저 여과량으로 정의한다.
  5. 장수 형질세포가 없어서 감작된 모든 산모의 역가가 임신 중에 붕괴했다(33주에 15 → 0.06 IU/mL).
  6. 감작을 태아 세포의 청소 flux로 구동했는데, 그러면 72시간 창이 불가능하다. 이제 노출 적분으로 구동하며, 그 결과 72시간 창이 유도된다.
  7. 빌리루빈에 총 체수분 분포용적(0.75 L/kg)을 주었다. 알부민 결합이므로 0.20 L/kg이다. 잘못된 용적으로는 생리적 황달의 산술이 닫히지 않는다.
  8. UGT1A1 성숙을 6일 시상수의 1차 과정으로 썼더니 생후 3일에 성인의 40% 활성이 되었다.
  9. 교환수혈이 공혈세포를 제거하지 않고 추가만 했다. 그래서 공혈 질량이 시행마다 커지고, 그 노화가 커지고, 빌리루빈 생산이 커지고, 역치가 다시 걸리는 양성 피드백이 생겼다 — 한 신생아에서 총 빌리루빈 1.2×10⁷ mg/dL과 69회의 "교환"에 도달했다. 이중용적 교환은 용적 중성이며 순환 내용물의 약 85%를 제거한다.
  10. "고정 2주 간격 IUT" 프로토콜이 한 번도 작동하지 않았다. 첫 트리거를 설정하는 코드가 없어서 그 arm이 조용히 "수혈 0회"를 보고하고 무치료와 수치적으로 동일해졌다.
  11. IVIG 기전 분해에서 "FcγR 단독" arm을 IVIG 풀을 0으로 만들어 구현했는데, 그러면 두 기전이 동시에 사라진다. arm이 무력해 보였고 서술은 진실과 정반대 결론을 내렸다. 이제 모델에 ivig_compete 스위치가 있다.

추가로 모델이 아니라 분석 스크립트에 있던 두 개의 조용한 버그도 기록한다: 서식 문자열 안의 홀따옴 %("40% of adult")가 %o 변환으로 읽혀 40분치 계산의 마지막 블록에서 스크립트를 죽였고, 4절의 점도 민감도가 이동된 문턱값을 풀지 않고 상수를 인쇄했다. hdfn_section_rerun.py가 존재하는 이유다.

계산에 의해 반증된 저자의 사전 기대(삭제하지 않고 보고):

  • "수혈은 헤모글로빈을 더해서 작동한다." → 최소한 그만큼 기질을 제거해서 작동한다. 2절이 두 효과를 분리한다.
  • "IVIG의 일은 FcγR 차단이 한다." → 아니다. 스위치를 고친 뒤 보니 전달 항체에 대한 효과는 거의 전부 FcRn 경쟁이었고(5.57 → 1.20 IU/mL), FcγR 차단은 거의 기여하지 않았다 — 이 정도 항체 부하에서는 망상내피계가 율속 단계가 아니기 때문이다.
  • "모체 IgG를 70% 낮추는 FcRn 차단제는 질환을 없애야 한다." → 실제로 없앤다. 태반 FcRn이 내피 FcRn보다 훨씬 포화시키기 어렵지 않다면. UNITY의 실패율이 바로 그것을 함의한다.
  • "MCA-PSV에는 점도항이 필요하다." → 넣으면 1.5 MoM 문턱값이 중등도 빈혈의 정의에서 벗어나고 위양성률이 관찰값을 넘는다(4절).

파일

파일 내용
hdfn_qsp_model.dot · .svg · .png 기계론적 지도 — 201 노드 / 18 클러스터. 상자=상태변수(ODE), 타원=매개체/flux, 육각형=약물·시술, 다이아몬드=임상 종점, 팔각형=유도된 문턱값 또는 산술 항등식
hdfn_mrgsolve_model.R 45개 ODE mrgsolve 모델 + 산과 프로토콜을 이산시간 제어기로 구현한 R 드라이버 + 16개 시나리오
hdfn_shiny_app.R 12개 탭 대시보드. 4번 탭이 A × f_ag × M을 각각의 궤적으로 보여주며, 사이드바의 모든 치료 조절기에는 그것이 움직이는 인자가 라벨로 붙어 있다
hdfn_references.md 96개 문헌. 전부 NCBI esearch/esummary로 실시간 해석(resolve)했고, 각 항목에 모델이 그 논문에서 무엇을 가져왔는지(intent) 를 함께 적어 검색된 논문이 의도와 맞지 않으면 한눈에 보이게 했다
hdfn_python_reference.py 실행된 기준 구현. 45개 ODE를 scipy로 적분한다. mrgsolve 파일과 이 파일이 어긋나면 이 파일이 옳다
hdfn_calibrate.py · calib.log · hdfn_calibration.json 4단계 보정과 그 전체 로그
hdfn_analysis.py · hdfn_reference_output.txt 위의 모든 숫자를 생산하는 스크립트와 그 출력
mkrefs.py · refs_raw.json · refs_meta.json 문헌 해석 스크립트와 원시 payload — 모든 인용을 재도출할 수 있다

45개 구획 (ODE)

모체(13) 총 IgG · 항-D IgG1 · 항-D IgG3 · 기억 B세포 · 형질세포 · 코팅되지 않은 태아 적혈구 · 코팅된 태아 적혈구 · 수동 anti-D · 근주 depot · 감작 신호 · 니포칼리맙 중앙/말초 · IVIG 유래 IgG

태아 항체(4) 총 IgG · 항-D IgG1 · 항-D IgG3 · 니포칼리맙

순환·적혈구(8) 추정체중 · 혈장 용적 · 자기 항원-양성 Hb · 공혈 항원-음성 Hb · 망상적혈구 · 옵소닌화 Hb · 전구세포 · 간외 조혈

항상성(7) EPO · 망상내피 용량 · 알부민 · 복수 · 심장 비보상 지수 · 젖산 · 핵적혈구

빌리루빈(7) 혈장 · 조직 · 장내 · 광이성체 · 양수 · UGT1A1 · 누적 신경독성 노출

기록·위험(6) 누적 위험함수 · 철 부하 · 출생 후 체중 · 태아에 전달된 누적 항체 · 누적 파괴량 · 누적 노화량


정직한 한계 (Honest limitations)

  • 수혈 후 감소율을 약 1/3 과소예측한다(0.291 대 0.40 g/dL/일, SD 0.25). 공혈 적혈구 수명을 30일로 줄여도 0.359까지만 가므로, 공혈세포 생존만으로 설명되지 않는다. 모델은 성인의 70일을 유지하고 격차를 보고한다.
  • UK "저위험" 밴드를 재현하지 못한다. <4 IU/mL 밴드에서도 44%가 수혈을 필요로 하고 88%가 신생아 교환수혈에 이른다(가상 집단 n=100). 파괴는 역가에 선형인데 컨베이어는 시간에 지수적이므로, 역가가 4배 낮아지면 질환이 4배 가벼워지는 것이 아니라 ln(4)/0.268 = 5.2주 늦춰진다. 항체→탐식 단계의 문턱 비선형성이 빠져 있는 것으로 보인다(14절).
  • MCA-PSV 위양성률은 측정 CV 10%에서 과소예측된다(5% 대 12%). 12%를 재현하려면 CV 15–20%가 필요하다(4절).
  • 모체 총 IgG가 임신 중 Malek이 측정한 30–40%가 아니라 약 12%만 떨어진다. 희석과 태반 sink는 있지만 모체 IgG 합성 감소 항이 없다 — 아마 이것이 빠진 항이다.
  • UNITY 시뮬레이션은 항-D 정량치 산포라는 하나의 분포 가정만큼만 좋다. 그 가정을 바꾸면 답이 넓게 움직인다는 사실을 스윕으로 함께 보고한다.
  • 신생아 IVIG에는 투여 경로가 없다: FcγR 항은 모체 IVIG로만 구동된다.
  • 양수 ΔOD450은 단일 혼합조로 모델링했다. Liley 구역을 정량적으로 재현하지는 않으며, anti-D 대 anti-K 대비만 재현한다.
  • 환경에 R 툴체인이 없어서 hdfn_mrgsolve_model.R과 hdfn_shiny_app.R은 실행된 Python 기준 구현을 방정식 단위로 미러링했을 뿐 직접 실행되지는 않았다.
  • 모든 파라미터는 문헌에 근거한 근사치이며, 이 모델은 교육·연구 목적이다. 실제 임상 의사결정에 사용해서는 안 된다.