Skip to content

Commit

Permalink
Merge pull request #1 from Refhi/main
Browse files Browse the repository at this point in the history
updating my repository
  • Loading branch information
pazimor authored Oct 3, 2024
2 parents a3b2af1 + fb6eb27 commit 125141f
Show file tree
Hide file tree
Showing 20 changed files with 2,012 additions and 1,590 deletions.
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,19 @@
# Changelog

Toutes les modifications notables de ce projet seront documentées dans ce fichier.

# [2.7] - refactory
## refactory : (c'est à dire maintenance et amélioration du code sans ajout de fonctionnalités)
- deplacement de l'impression dans un fichier à part
- réorganisation, simplification et amélioration de la lisibilité de print.js, ajout de jsdoc
- suppression de lightObserver au profit de waitForElement
- l'url de base est désormais extraite du manifest.json (permet de faciliter les tests et de nettoyer un peu le code)
- séparation du code en plus de fichiers pour plus de lisibilité
## fix :
- [#242](https://github.com/Refhi/Weda-Helper/issues/242) - lors de l'utilisation de raccourcis claviers, plusieurs consultations pouvaient être créées en même temps. Ajout d'un délais réfractaire pour éviter cela.
- [#231](https://github.com/Refhi/Weda-Helper/issues/231) - l'inversion automatique des champs ALD se déclenchait trop facilement
- [#228](https://github.com/Refhi/Weda-Helper/issues/228) - tentative de fix de la mauvaise selection du règlement "Virement" lors des téléconsultations

# [2.6.2] - 15/09/2024
## fix :
- [#241](https://github.com/Refhi/Weda-Helper/issues/241) - correction de la détection des types de prescription d'ordo numérique
Expand Down
14 changes: 6 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ Cf. ci-dessous pour les retours et les contributions.

## Raccourcis claviers
*Toutes vos tâches quotidiennes à portée de clavier*
=> Un appui sur la touche Alt prolongé (> 1 seconde) affiche un rappel des raccourcis claviers
[Fiche Mémo des raccourcis à imprimer](https://github.com/Refhi/Weda-Helper/blob/main/FicheMemo.pdf)
Ctrl+D Télécharge le PDF du document en cours (1er modèle)
Ctrl+Shift+D Télécharge le PDF du document en cours (2e modèle)
Expand All @@ -64,10 +65,6 @@ Alt+R Ouvre la recherche
Alt+W Appuie sur W
Ctrl+U Upload le dernier fichier du dossier envoyé par le Companion

**Chrome limite malheureusement les raccourcis par défaut. Les raccourcis doivent donc être définis manuellement (et entièrement personnalisés) dans chrome://extensions/shortcuts**

- Rappel des raccourcis : Un appui sur la touche Alt prolongé (> 1 seconde) affiche un rappel des principaux raccourcis claviers

## Accueil dossier patient
- Ajout d'icones pour copier automatiquement le NIR dans le presse-papier
- Lecture automatique de la carte vitale et accès direct au dossier médical du patient (s’il est seul sur la carte vitale).
Expand All @@ -79,6 +76,7 @@ Ctrl+U Upload le dernier fichier du dossier envoyé par le Companion
- Affichage simplifié des courbes de pédiatrie : dans les pages de consultation, il suffit de survoler "📈" devant "Poids", "Taille", "Pc" ou "IMC" pour afficher les courbes correspondantes (ne s'affiche que pour les âges et genres pertinents). Un clic permet de maintenir la courbe affichée. Un autre clic sur 📈 ou sur la courbe permet de la fermer. Ctrl+P permet de l'imprimer.
- Le Z-score de l'IMC est automatiquement calculé si un IMC est présent. Nécessite un champ "Z-IMC" dans les questions de suivi.
=> pour les courbes pédiatriques et le Z-score vous devez cliquer sur "Enregistrer" (Ctrl+S) pour que les valeurs du jour soient prises en compte.
(source : https://banco.podia.com/calculette-imc-z-score, Conceptrice - Caroline CARRIERE-JULIA qui a donné son accord de principe, et propriétaire APOP - représentée par Dr Véronique Nègre. Toutes les deux ont donné leur accord, je les en remercie chaleureusement)
- Modification du comportement de la tabulation après recherche patient.
- Les questions de suivi sont automatiquement affublées d'un type.
- Permet, après la saisie du nom d'un patient, d'être directement positionné sur son nom, puis de pouvoir naviguer de patient en patient avec la touche Tab (ou maj+Tab pour aller vers le haut)
Expand All @@ -104,7 +102,7 @@ Lors de l'usage de la calculette il devient possible d'utiliser les chiffres du

### Recherche de médicaments
- Lors de la recherche d'un médicament le texte est normalement effacé à chaque changement de type de recherche. L'extension maintient le dernier texte recherché.
- Des boutons de type de recherche favori (paramétrable dans les raccourcis) sont affichés. Par défaut "médicament", "DCI" et "recherche par molécule. (A noter qu'il faut enregistrer le panneau d'option pour que seuls les boutons choisis apparaissent. Sinon tous sont affichés.)
- Des boutons de type de recherche favori (paramétrable dans les options) sont affichés. Par défaut "médicament", "DCI" et "recherche par molécule. (A noter qu'il faut enregistrer le panneau d'option pour que seuls les boutons choisis apparaissent. Sinon tous sont affichés.)

### Options d'ordonnance numérique
- Permet d’activer automatiquement par défaut les ordonnances numériques pour les médicaments mais aussi pour les autres prescriptions.
Expand Down Expand Up @@ -136,7 +134,7 @@ Lors de l'usage de la calculette il devient possible d'utiliser les chiffres du
- Affiche automatiquement la recette du jour lors de l'ouverture de la page

### Messagerie
- rafraichissement automatique des messages Mssanté. Il vérifiera 30 secondes après le chargement de la page, puis toutes les 15 minutes. Il faut donc mieux laisser un onglet ouvert sur cette page.
- rafraichissement automatique des messages Mssanté. Il vérifiera 30 secondes après le chargement de la page, puis toutes les 15 minutes. Il vaut donc mieux laisser un onglet ouvert sur cette page.

### AT
- simplification de la réalisation des arrêts de travail intégrés à Weda (lecture auto CV, selection auto de l'assuré, impression automatique, autofill de la date en cas de sorties libres, fermeture automatique)
Expand All @@ -154,7 +152,7 @@ Lors de l'usage de la calculette il devient possible d'utiliser les chiffres du
- ouverture du dossier patient directement depuis l'agenda via un clic droit sur le rendez-vous

### Accès facilité aux ATCD et aux notes depuis les recherches patients
- accès facilité aux ATCD et aux notes patients depuis n'importe quelle liste de patients issus d'une recherche : Bouton de droite pour les notes, bouton du milieu pour les ATCD
- accès facilité aux ATCD et aux notes patients depuis n'importe quelle liste de patients issus d'une recherche : Bouton de droite pour les notes, bouton du milieu (ou ctrl+clic) pour les ATCD

### Antécédents :
- ajout d'options pour limiter le nombre d'atcd affichés en CIM 10 et de les trier par ordre alphabétique
Expand All @@ -179,7 +177,7 @@ Dans la fenêtre d'importation des documents (https://secure.weda.fr/FolderMedic
*Autant pousser l'économie de mouvements jusqu'au bout*
Installez et laisser tourner ce logiciel sur votre ordinateur pour avoir des fonctionnalités supplémentaires :
- impression directe automatique complète
- Envoie le montant à régler à votre TPE (quand on valide une FSE via alt+V ou qu'on valide un règlement manuel)
- Envoie le montant à régler à votre TPE (quand on valide une FSE - via alt+v - ou un règlement manuel)

=> Procédures d'installation et de paramétrage sur [le readme du Companion](https://github.com/Refhi/Weda-Helper-Companion)

Expand Down
71 changes: 44 additions & 27 deletions aati.js
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
// Arrêts de travail automatisés
// Ajout d'un 2e bouton à côté de AT nommé "AT sans CV" pour shunter la lecture automatique de la carte vitale
addTweak('https://secure.weda.fr/FolderMedical/PatientViewForm.aspx','autoAATI', function () {
addTweak('/FolderMedical/PatientViewForm.aspx', 'autoAATI', function () {
let selecteurBoutonAT = '[title="Transmettre un avis d\'arrêt de travail via le téléservice AATi"]';
function processButton (elements) {
function processButton(elements) {
// remplace le texte "AT" par "AT avec CV | AT sans CV"
elements[0].textContent = 'AT avec CV | AT sans CV';

// ajoute sur la partie droite de l'élément un event listener pour le click qui met dans le local storage la valeur "timestampAATIsansCV" au moment du click
elements[0].addEventListener('click', function(e) {
elements[0].addEventListener('click', function (e) {
// Récupère la largeur de l'élément
let boutonWidth = elements[0].offsetWidth;

// Récupère la position du clic relative à l'élément
let clickPosition = e.clientX - elements[0].getBoundingClientRect().left;

// Si le clic est sur la moitié droite de l'élément
if (clickPosition > boutonWidth / 2) {
console.log('Clic sur AT sans CV détecté au timestamp', Date.now());
// Stocke le timestamp actuel dans le stockage local avec la clé "timestampAATIsansCV"
chrome.storage.local.set({timestampAATIsansCV: Date.now()});
chrome.storage.local.set({ timestampAATIsansCV: Date.now() });
}
});
}

lightObserver(selecteurBoutonAT, processButton, document, true);
waitForElement({ selector: selecteurBoutonAT, justOnce: true, callback: processButton });
});


urlAATI = [
'https://secure.weda.fr/FolderMedical/Aati.aspx',
'https://secure.weda.fr/BinaryData.aspx'
'/FolderMedical/Aati.aspx',
'/BinaryData.aspx'
]

addTweak(urlAATI, 'autoAATI', function () {
Expand All @@ -38,16 +38,16 @@ addTweak(urlAATI, 'autoAATI', function () {
let selecteurSortieNonLimites = '#form1 > div:nth-child(10) > div > dmp-aati-form > div > div:nth-child(2) > div.ml10 > div > div.frameContent > dmp-aati-leave-permission > div.flexColStart.mt10 > div.flexColStart.mt10.ng-star-inserted > div.flexColStart.pt3.ng-star-inserted > div.flexRow.mt5 > input'
let selectorExitButton = '.frameback.dmtiForm.ng-star-inserted .imgfixe a'

function clickPremierPatientCV () {
function clickPremierPatientCV() {
console.log('clickPremierPatientCV déclenché');
var boutonPremierPatientCV = document.querySelector('[title="Déclarer l\'AT pour ce bénéficiaire."]');
if (boutonPremierPatientCV) {
boutonPremierPatientCV.click();
recordMetrics({clicks: 1, drags: 1});
recordMetrics({ clicks: 1, drags: 1 });
}
}

function fillDateSorties () {
function fillDateSorties() {
var sortieNonLimites = document.querySelector(selecteurSortieNonLimites);
if (sortieNonLimites) {
console.log('sortieNonLimites', sortieNonLimites, 'found');
Expand All @@ -68,7 +68,7 @@ addTweak(urlAATI, 'autoAATI', function () {

// Dispatch the event
console.log('sortieNonLimites', sortieNonLimites, 'dispatching event', event);
recordMetrics({keyStroke: 10});
recordMetrics({ keyStroke: 10 });
sortieNonLimites.dispatchEvent(event); // indispensable sinon la date n'est pas prise en compte
}
}
Expand All @@ -82,7 +82,7 @@ addTweak(urlAATI, 'autoAATI', function () {
obj[actionName] = currentTime;

// Store the object in the local Chrome storage
chrome.storage.local.set(obj, function() {
chrome.storage.local.set(obj, function () {
console.log('The time of action "' + actionName + '" was stored as "' + currentTime + '".');
});
}
Expand Down Expand Up @@ -119,25 +119,42 @@ addTweak(urlAATI, 'autoAATI', function () {



lightObserver(selecteurBoutonCV, clickProperButton, document, true);
waitForElement('[title="Déclarer l\'AT pour ce bénéficiaire."]', null, 50000, clickPremierPatientCV); // assez long car sinon la demande CPS peux bloquer le processus
lightObserver(selecteurSortieNonLimites, fillDateSorties, document, true);
lightObserver(selectorExitButton, function (elements) {
setTimeOfSending('autoAATIexit');
console.log('clicking on the exit button + timestamp');
intervalId = setInterval(() => checkAutoAATIexit(elements), 100); // Vérifier toutes les 100ms
setTimeout(() => clearInterval(intervalId), 20000); // Arrêter après 20 secondes
recordMetrics({clicks: 1, drags: 1});

waitForElement({
selector: selecteurBoutonCV,
callback: clickProperButton,
justOnce: true
});

waitLegacyForElement('[title="Déclarer l\'AT pour ce bénéficiaire."]', null, 50000, clickPremierPatientCV); // assez long car sinon la demande CPS peux bloquer le processus

waitForElement({
selector: selecteurSortieNonLimites,
callback: fillDateSorties,
justOnce: true
});


waitForElement({
selector: selectorExitButton,
callback: function (elements) {
setTimeOfSending('autoAATIexit');
console.log('clicking on the exit button + timestamp');
intervalId = setInterval(() => checkAutoAATIexit(elements), 100); // Vérifier toutes les 100ms
setTimeout(() => clearInterval(intervalId), 20000); // Arrêter après 20 secondes
recordMetrics({ clicks: 1, drags: 1 });
}
});



// Envoi du document à l'assistant
addTweak('https://secure.weda.fr/BinaryData.aspx', "*sendDocToCompanion", function () {
addTweak('/BinaryData.aspx', "*sendDocToCompanion", function () {
chrome.storage.local.get(['autoAATIexit'], function (result) {
getOption('RemoveLocalCompanionPrint', function (RemoveLocalCompanionPrint) {
if (Date.now() - result.autoAATIexit < 10000 && RemoveLocalCompanionPrint === false) {
console.log('autoAATIexit', result.autoAATIexit, 'is less than 10 seconds ago');
chrome.storage.local.set({autoAATIexit: 0});
chrome.storage.local.set({ autoAATIexit: 0 });
let url = window.location.href;
console.log('url', url);
fetch(url)
Expand All @@ -149,7 +166,7 @@ addTweak(urlAATI, 'autoAATI', function () {
.then(() => {
// The blob has been successfully transferred
console.log('The blob has been successfully transferred.');
recordMetrics({clicks: 3, drags: 3});
recordMetrics({ clicks: 3, drags: 3 });
setTimeout(function () {
window.close();
}, 1000); // essai avec un délai de 1s
Expand Down
Loading

0 comments on commit 125141f

Please sign in to comment.