// record-pdf.jsx — document previews (discharge now; consent added with counseling).
// Renders an A4-style bilingual (English + Kannada) document with signature.

const PT = window.PCT;

function DPdfPreview({ session, onBack }) {
  const store = useRStore();
  const summary = session.summary;
  const edits = session.edits || {};
  const v = (k) => edits[k] != null ? edits[k] : summary[k];
  const sig = (session.signatures || [])[0];
  const sp = window.PR.specialties[session.specialty];
  const K = window.PR.kannada;
  const linked = session.linkedCounseling;

  return (
    <div>
      <StepHead n={4} title="Discharge summary · PDF" sub="Bilingual English + Kannada, ROHINI-stamped, NABH AAC.13 / AAC.12 compliant. (Demo preview — download produces a placeholder file.)"
        right={<div style={{ display:'flex', gap:8 }}>
          <RBtn kind="ghost" icon="left" onClick={onBack}>Back</RBtn>
          <RBtn kind="primary" icon="download" onClick={()=>downloadDoc(session)}>Download PDF</RBtn>
        </div>}/>

      {!sp.validated && (
        <div style={{ marginTop:14, padding:'10px 14px', background:'#FEF3C7', borderRadius:9, fontSize:12, color:'#92400E', display:'flex', alignItems:'center', gap:9 }}>
          <RIcon name="alert" size={15} color="#B45309"/><span><strong>Unverified specialty content.</strong> Orthopaedic figures are international benchmarks pending clinical validation — not for clinical use.</span>
        </div>
      )}

      {/* Document */}
      <div style={{ marginTop:18, display:'flex', flexDirection:'column', gap:20, alignItems:'center' }}>
        {/* English page */}
        <DocPage>
          <DocHeader subtitle="DISCHARGE SUMMARY" linked={linked}/>
          <div style={{ display:'flex', flexDirection:'column', gap:12 }}>
            {window.PRD.sections.map(sec => (
              <DocSection key={sec.key} n={sec.n} title={sec.title}>
                {sec.key==='specialty' ? <DocSpecialty data={v('specialty')}/> : <DocText text={v(sec.key)}/>}
              </DocSection>
            ))}
          </div>
          <DocSignature doctorName={session.doctorName} reg={session.doctorReg}/>
          <DocFooter page="1 (English)"/>
        </DocPage>

        {/* Kannada page — pre-translated section bodies + labels */}
        <div data-demo="rec-pdf-kn">
          <DocPage>
            <DocHeader subtitle={K.dischargeTitle} kannada linked={linked}/>
            <KannadaBody session={session} v={v}/>
            <DocSignature doctorName={session.doctorName} reg={session.doctorReg} kannada/>
            <DocFooter page="2 (ಕನ್ನಡ)"/>
          </DocPage>
        </div>
      </div>

      <div style={{ display:'flex', justifyContent:'center', gap:10, marginTop:24 }}>
        <RBtn kind="ghost" icon="whatsapp" onClick={()=>store.toast({icon:'whatsapp', title:'Discharge summary sent', body:`Link sent to patient · ${session.profile.phone||''}`})}>Send to patient on WhatsApp</RBtn>
        <a href="#/" style={{ textDecoration:'none' }}><RBtn kind="ghost" icon="home">Back to home</RBtn></a>
      </div>
    </div>
  );
}

// Kannada body — uses pre-translated section content from PRD_SUMMARIES_KN,
// falling back to the (edited) English content only if a translation is absent.
function KannadaBody({ session, v }) {
  const K = window.PR.kannada;
  const kn = (window.PRD_SUMMARIES_KN || {})[session.journeyId];
  return (
    <div style={{ display:'flex', flexDirection:'column', gap:12, fontFamily:"'Noto Sans Kannada', sans-serif" }}>
      {window.PRD.sections.map(sec => {
        const knVal = kn ? kn[sec.key] : null;
        return (
          <DocSection key={sec.key} n={sec.n} title={K.sectionLabels[sec.key] || sec.title} kannada>
            {sec.key==='specialty'
              ? <DocSpecialty data={knVal || v('specialty')} kannada/>
              : <div style={{ fontSize:11.5, lineHeight:1.7, color:'#1F1B16', whiteSpace:'pre-wrap', fontFamily:"'Noto Sans Kannada', sans-serif" }}>{window.PR.deKn(knVal || v(sec.key))}</div>}
          </DocSection>
        );
      })}
    </div>
  );
}

