// screens/chart.jsx — Smart Chart Auto-fill
function ChartScreen({ persona, setRoute }) {
const Icons = window.Icons;
const [autoFilled, setAutoFilled] = React.useState(new Set([
"patient_info", "skin_diag", "treatment_plan", "ba_images", "consent",
]));
const [doctorNote, setDoctorNote] = React.useState(
"환자분 코·볼 모공 밀도 일반 기준 대비 약 20% 높음. 염증성 여드름·홍조 동반되므로 ablative 시술 회피. RF Micro-needling 4회 + Salicylic Peel 4회 protocol 권장. 첫 회차 후 24h SMS 모니터링 필요."
);
const fields = [
{ id: "patient_info", k: "환자 정보", auto: true, from: "EMR · CRM" },
{ id: "skin_diag", k: "피부 진단 결과 (10 지표)", auto: true, from: "AI Engine" },
{ id: "indicators", k: "세부 측정 지표 (47 features)", auto: true, from: "AI Engine" },
{ id: "treatment_plan", k: "추천 시술 plan", auto: true, from: "Recommendation Engine" },
{ id: "device_setting", k: "장비 세팅 (energy/depth/shot)", auto: false, from: "(의사 입력 필요)" },
{ id: "ba_images", k: "B&A 이미지", auto: true, from: "Pre/Post Capture" },
{ id: "consent", k: "환자 동의서", auto: true, from: "전자 서명" },
{ id: "billing", k: "수납·결제 정보", auto: true, from: "POS 연계" },
{ id: "doctor_note", k: "의사 소견 (자유 기재)", auto: false, from: "(의사 입력)" },
];
return (
07 · Smart Chart Auto-fill
차트 자동 기록 — {autoFilled.size} / {fields.length} 자동 입력 완료
진단 결과·상담 내용·시술 setting·B&A 이미지·환자 동의 정보가 차트에 자동 반영됩니다. 의사는 자유 소견과 장비 세팅만 직접 기입합니다.
{/* LEFT — Chart preview */}
피부과 진료 차트
Chart ID CH-2026-05-27-0089 · 안양피부과 강남점 · 박지훈 원장
AI Auto-fill
{/* Patient info section */}
{/* Diagnosis */}
{SCORE_KEYS.slice(0, 10).map(k => (
{k}
{persona.skinScores[k]}
))}
Top Concern: {persona.topConcern} · Secondary: {persona.secondaryConcerns.join(", ")}
{/* Treatment plan */}
| 회차 |
시술 |
장비 |
예상 일정 |
비용 |
{[
{ n: 1, tx: "Secret RF Micro-needling #1", dev: "Secret RF Duo", date: "2026.06.04", price: "₩32만" },
{ n: 2, tx: "Salicylic Peel #1", dev: "—", date: "2026.06.04", price: "₩9만" },
{ n: 3, tx: "Salicylic Peel #2", dev: "—", date: "2026.06.18", price: "₩9만" },
{ n: 4, tx: "Secret RF Micro-needling #2", dev: "Secret RF Duo", date: "2026.07.02", price: "₩32만" },
].map(r => (
| {r.n} |
{r.tx} |
{r.dev} |
{r.date} |
{r.price} |
))}
{/* Device setting (manual) */}
AI 권장 reference: Energy 7-9mJ · Depth 1.5-2.0mm · Shots 1500 (cohort 142명 기준) — 최종 결정은 의사
{/* Doctor note */}
{/* B&A + consent */}
{Array.from({ length: 4 }).map((_, i) => (
{["FRONT","L45","R45","L90"][i]}
))}
{/* RIGHT — auto-fill status */}
전체 진행률
{autoFilled.size} / {fields.length}
{fields.map(f => {
const filled = autoFilled.has(f.id);
return (
{filled ? : }
{!f.auto &&
수동}
);
})}
{[
{ l: "의료법 제22조 (의무기록)", state: "준수", t: "good" },
{ l: "개인정보보호법 (영상)", state: "준수", t: "good" },
{ l: "전자서명법", state: "준수", t: "good" },
{ l: "의료기기 SW 등급", state: "Class 2 검토중", t: "watch" },
].map((c, i) => (
))}
);
}
function ChartSection({ label, filled, required, compact, children }) {
const Icons = window.Icons;
return (
{label}
{filled &&
Auto}
{required &&
의사 입력}
{children}
);
}
function Field({ l, v, mono, placeholder, wide }) {
return (
);
}
function Row({ l, v, tone }) {
return (
);
}
window.ChartScreen = ChartScreen;