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
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
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
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
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
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
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
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
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
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
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
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
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
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()