Mirobody
The canonical registry of human health — roughly two thousand standardized indicators, clinical and lifestyle, resolved into one language.
Hemuppgifter och skattningar från Optimental. Fyll i direkt i mobilen, få hjälp att förstå varje steg och ta med en PDF till nästa besök. Ingenting sparas.
Translation pending
HealthGitHub @JohanWRutbergOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Webbapp för Optimental (Marcus Engström) med två delar:
/behandlare): RAADS-14, GAD-7, MADRS-S och OCI-R. Behandlaren klickar i svaren och får totalpoäng, delskalor, tolkning och färdig journaltext att kopiera.Grundprincip: vi sparar ingenting. Inga konton, ingen databas, inga kakor och ingen analys. Allt som fylls i lever i webbläsaren. PDF:en och journaltexten skapas på klienten.
npm install
cp .env.example .env.local # valfritt – lägg in ANTHROPIC_API_KEY för AI-hjälpen
npm run dev # http://localhost:3000
| Kommando | Gör |
|---|---|
npm run dev | Utvecklingsserver |
npm run build | Produktionsbygge |
npm test | Enhetstester (skattningar, mallar, AI-skydd) |
npm run check | Lint + typer + tester |
npm run format | Prettier |
CI (.github/workflows/ci.yml) kör lint, format, typer, tester och bygge på varje push och PR.
Next.js 16 (App Router, Cache Components), React 19, Tailwind CSS 4, TypeScript (strict), Zod, @react-pdf/renderer (PDF i webbläsaren) och @anthropic-ai/sdk (Claude Opus 5.5). Stilen bygger på optimental.vercel.app: samma orange, svart och logga, med Fraunces-serif i rubrikerna, en varm pappersbakgrund och pratbubblan från loggan som motiv för hjälpen.
src/
├─ app/
│ ├─ hemuppgifter/[slug] Formulär per mall (statiskt genererade)
│ ├─ behandlare/[slug] Rättningsmall per skattning
│ ├─ api/hjalp AI-hjälpen (enda serverlogiken)
│ └─ integritet Integritetstext
├─ lib/
│ ├─ templates/ Hemuppgiftsmallar som data (en fil per mall)
│ ├─ scales/ Skattningar: poäng, tolkning, journaltext (+ tester)
│ ├─ ai/ Systemprompt, krisscreening, rate limit, schema
│ └─ pdf/ PDF-layout och nedladdning
└─ proxy.ts Ger 404 för okända mallar/skattningar
Ny hemuppgift: skapa src/lib/templates/<namn>.ts efter samma mönster som tankedagbok.ts och lägg till den i src/lib/templates/index.ts. Sidan, biblioteket, länken på behandlarsidan och PDF:en kommer med automatiskt. Varje fält behöver en help-text, och mallen ska ha ett example och en aiContext (behandlarens instruktion till AI:n). Testerna kontrollerar att exemplet matchar fälten.
Ny skattning: skapa src/lib/scales/<namn>.ts med items, svarsalternativ och en compute() som returnerar poäng, tolkning och journaltext. Lägg sedan till den i src/lib/scales/index.ts och skriv tester för gränsvärdena i scales.test.ts.
AI_ENABLED=false stänger av AI-hjälpen helt, även om nyckeln finns kvar. Då döljs chatten, /api/hjalp svarar 503, och start- och integritetssidan beskriver bara förklaringarna och exemplen. AI_ENABLED=true slår på den och stoppar bygget om nyckel saknas, så att sidan aldrig utlovar en AI som inte finns. Tomt värde betyder på om nyckel finns. Byt i Vercel under Settings → Environment Variables och gör sedan Redeploy.npm run dev utan nyckel körs AI-hjälpen i testläge med förskrivna svar som bygger på mallens egna texter. Skriv #kris eller #fel i en fråga för att prova kris- och felflödet. AI_MODEL=mock aktiverar testläget även i ett produktionsbygge.ANTHROPIC_API_KEY och välj modell med AI_MODEL (claude-haiku-5-5, claude-sonnet-5-5 eller claude-opus-5-5; standard är Sonnet 5.5). Ett felstavat modellnamn stoppar bygget med ett tydligt fel.npm run dev, eller med AI_MODEL_SWITCHER=1 i en preview-miljö, finns en modellväljare i chatten, och varje svar märks med vilken modell som svarade. Servern godtar bara modeller från väljaren, så en klient kan aldrig välja en dyrare modell i skarp drift.[KRIS]. I båda fallen visas 112, Mind Självmordslinjen 90101 och 1177 i stället för ett svar.max_tokens-tak. Sonnet och Opus har dessutom server-side fallback vid nekat svar; Haiku 5.5 saknar det stödet. Innehåll loggas aldrig.effort: "low", vilket ger snabba och korta svar.AI_ENABLED (true/false), ANTHROPIC_API_KEY (valfri), AI_MODEL (valfri, se ovan) och NEXT_PUBLIC_SITE_URL (den publika adressen). Sätt AI_MODEL_SWITCHER=1 bara för Preview-miljön./api/hjalp, till exempel 30 anrop per minut och IP. Rate limiten i koden gäller per serverinstans.frame-ancestors 'none', Referrer-Policy: no-referrer och Permissions-Policy.noindex och robots.txt).help-texter, exempel och aiContext. De är skrivna som ett utkast och ska godkännas kliniskt.Journaltexterna följer Marcus formler ordagrant, med de här rättningarna:
B20) i stället för poängen (C20). I Google Sheets är text alltid ”större” än tal, så mallen skrev alltid ”över cut-off” oavsett poäng. Det är rättat och testat (13 p ger under, 14 p ger över).B2:B10, det vill säga fråga 2–9 plus totalen, i stället för fråga 1–9. Texten blev också ”…depressiva symtom symtom” vid låga poäng.