Public Search · React 19 · MUI · Emotion · Tailwind
헌혈 조건 검색
약물·질병·예방접종·방문 지역 등 헌혈 조건을 키워드 하나로 검색하고, 기준 날짜를 넣으면 헌혈 가능일을 자동으로 계산해 주는 검색 도구. 데이터는 대한적십자사 혈액관리본부의 공지/안내를 JSON으로 정리한 것이다.
1. 화면
2. 핵심 기능
- 키워드 검색 — 약물명(타이레놀, 이부프로펜), 지역명(네팔, 방글라데시), 질병명을 한 번에.
- 카테고리 필터 — 약물 / 질병 / 예방접종 / 지역. 단일 선택 필터.
- 기준일 기반 자동 계산 — 제한 기간이 있는 항목은 입력한 기준일로부터 헌혈 가능일을 계산.
- 다크 모드 — React Context로 라이트/다크 토글, MUI 테마 자동 전환.
- 반응형 — 모바일 ~ 태블릿 ~ 데스크탑. 페이지당 20개, 페이지네이션 포함.
3. 데이터 스키마
조건 데이터를 표준 JSON으로 관리한다. 항목은 다음 필드를 가진다.
{
id: "medication-002",
category: "medication", // medication / disease / vaccination / region*
name: "비스테로이드성 소염진통제 (NSAIDs)",
keywords: ["소염진통제", "이부프로펜", "나프록센"],
description: "...",
allowable: false, // true면 즉시 헌혈 가능
restriction: {
type: "period", // period / permanent / after_recovery / condition_check / period_multi
periodValue: 1,
periodUnit: "day",
condition: "복용 당일 헌혈 불가"
}
} 지역 데이터는 별도 필드를 가진다 — 대륙, 위험/예외 지역, 국가별 규칙(countryName·ruleType·note·areas). 예를 들어 네팔은 수도·고지대를 제외하면 3년 제한이지만 카트만두·히말라야 트레킹은 예외다.
4. 검색 / 필터링 로직
useMemo로 키워드·카테고리·페이지 의존성 캐싱 — 입력마다 재계산.- 키워드는
name·keywords대상 부분 일치. useState+useCallback로 페이지·필터·테마 토글 관리.- 20개 단위 페이지네이션, 검색/필터 변경 시 1페이지로 리셋.
5. 면책
본 서비스는 대한적십자사 혈액관리본부의 자료를 기반으로 한 일반 참고용이다. 법적·의학적 효력이 없으며, 가장 정확한 판단은 헌혈의 집 현장 문진에서 이루어진다.