// /inject/cere-fisa.js
// Integrare completă: UI local + trimitere cerere către backend JSON
(function(){
/* -------------------------
UTILITARE
------------------------- */
function gv(id){var e=document.getElementById(id);return e?e.value:"";}
function isPacientPage(){return document.getElementById("alerta") && document.getElementById("nume") && document.getElementById("cnp");}
function getPacient(){
return {
nume: gv("nume"),
prenume: gv("prenume"),
cnp: gv("cnp"),
id_fisa: gv("id_fisa"),
nr_fisa_sps: gv("nr_fisa_sps"),
alerta: gv("alerta")
};
}
function getUserId(){
var key="sps_uid";
var id=localStorage.getItem(key);
if(!id){
id="u_"+Date.now()+"_"+Math.floor(Math.random()*999999);
localStorage.setItem(key,id);
}
return id;
}
/* -------------------------
PANOU ISTORIC
------------------------- */
function showPanel(){
var cereri=JSON.parse(localStorage.getItem("cereri_arhiva")||"[]");
var overlay=document.createElement("div");
overlay.style.position="fixed";
overlay.style.top="0";
overlay.style.left="0";
overlay.style.width="100%";
overlay.style.height="100%";
overlay.style.background="rgba(0,0,0,0.45)";
overlay.style.zIndex="999998";
overlay.style.opacity="0";
overlay.style.transition="opacity 0.25s ease";
document.body.appendChild(overlay);
setTimeout(()=>overlay.style.opacity="1",10);
var panel=document.createElement("div");
panel.style.position="fixed";
panel.style.top="50%";
panel.style.left="50%";
panel.style.transform="translate(-50%, -50%) scale(0.9)";
panel.style.width="600px";
panel.style.maxHeight="70%";
panel.style.overflowY="auto";
panel.style.background="white";
panel.style.borderRadius="10px";
panel.style.padding="20px";
panel.style.zIndex="999999";
panel.style.opacity="0";
panel.style.transition="opacity 0.25s ease, transform 0.25s ease";
panel.innerHTML="
Istoric cereri arhivă
";
cereri.slice().reverse().forEach(function(c){
panel.innerHTML+=`
${c.data} — ${c.pacient.nume} ${c.pacient.prenume}
— CNP: ${c.pacient.cnp}
— Fișa: ${c.pacient.nr_fisa_sps}
— Alerta: ${c.pacient.alerta}
—
${c.status}
`;
});
var btnClose=document.createElement("button");
btnClose.innerText="Închide";
btnClose.style.marginTop="10px";
btnClose.style.padding="8px 16px";
btnClose.style.background="#2563eb";
btnClose.style.color="white";
btnClose.style.border="none";
btnClose.style.borderRadius="6px";
btnClose.style.cursor="pointer";
btnClose.onclick=function(){overlay.remove();panel.remove();};
panel.appendChild(btnClose);
var btnClear=document.createElement("button");
btnClear.innerText="Șterge istoricul";
btnClear.style.marginLeft="10px";
btnClear.style.padding="8px 16px";
btnClear.style.background="#d9534f";
btnClear.style.color="white";
btnClear.style.border="none";
btnClear.style.borderRadius="6px";
btnClear.style.cursor="pointer";
btnClear.onclick=function(){
localStorage.removeItem("cereri_arhiva");
overlay.remove();
panel.remove();
updateBadge();
};
panel.appendChild(btnClear);
document.body.appendChild(panel);
setTimeout(()=>{
panel.style.opacity="1";
panel.style.transform="translate(-50%, -50%) scale(1)";
},10);
overlay.onclick=function(){overlay.remove();panel.remove();};
}
/* -------------------------
BADGE ISTORIC
------------------------- */
function updateBadge(){
var cereri=JSON.parse(localStorage.getItem("cereri_arhiva")||"[]");
if(!window.badgeArhiva){
let b=document.createElement("div");
b.style.position="fixed";
b.style.bottom="110px";
b.style.right="20px";
b.style.zIndex="1000000";
b.style.background="#ff3b30";
b.style.color="white";
b.style.fontSize="12px";
b.style.fontWeight="700";
b.style.padding="2px 6px";
b.style.borderRadius="9999px";
b.style.display="none";
window.badgeArhiva=b;
document.body.appendChild(b);
}
window.badgeArhiva.style.display=cereri.length>0?"block":"none";
window.badgeArhiva.innerText=cereri.length;
}
/* -------------------------
BUTON ISTORIC (GLOBAL)
------------------------- */
if(!window.butonIstoric){
let btn2=document.createElement("button");
btn2.innerText="Istoric arhivă";
btn2.style.position="fixed";
btn2.style.bottom="80px";
btn2.style.right="30px";
btn2.style.zIndex="999999";
btn2.style.padding="8px 14px";
btn2.style.background="#444";
btn2.style.color="white";
btn2.style.border="none";
btn2.style.borderRadius="6px";
btn2.style.cursor="pointer";
btn2.style.fontSize="13px";
btn2.style.boxShadow="0 4px 12px rgba(0,0,0,0.2)";
document.body.appendChild(btn2);
btn2.onclick=function(){showPanel();};
window.butonIstoric=btn2;
}
updateBadge();
/* -------------------------
BUTON "Cere fișa" (DOAR în pagina pacientului)
------------------------- */
if(isPacientPage() && !window.butonArhiva){
let btn=document.createElement("button");
btn.innerText="Cere fișa la arhivă";
btn.style.position="fixed";
btn.style.bottom="30px";
btn.style.right="30px";
btn.style.zIndex="999999";
btn.style.padding="12px 20px";
btn.style.background="#2563eb";
btn.style.color="white";
btn.style.border="none";
btn.style.borderRadius="8px";
btn.style.cursor="pointer";
btn.style.fontSize="15px";
btn.style.boxShadow="0 4px 12px rgba(0,0,0,0.2)";
document.body.appendChild(btn);
window.butonArhiva=btn;
btn.onclick=function(){
var pacient=getPacient();
var cereri=JSON.parse(localStorage.getItem("cereri_arhiva")||"[]");
var entry={
pacient: pacient,
data: new Date().toLocaleString(),
status: "în curs"
};
cereri.push(entry);
localStorage.setItem("cereri_arhiva",JSON.stringify(cereri));
updateBadge();
showPanel();
// -------------------------
// TRIMITERE CERERE CĂTRE BACKEND JSON
// -------------------------
var formData=new FormData();
formData.append("user_id", getUserId());
formData.append("nume", pacient.nume);
formData.append("prenume", pacient.prenume);
formData.append("cnp", pacient.cnp);
formData.append("nr_fisa_sps", pacient.nr_fisa_sps);
formData.append("alerta", pacient.alerta);
formData.append("created_at", new Date().toISOString().slice(0,19).replace("T"," "));
fetch("https://arhiva.sps-stoma.ro/api/cere-fisa.php",{
method:"POST",
body:formData
})
.then(r=>r.json())
.then(d=>{
entry.status="trimis";
localStorage.setItem("cereri_arhiva",JSON.stringify(cereri));
updateBadge();
})
.catch(e=>{
entry.status="eroare";
localStorage.setItem("cereri_arhiva",JSON.stringify(cereri));
updateBadge();
});
};
}
})();