Skip to content

jaja07/PING-35

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PING-35

Description

PING-35 est une plateforme de support clinique orientée rééducation et suivi patient. Le projet combine des services d'analyse posturale (vision/médiapipe et / ou YOLO), de transcription audio, d'extraction d'entités nommées (NER) à partir de textes médicaux, et de génération automatique de documents (BDK au format PDF).

Objectifs

  • Fournir des outils automatisés pour aider les kinésithérapeutes à analyser la posture et la mobilisation des patients.
  • Transcrire des enregistrements audio de consultations pour en faciliter l'indexation et l'analyse.
  • Extraire des entités cliniques (symptômes, diagnostics, traitements, dates) grâce à un module NER dédié.
  • Générer un document de synthèse (BDK) exportable en PDF prêt à l'impression ou à l'archivage.

Fonctionnalités clés

  • Analyse posturale

    • Module d'upload et d'analyse de poses (méthodes basées sur MediaPipe et/ou YOLO selon les scripts présents dans testModels/ et api/app/utils/mp_utils.py).
    • Extraction de repères articulaires, angles et mesures utiles pour le bilan.
  • Transcription

    • Service de transcription audio (API disponible dans api/app2/services et api/app2/routers) permettant de convertir des enregistrements en texte.
  • NER (Reconnaissance d'entités nommées)

    • Modèle et service NER pour extraire des entités médicales depuis le contenu textuel de la transcription ou des notes (voir api/app/services/ner_service.py et api/app/models/ner.py).
  • Génération PDF pour BDK

    • Génére un document de type BDK (bilan diagnostic kiné) à partir des données structurées, puis le convertit en PDF. Le template HTML se trouve dans api/app/utils/bdk.html.

Architecture du dépôt

Racine

  • docker-compose.yml : orchestration multi-conteneurs (API + frontend + base de données quand présente).

API

  • api/ : conteneur/api principal contenant deux applications Python :
    • app/ : implémentation principale (FastAPI) avec les routes, services et modèles.
      • app/main.py : point d'entrée principal (uvicorn/FastAPI).
      • app/routers/ : endpoints pour kine, ner, patient, bilan, consultation, upload_pose.
      • app/services/ : logique métier pour chaque domaine (bilan_service, kine_service, ner_service, patient_service, ...).
      • app/utils/bdk.html : template HTML utilisé pour générer le PDF du BDK.
    • app2/ : second service orienté transcription et workloads complémentaires (modèles ou scripts spécifiques à la transcription).

Frontend

  • frontend/ : application React (sources dans frontend/src) qui sert l'interface web côté client.

Données

  • data/ : répertoire de stockage local (base de données embarquée, journaux, fichiers média, etc.) utilisé en local ou monté dans les conteneurs Docker.

Autres

  • init-scripts/ : scripts d'initialisation de la base (ex: init-database.js).
  • testModels/ : notebooks et scripts de test pour Mediapipe, YOLO, etc.

Installer et lancer (rapide)

Prérequis

  • Docker & Docker Compose (recommandé pour une mise en route rapide).
  • (Optionnel) Python 3.10+ et Node.js si vous souhaitez lancer les services en local sans Docker.

Avec Docker Compose (tout le projet)

  1. Depuis la racine du projet :
    • Démarrer les services :
      • Utilisez le fichier docker-compose.yml à la racine (ou api/docker-compose.yml pour uniquement l'API).
    • Les services exposent typiquement l'API et le frontend sur des ports configurés dans le compose.

Développement local sans Docker (API)

  1. Créer un environnement virtuel Python et installer les dépendances :
    • pip install -r api/requirements.txt et pip install -r api/app/requirements.txt si nécessaire.
  2. Lancer l'API principale :
    • depuis api/app : uvicorn main:app --reload --host 0.0.0.0 --port 8000.
  3. Lancer le frontend :
    • depuis frontend/ : npm install puis npm start.

Endpoints principaux (aperçu)

Les routes sont organisées par module. Voici quelques endpoints exposés (exemples) :

  • POST /upload-pose : upload d'une vidéo/image pour analyse posturale (dans app/routers/upload_pose.py).
  • POST /transcription : soumet un fichier audio pour transcription (dans app2/routers ou app/routers selon le point d'entrée utilisé).
  • POST /ner/extract : envoie un texte et reçoit des entités extraites (dans app/routers/ner.py).
  • POST /bilan/generate : génère un BDK au format HTML puis PDF à partir des données du bilan.

Pour voir la liste complète des routes, lancer le serveur et ouvrir la documentation interactive FastAPI à /docs.

Flux typique d'utilisation

  1. Enregistrer une vidéo ou prendre une série d'images du patient.
  2. Envoyer le fichier via l'endpoint d'upload pour l'analyse posturale.
  3. Lancer/consulter la transcription d'une consultation audio.
  4. Exécuter le module NER sur la transcription pour extraire les entités pertinentes.
  5. Regrouper les résultats (mesures posturales, transcription annotée, observations) et demander la génération du BDK en PDF.

Tests et modèles

  • testModels/ contient des scripts de test pour Mediapipe et YOLO. Ils servent de base pour calibrer et valider les algorithmes d'analyse posturale.

Modèles utilisés

  • Transcription (OpenAI Whisper)
    • Emplacement : api/app2/models/transcription.py (classe TranscriptionModel).
    • Bibliothèque : openai-whisper (importée via import whisper).
    • Modèle chargé : whisper.load_model("turbo") tel qu'indiqué dans le code.
    • Remarques et recommandations :
      • Selon la version officielle de Whisper, les checkpoints standard sont tiny, base, small, medium, large (ou variantes). L'identifiant turbo peut être spécifique à un fork ou une version particulière de la librairie ; vérifiez que la version installée de openai-whisper supporte bien `

Fichiers utiles

  • api/app/utils/bdk.html : template HTML pour la génération du PDF du BDK.
  • api/app/routers/upload_pose.py : point d'entrée pour l'upload et l'analyse des poses.
  • api/app/services/ner_service.py : logique pour l'extraction d'entités nommées.
  • api/app2/services/transcription_service.py : logique de transcription.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published