function DocPage({ children }) {
  return (
    <div style={{ width:'100%', maxWidth:760, background:'#fff', border:`1px solid ${PT.c.border}`, borderRadius:8, boxShadow:'0 4px 16px -6px rgba(0,0,0,.1)', padding:'40px 48px' }}>
      {children}
    </div>
  );
}

function DocHeader({ subtitle, kannada, linked }) {
  const t = window.PR.tenant;
  return (
    <div style={{ borderBottom:`2px solid ${PT.c.text}`, paddingBottom:14, marginBottom:18 }}>
      <div style={{ display:'flex', justifyContent:'space-between', alignItems:'flex-start' }}>
        <div>
          <div style={{ fontSize:18, fontWeight:700, letterSpacing:'-.01em' }}>{t.name}</div>
          <div style={{ fontSize:11, color:PT.c.textMuted, marginTop:2 }}>{t.addressLine}</div>
          <div style={{ fontSize:10.5, color:PT.c.textMuted, fontFamily:PT.f.mono, marginTop:3 }}>ROHINI {t.rohini} · NABH {t.nabh} · GST {t.gst}</div>
        </div>
        <div style={{ textAlign:'right' }}>
          <div style={{ fontSize:13, fontWeight:700, letterSpacing:'.04em', color:PT.c.brand }}>{subtitle}</div>
          <div style={{ fontSize:9.5, color:PT.c.textDim, fontFamily:PT.f.mono, marginTop:3 }}>{kannada?'NABH AAC.13 / AAC.12':'NABH-compliant'}</div>
        </div>
      </div>
      {linked && (
        <div style={{ marginTop:10, fontSize:10.5, color:PT.c.brand, fontStyle:'italic' }}>
          Patient was counselled on {window.PR.dayLabel(linked.counselingDate)} for {linked.procedureLabel} by {linked.doctorName}.
        </div>
      )}
    </div>
  );
}

