// Historique du dossier patient : qui l'a ouvert, qui a modifié quoi.
//
// Les deux vues sont séparées parce qu'une ligne est écrite à chaque ouverture :
// mélangées, les consultations noieraient les modifications.
//
// Les consultations viennent du journal d'audit, qui les écrit depuis la
// première migration. Les modifications viennent du journal de champs que le
// PATCH du dossier écrit dans sa propre transaction. Les deux se lisent par
// `GET /api/v1/patients/{id}/history`, et rien ici n'est illustré : sans
// serveur, l'écran dit l'erreur qu'il a reçue.
const PH_T = window.VascoDesignContract;
const PH_OPENER = { open: null };
const PH_PAGE_SIZE = 20;
function PatientHistoryIcon({ color }) {
return ;
}
// Un champ modifié : l'ancienne valeur barrée, la nouvelle en clair.
// Une valeur absente se dit « Non renseigné » au lieu de laisser un vide
// qu'on lirait comme une donnée.
function PatientHistoryChange({ field }) {
const { fieldText } = window.VascoPatientHistory;
return (
);
}
// Le nom se lit dans le dossier déjà chargé par la liste : l'historique parle
// du dossier ouvert, il n'a pas à le recharger pour afficher son titre.
function patientHistoryRecordName(patientId) {
const patient = (window.PATIENTS_FULL || []).find((item) => item.id === patientId);
if (!patient) return 'Ce dossier';
return [patient.last, patient.first].filter(Boolean).join(' ') || 'Ce dossier';
}
// La feuille vit DANS le dossier, comme celle des évènements : c'est ce qui lui
// donne le cadre du téléphone au téléphone, et la colonne du dossier au bureau.
// Un portail vers la scène la ferait prendre toute la fenêtre de bureau, par-
// dessus la barre de navigation et la liste des patients.
//
// Le menu « Plus » est rendu par la barre d'onglets de la référence figée, qui
// n'a pas d'état à nous prêter : l'enveloppe s'annonce donc comme l'ouvreur,
// tant qu'elle est montée.
const PatientHistoryDetailBase = PatientDetail;
PatientDetail = function PatientHistoryDetail(props) {
const [open, setOpen] = React.useState(false);
React.useEffect(() => {
PH_OPENER.open = () => setOpen(true);
return () => { PH_OPENER.open = null; };
}, []);
// Changer de dossier referme l'historique du précédent plutôt que de lui
// faire afficher celui d'un autre patient.
React.useEffect(() => { setOpen(false); }, [props.patientId]);
return <>
{open && props.patientId && setOpen(false)} />}
>;
};
window.VASCO_PATIENT_MORE = window.VASCO_PATIENT_MORE || [];
window.VASCO_PATIENT_MORE.push({
id: 'history',
label: 'Historique',
icon: (color) => ,
onSelect: () => { if (PH_OPENER.open) PH_OPENER.open(); },
});