Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- import subprocess
- import json
- import os
- import urllib.request as req
- from PIL import Image
- import os, sys
- instances_url = 'http://localhost:8042/instances/'
- series_url = 'http://localhost:8042/series/'
- studies_url= 'http://localhost:8042/studies/'
- get_images = requests.get(instances_url).json() #recupera immagini/istanze
- def getImagesFromPacs():
- for each in get_images:
- r = requests.get(instances_url+each+'').json() #get campi per ogni immagine
- #print(r)
- id_image = r["ID"]
- series = r["ParentSeries"] # uno dei campi è ParentSeries, che contiene la serie di riferimento di quella img
- s = requests.get(series_url+series+'').json() #get Serie specificata prima
- study = s["ParentStudy"] #la serie ha un campo Study che è lo studio cui appartiene
- stud = requests.get(studies_url+study+'').json() #get Studio
- patient_id = stud["PatientMainDicomTags"]["PatientID"] #lo studio ha un campo MainDicom Tag con l'id del paziente
- filepath = os.path.join('C:\\Users\\emico\\Desktop\\biomedical\\'+patient_id+'\\'+study+'\\'+series)
- if not os.path.exists(filepath): #crea cartella paziente->studio->serie->img con urlretrieve della lib urllib.request
- os.makedirs(filepath)
- #req.urlretrieve(instances_url+each+'/preview', "C:\\Users\\emico\\Desktop\\biomedical\\"+patient_id+"\\"+study+"\\"+series+"\\"+id_image+".jpg")
- req.urlretrieve(instances_url+each+'/preview', filepath+'\\'+id_image+".jpg")
- im = Image.open(filepath+'\\'+id_image+".jpg")
- imResize = im.resize((512, 510), Image.ANTIALIAS)
- imResize.save(filepath+'\\'+id_image+".jpg",'JPEG', quality=100)
- #Creazione file images.txt con i percorsi delle immagini da passare poi al ParallelIndexer
- def listImg():
- for root, dirs, files in os.walk('C:\\Users\\emico\\Desktop\\biomedical'):
- for file in files:
- if file.endswith('.jpg'):
- f= open('C:\\Users\\emico\\Desktop\\biomedical\\images.txt', 'a')
- f.write(os.path.join(root, file+"\n"))
- #Run del ParallelIndexer
- def callParallelIndexer():
- subprocess.call('gradlew runParallelIndexer', cwd='C:\\Users\\emico\\Desktop\\LireSolr',shell=True)
- def solrConnection():
- subprocess.call('solr start', cwd='C:\\solr-7.2.1\\bin',shell=True)
- #Carica images-out.xml
- subprocess.call('curl http://localhost:8983/solr/lire/update -H "Content-Type: text/xml" --data-binary "<delete><query>*:*</query></delete>"', cwd='C:\\curl-7.59.0-win64-mingw\\bin', shell=True)
- subprocess.call('curl http://localhost:8983/solr/lire/update -H "Content-Type: text/xml" --data-binary @C:\\Users\\emico\\Desktop\\biomedical\\images-out.xml', cwd='C:\\curl-7.59.0-win64-mingw\\bin', shell=True)
- subprocess.call('curl http://localhost:8983/solr/lire/update -H "Content-Type: text/xml" --data-binary "<commit/>"', cwd='C:\\curl-7.59.0-win64-mingw\\bin', shell=True)
- core = "lire"
- requestHandler = "lireq"
- #Inserire qui la query by example
- cmp = "C:\\Users\\emico\\Desktop\\Query_Images\\provapolmone.jpg"
- wt= "json"
- solrconn = requests.get('http://localhost:8983/solr/'+core+'/'+requestHandler+'?cmp='+cmp+'&q=*:*&wt='+wt).json()
- phog = solrconn["RisultatiPhogManhattan"]["docs"] #Si è scelto di estrarre come features phog e jcd
- jcd= solrconn["RisultatiJcdCosine"]["docs"]
- patientPhog=[]
- patientJcd=[]
- studyPhog=[]
- studyJcd=[]
- seriesPhog=[]
- seriesJcd=[]
- instancePhog=[]
- instanceJcd=[]
- #Prendo ad esempio i primi 20 risultati rilevanti di phog e di jcd.
- for p in phog[:19]:
- patientPhog.append(p["patient"])
- studyPhog.append(p["study"])
- seriesPhog.append(p["series"])
- instancePhog.append(p["instance"])
- for each in jcd[:19]:
- patientJcd.append(each["patient"])
- studyJcd.append(each["study"])
- seriesJcd.append(each["series"])
- instanceJcd.append(each["instance"])
- getImagesFromPacs()
- listImg()
- callParallelIndexer()
- solrConnection()
- #A questo punto bisognerebbe prendere questi risultati rilevanti e ritornare sul pacs per scaricare immagini+diagnosi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement