Jamorham
Nightscout용 xDrip+ 버전
Sehat Copilot이 처방전과 검사 결과를 읽어 10개 인도 언어로 쉬운 말로 설명해 줍니다. 의사는 아닙니다
Sehat Copilot reads your prescriptions and lab reports and explains them in plain language, in 10 Indian languages. A guide to your records. Not a doctor.
건강JavaScript · PythonGitHub @OrbitronOfficial온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
AI-powered personal health copilot. Upload a prescription, lab report or discharge summary; it reads the document, checks every value against reference ranges, explains it in plain English or Hindi, and files it into one health profile and timeline. Records export as an ABDM-style FHIR bundle.
Built by team ANTIJAREX for HacXLerate 2026 Round 1 (Altrix Labs challenge: AI-Powered Personal Health Copilot).
Sehat Copilot explains records. It does not diagnose and is not a substitute for a doctor.README 전문 보기 ↗Your health records, explained, organised, and connected to your doctor.
Sehat Copilot is an AI-powered personal health copilot. Upload a prescription, lab report or discharge summary: it reads the document, checks every value against reference ranges, explains it in plain language (English, Hindi and eight more Indian languages), and files it into one health profile and timeline for you and your family. Reminders, a health journal, wellness trends and a doctor workspace keep that picture current between visits. Records export as an ABDM-style FHIR bundle.
Built by team ANTIJAREX for HacXLerate 2026 (Altrix Labs challenge: AI-Powered Personal Health Copilot). Round 1 selected; this repository is the Round 2 build.
Sehat Copilot explains records. It does not diagnose and is not a substitute for a doctor. In an emergency, call 112.
Live: https://sehat-copilot.vercel.app · No sign-up needed: each role has a one-click demo on the sign-in page.
Open /login and pick a role. Every demo uses fictional people.
| Role | Demo button | What you see |
|---|---|---|
| Patient | Continue with demo account | The Mehra family (Rahul, Sunita, Aanya) with a year of records, readings, journal entries and medicines; switch members from the family chip |
| Doctor | Continue with doctor demo | Dr. R. K. Bansal's clinic: today's patients sorted by urgency, past consultations, patient history, prescriptions and a to-do list |
| Nurse / staff | Continue with nurse demo | The same clinic's to-do list as a nurse sees it: open tasks, history by date, nothing else |
A good path: patient dashboard → upload a report → review it beside the original → doctor demo → write a consultation note → approve → the prescription appears in the patient's app.
| Brief requirement | Where |
|---|---|
| Medical record intelligence and OCR | Photo, PDF, Word (.docx) or text in; medicines, doses, test values, diagnoses and dates out, each with a confidence score and the exact line it was read from. Non-medical files are refused with a clear message |
| Summary in simple language | Every record gets a summary, a meaning for each abnormal value, the purpose of each medicine and questions to ask the doctor |
| Unified health profile | Timeline, conditions, recorded medicines, latest values and trend charts across reports, per family member |
| Multi-language (bonus) | Ten languages ship ready (English, Hindi, Bengali, Telugu, Marathi, Tamil, Gujarati, Kannada, Malayalam, Punjabi); 33 more are translated on demand. Hindi, mixed-language and handwritten documents are read |
| ABDM/ABHA readiness (bonus) | FHIR R4 bundle export shaped on NRCeS profiles; mock ABHA link that follows the ABDM steps (number, OTP, consent, choose records, import) |
| Need | Feature |
|---|---|
| Grounded chat | Ask about your own records; each answer is labelled From your records, General information or Ask your doctor |
| Medicine and appointment reminders | Built automatically from saved prescriptions: confirm, snooze (15 min, 1 h, pick a time), edit, skip; courses stop on their end date; follow-ups become visits; Google Calendar and .ics export |
| Personalised wellness, with reasons | Habits and suggestions drawn from the user's own logged data; low or high readings get safe first-aid guidance that always ends with "talk to your doctor" and never names a medicine |
| Trends, risk flags, next steps | Weekly, 30-day, 90-day and 1-year charts for readings and journal (sleep, mood, energy, pain); visits done, missed and upcoming; a pre-visit summary for the doctor |
| Agentic AI you can check | Every AI action (records read, reminders created) is shown with its source and can be edited or rejected before it takes effect |
| Voice | Speak a question or a journal entry; hear answers read aloud |
| Family profiles | Separate profiles with their own records and reminders, parental PIN for a child's profile, caregiver alerts when a member misses a dose |
| Sync across devices | End-to-end encrypted: the key is derived on the device and the server only ever stores ciphertext |
| Feature | What it does |
|---|---|
| Today | Greeting and a live summary; daily counts; the queue sorted Major / Moderate / Minor from the complaint, with the reason shown and a doctor override |
| Consultation | Record, drop an audio file or type notes in any supported language; the AI drafts a prescription; misheard medicine names are corrected against the reference list, and ambiguous ones are flagged for the doctor instead of guessed; non-medical conversations are refused |
| Approve and send | The doctor edits every line and approves; the prescription reaches the matching family member's app, with reminders |
| Prescriptions and history | Every sent prescription with its recording and transcript; per-patient visits and prescriptions |
| Staff to-do | A PA, nurse or receptionist joins with a single-use code and can only read and update the to-do list; everything they add or complete waits in the doctor's daily review |
flowchart TB
subgraph Device["Browser (patient, doctor, staff)"]
U[Photo / PDF / Word / text] --> B[Upload: checks, downscale, preview]
V[Review screen<br/>extraction beside the original,<br/>source line per value, user corrects]
S[(IndexedDB<br/>records, originals, readings,<br/>family profiles)]
D[Dashboard, timeline, trends,<br/>reminders, journal, wellness, chat]
DR[Doctor workspace<br/>queue, consultation, history]
ST[Staff page<br/>to-do only]
E[Encrypt on device<br/>PBKDF2 to AES-GCM]
O[Backup reader: Tesseract.js]
end
subgraph Server["Python server on Vercel (standard library only)"]
R[1 Read<br/>vision model fills a fixed JSON schema]
C[2 Check: code<br/>ranges, flags, plausibility,<br/>handwriting cap, medicine list, dates]
W[3 Explain<br/>model writes around fixed flags;<br/>numeric guard]
P[4 Profile: code<br/>conditions, medicines, trends,<br/>attention list, grounded questions]
G[Safety gate: code<br/>emergency and medicine-change<br/>questions get fixed replies]
CO[Consult: transcript to draft,<br/>medicine-name correction]
T[Team: staff access codes,<br/>shared to-do, review]
F[FHIR R4 bundle, ABDM profiles]
end
subgraph Store["Private Vercel Blob"]
VA[(Encrypted vaults)]
AD[(Doctor inbox, staff lists)]
end
subgraph AI["AI services"]
GEM[Gemini: reads documents]
GRQ[Groq: writes, chat, speech to text]
end
B -->|/api/extract| R --> C --> V -->|save| S
R -.-> GEM
B -.vision unavailable.-> O --> R
V -->|/api/explain| W -.-> GRQ
S --> D -->|/api/insights| P
D -->|/api/ask| G --> GRQ
S -->|/api/fhir| F
S --> E -->|/api/sync| VA
DR -->|/api/transcribe, /api/consult| CO -.-> GRQ
DR -->|/api/consult/send| AD -->|/api/inbox| S
DR -->|/api/team| T --> AD
ST -->|/api/team| T
The data pipeline has four steps: read, check, explain and profile. Only steps 1 and 3 use a model. Step 2, step 4 and the safety gate are plain code, so the medical decisions are deterministic and testable.
ranges.py from the range printed on the report (or a standard table). The model only words the explanation and cannot change a flag.python tools/benchmark.py scores the saved readings of the five bundled sample documents against what is printed on them.
| Field | Correct |
|---|---|
| Document type and date | 10 of 10 |
| Test found, value, and flag | 102 of 102 |
| Medicine found, strength, and frequency | 18 of 18 |
| Diagnosis found | 5 of 5 |
| No invented tests | 5 of 5 |
| All fields | 140 of 140 |
Read this narrowly: these are clean, printed, synthetic documents rendered by our own script. It is not a measure of accuracy on photographed paper or real handwriting, where we expect errors and rely on the review screen, the confidence cap and the plausibility guard.
Doctor consultations. Eight synthetic two-voice recordings (Hindi, Indian English, Hinglish, Tamil, Bengali, Marathi and two non-medical conversations) went through speech-to-text and drafting. All six consultations produced a draft and both non-medical recordings were refused. Two of thirteen medicine names were misheard ("telmezartin", "Prazole"). The first is now corrected automatically. The second is flagged for the doctor because three medicines are equally close.
Python 3 standard library server (no framework, nothing to install), vanilla JavaScript frontend with no build step, Three.js for the decorative 3D helix, Gemini (document reading), Groq (writing, chat, speech to text), NVIDIA NIM and OpenRouter as fallbacks, Tesseract.js as the backup OCR, Vercel for hosting and private Blob storage.
| File | Role |
|---|---|
server.py, api/index.py | HTTP API, local and Vercel entry |
pipeline.py | extract, check, explain, overview, ask, consultation drafting, medicine-name correction |
ranges.py | reference ranges, LOINC codes, flagging |
insights.py | unified profile: conditions, medicines recorded, test series, attention list, grounded questions, cross checks |
safety.py | emergency and medication gate, numeric guard |
llm.py | model calls, key rotation and fallback chains |
fhir.py | FHIR R4 bundle builder |
cloud.py | encrypted vault storage and small app documents (private Blob, local files in development) |
team.py | staff access codes, shared to-do list and doctor review |
clinic.py | clinic prototype with server-side accounts (work in progress, see V3-NOTES.md) |
public/ | site (/, /pricing, /login), patient app (/app), doctor workspace (/doctor.html), staff page (/staff.html) |
public/*.js | one file per feature: family, reminders, journal, wellness, voice, bulk, sync, inbox, doctor, fx |
tests/ | unit and HTTP tests |
tools/ | sample-document generator, benchmark, demo builders, interface translators, demo-video tooling |
python server.py
Then open http://localhost:8820 (set PORT to change it). Create a .env with GEMINI_API_KEY and GROQ_API_KEY. NVIDIA_API_KEY, OPENROUTER_API_KEY and BLOB_READ_WRITE_TOKEN are optional. Without a Blob token, sync vaults, the doctor inbox and staff lists are kept in data/ on disk.
On localhost, /app?seed=1 fills a year of fictional family data, and /app?seed=reset removes exactly what it added.
python -m pytest tests
There are 347 tests (341 run, 6 skipped) covering the safety gate, labels, numeric guard, ranges, extraction normalisation, date repair, reminders logic, sync storage, consultation drafting and staff access rules. CI (.github/workflows/ci.yml) runs flake8, a bandit security scan and the test suite on every push.
Known state: the HTTP tests for the in-progress clinic prototype (tests/test_clinic_v3.py) are skipped, with the reason stated, until its routes are merged into server.py. Everything else passes.
data/medicines.json (135 medicines with brand names, classes, uses and interaction notes) comes from our earlier project, CarePath. Three.js (MIT licence, vendored as public/vendor/three.module.js) draws the decorative DNA helix. The site pages follow the visual rhythm of CarePath's landing page, but their markup and copy were written for this project. Everything else was written during the hackathon by team ANTIJAREX, built with an AI coding assistant as the rules allow.