コード例 #1
0
    def anonymisation(identifier):
        """
        Metoda implementująca anonimizację danych medycznych 
        :param pat_name: Identyfikator.
        """

        examination = Catalog.get(identifier)
        #Zmiana statusu w bazie danych
        examination.status=Status.finished_anonymisation
        Catalog.commit()
        return
コード例 #2
0
 def status(identifier):
     """
     Metoda aktualizująca status w bazie danych po rekonstrukcji danych
             
     :param pat_name: Identyfikator.
     """
     
     examination = Catalog.get(identifier)
     #Zmiana statusu w bazie danych
     examination.status=Status.reco_finished        
     Catalog.commit()
     return 
コード例 #3
0
 def scan_status(identifier):
     """
     Funkcja komunikuje się ze skanerem PET i sprawdza status wykonywanej procedury. Gdy skan zostaje ukończony, funkcja aktualizuje status badania w systemie.
     
     :param pat_name: Identyfikator.
     """
     examination = Catalog.get(identifier)
     #Zmiana statusu w bazie danych
     examination.status=Status.finished_scanning
     Catalog.commit()
     UI.communique("The Scan was executed")
     return  
コード例 #4
0
 def start_reconstruction(identifier):
     """
     Metoda ustawiająca dane konkretnego id do systemu kolejkowego w celu rekonstrukcji danych
             
     :param pat_name: Identyfikator.
     """
     
     examination = Catalog.get(identifier)
     #Zmiana statusu w bazie danych
     examination.status=Status.reco_queued
     Catalog.commit()
     UI.communique("Reconstruction queued")
     return 
コード例 #5
0
 def register(identifier):
     """
     Metoda odpowiedzialna za komunikacje z klastrem obliczeniowym. Zarejestrowanie rekonstrukcji obrazu medycznego
             
     :param pat_name: Identyfikator.
     """
     #Generowanie identyfikatora zadania na klastrze i zapis do bazy danych
     examination = Catalog.get(identifier)
     #Zmiana statusu w bazie danych
     examination.status=Status.reco_registered
     Catalog.commit()
     UI.communique("Reconstruction registered")
     return 
コード例 #6
0
 def scan(identifier):
     """
     Funkcja komunikuje się ze skanerem PET wykorzystując dedykowany niskopoziomowy protokół. Wysyła polecenie rozpoczęcia badania wraz z plikiem DICOM opisującym przeprowadzaną procedurę.
     
     :param pat_name: Identyfikator.
     """
     
     examination = Catalog.get(identifier)
     #Zmiana statusu w bazie danych
     examination.status=Status.scanning
     Catalog.commit()
     UI.communique("Scanning patient")
     return   
コード例 #7
0
 def mpps_completed(identifier):
     """
     Funkcja N-CREATE zmieniająca status na completed- oznacza, że badanie zostało zakończone.
     
     :param pat_name: Identyfikator.
     """
     pydicom.dcmread("mpps_completed.dcm", force=True)
     examination= Catalog.get(identifier)
     #Zapis pliku mpps_discontinued.dcm do bazy danych
     examination.path="C:\\Users\\Anna\\Desktop\\pynetdicom_git_clone\\pynetdicom3\\pynetdicom3\\apps\\findscu\\mpps_completed.dcm"
     #Zmiana statusu w bazie danych
     examination.status=Status.dicom_completed
     Catalog.commit()
     return
コード例 #8
0
 def mpps_inprogress(identifier):
     """
     Funkcja N-CREATE zmieniająca status na in-progress- czyli badanie jest w trakcie wykonywania.
     
     :param pat_name: Identyfikator.
     """
     pydicom.dcmread("mpps_inprogress.dcm", force=True)
     examination= Catalog.get(identifier)
     #Zapis pliku mpps_discontinued.dcm do bazy danych
     examination.path="C:\\Users\\Anna\\Desktop\\pynetdicom_git_clone\\pynetdicom3\\pynetdicom3\\apps\\findscu\\mpps_inprogress.dcm"
     #Zmiana statusu w bazie danych
     examination.status=Status.dicom_inprogress
     Catalog.commit()
     return
コード例 #9
0
    def get_output_data(identifier, file_path_cluster):
        """
        Metoda odpowiedzialna za wysłanie wyjsciowych plików z klastra obliczeniowego do kontrolera modalnosci 

        :param pat_name: Identyfikator.
        """
        final_image_controller = "C:\\Users\\Anna\\Desktop\\pynetdicom_git_clone\\pynetdicom3\\pynetdicom3\\apps\\findscu\\controller\\"
        shutil.copy(file_path_cluster,final_image_controller)
        examination = Catalog.get(identifier)
        #Zmiana statusu w bazie danych
        examination.status=Status.send_final_data
        Catalog.commit()
        UI.communique("The results have been sent")
        return 
