Mirobody
인간 건강의 표준 레지스트리, 약 2천 개 임상·생활 지표를 하나의 언어로 정리
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Any clinical form → a valid FHIR R4 Questionnaire, coded in LOINC. A Claude agent proposes, the HAPI FHIR validator decides.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Any clinical form → a valid FHIR Questionnaire.
Paste a blank clinical form, or upload a PDF or a screenshot. An AI agent built on the Claude API turns it into a FHIR R4 Questionnaire (SDC), with questions coded in LOINC. It keeps correcting itself until the Questionnaire passes validation.
The model proposes, the validator decides.
Live demo: form2fhir.vercel.app · Demo only: blank forms, no real patient data. Not a medical device.
Browser ── POST /api/convert (text | PDF | image) ──► Nuxt server route
▲ │ size, type and rate-limit checks
│ Server-Sent Events: each step, then the result ▼
└───────────────────────────────────────────── agent loop (≤ 4 Claude calls)
┌───────────────────────┴──────────────────────┐
search_loinc submit_questionnaire
NLM Clinical Tables API server checks ─► HAPI FHIR $validate
errors go back to Claude to fix
search_loinc with every question worth coding. The server queries the NLM Clinical Tables LOINC API and remembers every code it returned. For a known instrument (PHQ-9, AUDIT-C…) it also fetches the panel's official questions, with their answers and scores.submit_questionnaire with a complete FHIR R4 Questionnaire. The server checks what HAPI can't (every LOINC code must come from step 1; every scored LOINC answer carries its exact score as an ordinalValue; choice items need answer options; no HTML rendering extensions), warns when an item under a panel uses a code that is not one of the panel's questions, then calls HAPI FHIR $validate.Every step streams to the UI, which renders the result with NLM's LHC-Forms, plus the JSON, the codes table and the validator report.
server/lib/agent.ts, so every step can be traced and tested with a scripted fake client.EventSource only supports GET, so the browser reads the text/event-stream body of a fetch POST. No server-side state, which suits serverless.max_tokens and searches.cp .env.example .env # set ANTHROPIC_API_KEY
pnpm install
pnpm dev
| Command | What it does |
|---|---|
pnpm test | Unit tests (offline) |
pnpm test:live | Smoke tests against the LOINC search and HAPI FHIR APIs |
pnpm typecheck / pnpm lint / pnpm build | Quality gates |
node eval/run.ts --url http://localhost:3000 | Runs every fixture through the real API (costs API credits) |
Five blank forms (eval/fixtures.json lists each one's source and license), run end to end through /api/convert with Claude Sonnet 5.5:
| Form | Lang | Valid | Claude calls | LOINC coverage | Code accuracy | Time | Est. cost |
|---|---|---|---|---|---|---|---|
| Vital Signs Intake | en | ✅ | 2 | 9/13 (69%) | 8/10 (1 wrong) | 14.8 s | $0.044 |
| PHQ-9 | en | ✅ | 2 | 10/10 (100%) | 10/10 | 26.5 s | $0.083 |
| Pre-Visit Health Questionnaire (PDF) | en | ✅ | 2 | 4/11 (36%) | 2/4 | 14.0 s | $0.033 |
| Questionnaire relatif à l'état de santé du sportif mineur (Journal officiel, PDF) | fr | ✅ | 2 | 1/26 (4%) | 0/1 | 21.8 s | $0.063 |
| Bilan annuel de suivi (diabète de type 2, PDF, 3 pages) | fr | ✅ | 3 | 16/56 (29%) | 15/20 | 75.7 s | $0.159 |
5/5 valid · median 21.8 s · total ≈ $0.38 · code accuracy 35/45 (78%), 1 wrong (2026-10-27, eval/results/).
How to read it:
$validate operation reported no errors and the server's own checks passed (every LOINC code was returned by a search in the same run).expectedCodes in eval/fixtures.json, each code checked against the LOINC API): correct, wrong (another code) or missing (uncoded). Valid FHIR is not enough: a Questionnaire can pass $validate with the wrong code. Re-scoring the previous run (2026-10-16) gives 37/45 with 2 wrong, among them the PHQ-9 difficulty question coded with the generic 44256-6 instead of the panel's own 69722-7. Since panel searches return the panel's official questions, the PHQ-9 is 10/10 with no wrong code; the agent leaves a few more items uncoded instead. NLM's AUDIT-C definition replaces item 1 (68518-0) with another question, so the agent now also searches each question of an embedded instrument on its own: AUDIT-C item 1 is coded since 2026-10-27. The one wrong code is the respiratory rate coded as "Respiratory rate --resting" (9303-9) instead of 9279-1; the form does not say whether the patient is at rest. Pre-Visit went from 3/4 to 2/4 in this run (pain left uncoded). One run per form, so expect some variance between runs.eval/results/.Code: MIT. The forms used as examples and eval fixtures keep their own licenses, listed in eval/fixtures.json (PHQ-9: Pfizer, free to reproduce; the French sports questionnaire: an official text published in the Journal officiel; the other forms were written for this project and are CC0).