피드로 돌아가기
How we built a medicine-substitution engine that refuses to be clever
Dev.toDev.to
Backend

오탐률 제로를 위한 'Hard-block-first' 기반 약품 대체 엔진 설계

How we built a medicine-substitution engine that refuses to be clever

Aman Sachan2026년 6월 18일12intermediate

Context

약품 대체 추천 시 유사도 기반 매칭 방식은 성분명과 용량이 유사한 서로 다른 약물을 동일물질로 오판할 위험이 큼. 기존의 Levenshtein distance나 Token-overlap 기반 Scoring 방식은 의료 데이터의 특수성을 반영하지 못해 치명적인 안전 사고를 유발할 가능성이 존재함.

Technical Solution

  • 유연한 Scoring 모델을 제거하고 엄격한 결정론적 규칙을 우선 적용하는 Hard-block-first 아키텍처 설계
  • 제형 일치 확인을 위해 텍스트 기반의 Form bucket(Solid, Liquid, Injection, Topical) 분류 로직 구현
  • 약리적 차이를 유발하는 levo-, s-, dextro- 등의 Drug-prefix 불일치 시 즉시 후보군에서 제외하는 필터링 적용
  • 복합제(Combo) 여부를 판단하여 단일 성분 약물로의 잘못된 대체 추천을 차단하는 Blocking rule 구축
  • 성분별 용량 오차 범위를 단일제 10%, 복합제 5%로 제한하여 임상적 안전성 확보
  • 정규표현식 기반의 보수적 버킷팅을 통해 데이터 오염 및 비정형 텍스트의 위험성 최소화

1. 생명/금융 등 Critical Path 설계 시 확률적 Scoring보다 결정론적 Blocking Rule을 우선 배치했는가?

2. 유사도 기반 매칭 도입 전, 도메인 특성에 따른 '절대 불가능한 케이스'를 식별하여 Hard-block 리스트를 정의했는가?

3. 비정형 데이터 처리 시 데이터 소스의 신뢰도를 낮게 설정하고 보수적인 Regular Expression 필터를 적용했는가?

원문 읽기