#imports
import mysql.connector
from phpserialize import loads, dumps
from fpdf import FPDF
import os
import sys
import json
import pydicom
import numpy as np
from PIL import Image
#fonction SQL
def dbConnect():
    return mysql.connector.connect(
        host="10.40.155.30",
        user="atima_xplorer",
        password = "9G9rRf23MeuA8t",
        database="atima_xplorer"
    )
#fonction pour demarrer
def getFrames(clinique_id):
    listeDesRadios = {}
    projetPath="/var/www/html/projet1/"

    mydb = dbConnect()
    curseurGetNbFrames = mydb.cursor()
    curseurGetNbFrames.execute("SELECT id, les_fichiers, la_clinique_id FROM fichier WHERE la_clinique_id = %(clinique_id)s AND format='DICOM'", {'clinique_id': clinique_id})

    listeRadiosSQL = curseurGetNbFrames.fetchall()

    for radio in listeRadiosSQL:
        id = radio[0]
        listeFichier = des_seliarizer(radio[1])
        cliniqueId = radio[2]

        nbFrame = 0

        for fichier in listeFichier:
            nbFrame = nbFrame + getDicomCount(projetPath+"public/upload/"+str(cliniqueId)+"/"+fichier)
        listeDesRadios[id] = nbFrame
    return listeDesRadios
#fonction pour desSerializer
def des_seliarizer(liste):

    #Convertir la liste
    phpArray = loads(liste.encode())

    # Extaire les valeurs et convertir les bytecodes en strings
    pythonList = [value.decode() for value in phpArray.values()]
    
    #retourner
    return pythonList


def getDicomCount(fichier):
    # Carrega o arquivo DICOM
    dicom_data = pydicom.dcmread(fichier)

    frames_list = []

    # Verifica se o arquivo DICOM é multi-frame
    if 'NumberOfFrames' in dicom_data:
        return dicom_data.NumberOfFrames
            
    else:
        return 1
if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Utilisation: python3 python_helper.py clinique_id")
        sys.exit(1)

    clinique_id = sys.argv[1]

    print(json.dumps(getFrames(clinique_id)))