コード例 #10
0
 def build_final_image(identifier, path2):
     """
     Metoda build_final_image odpowiedzialna jest za budowanie końcowego obrazu oraz deanonimizacje 
     
     :param pat_name: Identyfikator.
     """
     cluster_path='C:\\Users\\Anna\\Desktop\\pynetdicom_git_clone\\pynetdicom3\\pynetdicom3\\apps\\findscu\\cluster\\'
     final_file_cluster_path = os.path.join( cluster_path, str(identifier)+"_final")
     os.rename(path2,final_file_cluster_path)
     examination = Catalog.get(identifier)
     #Zmiana statusu w bazie danych
     examination.status=Status.build_final_image
     Catalog.commit()
     UI.communique("Final image construction in progress")
     return final_file_cluster_path
コード例 #11
0
 def send_input_data(identifier, path):
     """
     Metoda odpowiedzialna za wysyłanie wejsciowych danych z kontrolera modalnosci do klastra
             
     :param pat_name: Identyfikator.
     """
     
     cluster_path = "C:\\Users\\Anna\\Desktop\\pynetdicom_git_clone\\pynetdicom3\\pynetdicom3\\apps\\findscu\\cluster"
     file_cluster_path=shutil.copy(path,cluster_path)
     examination = Catalog.get(identifier)
     #Zmiana statusu w bazie danych
     examination.status=Status.reco_data_ready
     Catalog.commit()
     UI.communique("Downloading input data for reconstruction")
     return file_cluster_path
コード例 #12
0
 def save_final_data(identifier,file_path_cluster):
     """
     Metoda savefinal_data  obsługuje funkcję C-STORE pozwalającą na wysłanie obrazów z kontrolera modalnosci do serwera np. PACS.
  
     :param pat_name: Identyfikator.
     """
     
     final_image_controller = "C:\\Users\\Anna\\Desktop\\pynetdicom_git_clone\\pynetdicom3\\pynetdicom3\\apps\\findscu\\controller\\"
     final_file=shutil.copy(file_path_cluster,final_image_controller)
     examination= Catalog.get(identifier)
     #Zapis pliku do bazy danych
     examination.final_image=final_file
     #Zmiana statusu w bazie danych
     examination.status=Status.procedure_completed
     Catalog.commit()
     UI.communique("Final data are saved")
     return               
コード例 #13
0
 def send_scan_results(identifier):
     """
     Wysłanie danych ze skanera PET do kontrolera modalnosci. Gdy dane zostaną wysłane funkcja zmienia status badania w systemie.                 
     
     :param pat_name: Identyfikator.
     """
     
     scanner_pet_path = "C:\\Users\\Anna\\Desktop\\pynetdicom_git_clone\\pynetdicom3\\pynetdicom3\\apps\\findscu\\scanner\\"
     controller_path = "C:\\Users\\Anna\\Desktop\\pynetdicom_git_clone\\pynetdicom3\\pynetdicom3\\apps\\findscu\\controller\\"
     file_scanner_path = os.path.join( scanner_pet_path, str(identifier))
     file_controller_path=shutil.copy(file_scanner_path,controller_path)
     examination = Catalog.get(identifier)
     #Zapis pliku do bazy danych
     examination.raw_data_file=file_controller_path
     #Zmiana statusu w bazie danych
     examination.status=Status.send_raw_data
     Catalog.commit()
     UI.communique("The results were sent to the controller")
     return file_controller_path
コード例 #14
0
        name=os.path.join(os.path.basename(parent), name)
    print "add project: "+name+" ("+file+")"
    catalog.insertEntry(path=file, display_name=name, command=project)

for dir in args:
    for root, dirs, files in os.walk(dir):
        if isforbidden(root):
            continue
        if "project.xml" in files:
            if not catalog.entryForPath(root):
                addProject(root)

        existing=catalog.entriesInDirectory(dir)
        existing_files=map(lambda x: x.path, existing)
        for file in files:
            if isinteresting(root, file):
                file=os.path.join(root, file)
                if not file in existing_files:
                    add(file)
                    existing_files.append(file)
        for old in existing:
            if not old.exists():
                existing.delete()
        if wait:
            catalog.commit()
            time.sleep(WAIT_UNIT)

catalog.commit()