PageSourceSearch

https://digitalbehandling.se/assets/ImplementationPlanList-VZ8uG4Ky.js

js digitalbehandling.se collected 2026-09-30 08:26:48 UTC 5,740 bytes, 1 lines download raw bytes

1import{g as A,h as T,r as c,s as p,w as v,j as a,B as g,A as L,aH as z,aI as B,aJ as o,aK as D,C as j,a as _,aL as E,k,_ as K,aM as V,aN as F,a5 as O,l as R}from"./index-CobRY8C4.js";import{O as $}from"./OnboardingBanner-BpgzpYwj.js";const q={draft:{label:"Utkast",variant:"secondary"},finalized:{label:"Färdigställd",variant:"outline"},pending_client_signature:{label:"Väntar klientsignatur",variant:"outline"},client_approved:{label:"Klient godkänt",variant:"default"},client_rejected:{label:"Avvisad av klient",variant:"destructive"},sent:{label:"Skickad",variant:"default"},acknowledged:{label:"Bekräftad",variant:"default"},superseded:{label:"Ersatt",variant:"secondary"}};function P(){const u=A(),{user:m}=T(),[r,x]=c.useState([]),[N,l]=c.useState(!0),f=c.useCallback(async()=>{if(!m)return;l(!0);const{data:e}=await p.from("user_roles").select("organization_id").eq("user_id",m.id).maybeSingle();if(!(e!=null&&e.organization_id)){x([]),l(!1);return}const{data:n,error:i}=await p.from("care_plans").select("id, client_id, status, version, deadline_at, signature_method, client_rejection_reason, updated_at").eq("plan_type","genomforandeplan").eq("organization_id",e.organization_id).is("superseded_at",null).order("deadline_at",{ascending:!0,nullsFirst:!1});if(i){v({title:"Kunde inte hämta planer",description:i.message,variant:"destructive"}),l(!1);return}const y=[...new Set((n??[]).map(t=>t.client_id))],{data:S}=await p.from("clients").select("id, first_name, last_name").in("id",y),C=new Map((S??[]).map(t=>[t.id,`${t.first_name} ${t.last_name}`]));x((n??[]).map(t=>({...t,client_name:C.get(t.client_id)??"Okänd klient"}))),l(!1)},[m]);c.useEffect(()=>{f()},[f]);async function b(e){const{data:n,error:i}=await R("create_plan_revision",{p_care_plan_id:e});if(i){v({title:"Kunde inte skapa version",description:i.message,variant:"destructive"});return}v({title:"Ny version skapad",description:"Du kan nu redigera den nya versionen."}),u(`/therapist/implementation-plans/${n}`)}function d(e){return["draft","finalized"].includes(e.status)?"active":e.status==="pending_client_signature"?"pending":["sent","acknowledged","client_approved"].includes(e.status)?"completed":e.status==="client_rejected"?"rejected":"active"}const s={active:r.filter(e=>d(e)==="active"),pending:r.filter(e=>d(e)==="pending"),completed:r.filter(e=>d(e)==="completed"),rejected:r.filter(e=>d(e)==="rejected")};function h(e){return e.deadline_at&&new Date(e.deadline_at)<new Date&&!["client_approved","sent","acknowledged","superseded"].includes(e.status)}function w(e){const n=q[e.status]??{label:e.status,variant:"secondary"};return a.jsx(j,{className:h(e)?"border-destructive":"",children:a.jsxs(_,{className:"flex flex-col gap-3 p-4 sm:flex-row sm:items-center sm:justify-between",children:[a.jsxs("div",{className:"flex-1",children:[a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx(E,{className:"h-4 w-4 text-muted-foreground"}),a.jsx("span",{className:"font-medium",children:e.client_name}),a.jsx(k,{variant:n.variant,children:n.label}),a.jsxs("span",{className:"text-xs text-muted-foreground",children:["v",e.version]}),h(e)&&a.jsxs(k,{variant:"destructive",className:"gap-1",children:[a.jsx(K,{className:"h-3 w-3"})," Försenad"]})]}),e.deadline_at&&a.jsxs("div",{className:"mt-1 flex items-center gap-1 text-xs text-muted-foreground",children:[a.jsx(V,{className:"h-3 w-3"}),"Deadline ",new Date(e.deadline_at).toLocaleDateString("sv-SE")]}),e.client_rejection_reason&&a.jsxs("div",{className:"mt-2 rounded border border-destructive/40 bg-destructive/5 p-2 text-xs",children:[a.jsxs("div",{className:"flex items-center gap-1 font-medium text-destructive",children:[a.jsx(F,{className:"h-3 w-3"})," Avvisad av klient"]}),a.jsx("div",{className:"mt-1 text-muted-foreground",children:e.client_rejection_reason})]})]}),a.jsxs("div",{className:"flex gap-2",children:[e.status==="client_rejected"&&a.jsxs(g,{size:"sm",variant:"default",onClick:()=>b(e.id),children:[a.jsx(O,{className:"mr-1 h-3 w-3"})," Skapa ny version"]}),a.jsx(g,{size:"sm",variant:"outline",onClick:()=>u(`/therapist/implementation-plans/${e.id}`),children:"Öppna"})]})]})},e.id)}return a.jsxs("div",{className:"space-y-4 p-4",children:[a.jsxs(g,{variant:"ghost",onClick:()=>u(-1),children:[a.jsx(L,{className:"mr-2 h-4 w-4"})," Tillbaka"]}),a.jsxs("div",{children:[a.jsx("h1",{className:"text-2xl font-bold",children:"Genomförandeplaner"}),a.jsx("p",{className:"text-sm text-muted-foreground",children:"Versionshanterade planer skapade efter mottagen vårdplan."})]}),a.jsx($,{storageKey:"therapist-implementation-plans",title:"Så fungerar genomförandeplaner",children:a.jsxs("p",{children:["När en remittent skickar en vårdplan dyker den upp som ett ",a.jsx("em",{children:"aviserande"})," i din inkorg. Skapa då en genomförandeplan baserad på vårdplanen, fyll i bedömning, mål och uppföljning, och låt klienten signera digitalt eller på papper. Versioner skapas automatiskt om något behöver justeras."]})}),a.jsxs(z,{defaultValue:"active",children:[a.jsxs(B,{children:[a.jsxs(o,{value:"active",children:["Aktiva (",s.active.length,")"]}),a.jsxs(o,{value:"pending",children:["Väntar signatur (",s.pending.length,")"]}),a.jsxs(o,{value:"rejected",children:["Avvisade (",s.rejected.length,")"]}),a.jsxs(o,{value:"completed",children:["Klara (",s.completed.length,")"]})]}),["active","pending","rejected","completed"].map(e=>a.jsx(D,{value:e,className:"space-y-2",children:N?a.jsx("p",{className:"text-sm text-muted-foreground",children:"Laddar…"}):s[e].length===0?a.jsx(j,{children:a.jsx(_,{className:"p-6 text-center text-sm text-muted-foreground",children:"Inga planer i denna kategori."})}):s[e].map(w)},e))]})]})}export{P as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.