function DocSection({ n, title, children, kannada }) {
  return (
    <div>
      <div style={{ fontSize:11.5, fontWeight:700, color:PT.c.text, marginBottom:7, lineHeight:1.6, fontFamily: kannada?"'Noto Sans Kannada', sans-serif":PT.f.sans }}>
        <span style={{ color:PT.c.brand, fontFamily:PT.f.mono, marginRight:7 }}>{n}.</span>
        {title}
      </div>
      <div style={{ paddingLeft:18 }}>{children}</div>
    </div>
  );
}
function DocText({ text }) {
  const insufficient = typeof text==='string' && text.includes('[INSUFFICIENT DATA');
  return <div style={{ fontSize:11.5, lineHeight:1.6, color: insufficient?PT.c.warning:'#1F1B16', whiteSpace:'pre-wrap', fontStyle: insufficient?'italic':'normal' }}>{text}</div>;
}
function DocSpecialty({ data, kannada }) {
  if (!data || typeof data!=='object') return <DocText text={String(data)}/>;
  const labelsEn = { maternalStatus:'Mother\u2019s postpartum status', neonatalStatus:'Newborn status', feedingStatus:'Feeding', contraceptionPlan:'Contraception plan', weightBearing:'Weight-bearing', implantRecord:'Implant record', woundStatus:'Wound status', romAchieved:'Range of motion', vteProphylaxis:'VTE prophylaxis', physioPlan:'Physiotherapy plan' };
  const labelsKn = { maternalStatus:'ತಾಯಿಯ ಸ್ಥಿತಿ', neonatalStatus:'ನವಜಾತ ಶಿಶು', feedingStatus:'ಆಹಾರ', contraceptionPlan:'ಗರ್ಭನಿರೋಧಕ ಯೋಜನೆ', weightBearing:'ಭಾರ ಹೊರುವಿಕೆ', implantRecord:'ಇಂಪ್ಲಾಂಟ್ ದಾಖಲೆ', woundStatus:'ಗಾಯದ ಸ್ಥಿತಿ', romAchieved:'ಚಲನಾ ವ್ಯಾಪ್ತಿ', vteProphylaxis:'ರಕ್ತಹೆಪ್ಪು ತಡೆ', physioPlan:'ಭೌತಚಿಕಿತ್ಸೆ ಯೋಜನೆ' };
  const L = kannada ? labelsKn : labelsEn;
  const keys = data._shape==='OBGYN'
    ? ['maternalStatus','neonatalStatus','feedingStatus','contraceptionPlan']
    : ['weightBearing','implantRecord','woundStatus','romAchieved','vteProphylaxis','physioPlan'];
  return (
    <div style={{ display:'flex', flexDirection:'column', gap:6, fontFamily: kannada?"'Noto Sans Kannada', sans-serif":undefined }}>
      {keys.filter(k=>data[k]).map((k,i)=>(
        <div key={i} style={{ fontSize:11.5, lineHeight:1.6, color:'#1F1B16' }}><strong>{L[k]}:</strong> {kannada?window.PR.deKn(data[k]):data[k]}</div>
      ))}
    </div>
  );
}
function DocSignature({ doctorName, reg, kannada }) {
  return (
    <div style={{ marginTop:28, paddingTop:16, borderTop:`1px solid ${PT.c.border}`, display:'flex', justifyContent:'space-between', alignItems:'flex-end' }}>
      <div style={{ fontSize:9.5, color:PT.c.textDim, fontFamily:PT.f.sans, maxWidth:240, lineHeight:1.5 }}>
        {kannada?'ವೈದ್ಯರ ಸಹಿ ಮುದ್ರಿತ ಪ್ರತಿಯ ಮೇಲೆ ಪಡೆಯಲಾಗುತ್ತದೆ.':'Consultant signs the printed copy (physical signature).'}
      </div>
      <div style={{ textAlign:'center', minWidth:200 }}>
        <div style={{ height:40 }}/>
        <div style={{ borderTop:`1px solid ${PT.c.text}`, paddingTop:5, fontSize:11.5, fontWeight:600 }}>{doctorName}</div>
        <div style={{ fontSize:10, color:PT.c.textMuted, fontFamily:PT.f.mono }}>Reg {reg} · Consultant</div>
        <div style={{ fontSize:9, color:PT.c.textDim, fontFamily:PT.f.mono, marginTop:3 }}>{kannada?'ಸಹಿ / ದಿನಾಂಕ':'Signature / Date'}</div>
      </div>
    </div>
  );
}
function DocFooter({ page }) {
  return <div style={{ marginTop:18, paddingTop:10, borderTop:`1px solid ${PT.c.border}`, display:'flex', justifyContent:'space-between', fontSize:9, color:PT.c.textDim, fontFamily:PT.f.mono }}>
    <span>Generated by PulseChart Record · {new Date().toLocaleDateString('en-IN')}</span><span>Page {page}</span>
  </div>;
}

// Produce a simple downloadable text file as the demo "PDF"
function downloadDoc(session) {
  const s = session.summary; const e = session.edits||{};
  const v = (k)=> e[k]!=null?e[k]:s[k];
  let out = `${window.PR.tenant.name}\nDISCHARGE SUMMARY\nROHINI ${window.PR.tenant.rohini} · NABH ${window.PR.tenant.nabh}\n\nPATIENT: ${session.profile.patientIdentifier} (${session.profile.uhid})\n\n`;
  window.PRD.sections.forEach(sec => {
    out += `${sec.n}. ${sec.title.toUpperCase()}\n`;
    const val = v(sec.key);
    if (sec.key==='specialty' && val && typeof val==='object') {
      Object.entries(val).filter(([k])=>k!=='_shape').forEach(([k,vv])=>{ if(vv) out += `   - ${k}: ${vv}\n`; });
    } else { out += `${val}\n`; }
    out += '\n';
  });
  const sig=(session.signatures||[])[0];
  if (sig) out += `\nSigned: ${sig.name} (${sig.reg}) · ${new Date(sig.at).toLocaleString('en-IN')}\n`;
  out += `\n[Demo document — not for clinical use. PulseChart Record.]`;
  const blob = new Blob([out], { type:'text/plain' });
  const a = document.createElement('a'); a.href = URL.createObjectURL(blob);
  a.download = `discharge-${session.profile.uhid}.txt`; a.click();
  if (window.__prStore) window.__prStore.toast({ icon:'download', title:'Discharge summary downloaded', body:'Demo placeholder file' });
}

Object.assign(window, { DPdfPreview, downloadDoc });
