Advertisement
Guest User

Untitled

a guest
May 23rd, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.25 KB | None | 0 0
  1. import requests
  2. import subprocess
  3. import json
  4. import os
  5. import urllib.request as req
  6. from PIL import Image
  7.  
  8. import os, sys
  9.  
  10.  
  11. instances_url = 'http://localhost:8042/instances/'
  12. series_url = 'http://localhost:8042/series/'
  13. studies_url= 'http://localhost:8042/studies/'
  14. get_images = requests.get(instances_url).json()     #recupera immagini/istanze
  15.  
  16.  
  17. def getImagesFromPacs():
  18.     for each in get_images:
  19.         r = requests.get(instances_url+each+'').json()      #get campi per ogni immagine
  20.         #print(r)
  21.         id_image = r["ID"]
  22.         series = r["ParentSeries"]          # uno dei campi è ParentSeries, che contiene la serie di riferimento di quella img
  23.         s = requests.get(series_url+series+'').json()   #get Serie specificata prima
  24.         study = s["ParentStudy"]                    #la serie ha un campo Study che è lo studio cui appartiene
  25.         stud = requests.get(studies_url+study+'').json()        #get Studio
  26.         patient_id = stud["PatientMainDicomTags"]["PatientID"]  #lo studio ha un campo MainDicom Tag con l'id del paziente
  27.  
  28.         filepath = os.path.join('C:\\Users\\emico\\Desktop\\biomedical\\'+patient_id+'\\'+study+'\\'+series)
  29.  
  30.         if not os.path.exists(filepath):        #crea cartella paziente->studio->serie->img con urlretrieve della lib urllib.request
  31.               os.makedirs(filepath)
  32.         #req.urlretrieve(instances_url+each+'/preview', "C:\\Users\\emico\\Desktop\\biomedical\\"+patient_id+"\\"+study+"\\"+series+"\\"+id_image+".jpg")
  33.         req.urlretrieve(instances_url+each+'/preview', filepath+'\\'+id_image+".jpg")
  34.  
  35.         im = Image.open(filepath+'\\'+id_image+".jpg")
  36.         imResize = im.resize((512, 510), Image.ANTIALIAS)
  37.         imResize.save(filepath+'\\'+id_image+".jpg",'JPEG', quality=100)
  38.  
  39. #Creazione file images.txt con i percorsi delle immagini da passare poi al ParallelIndexer
  40. def listImg():
  41.     for root, dirs, files in os.walk('C:\\Users\\emico\\Desktop\\biomedical'):
  42.         for file in files:
  43.             if file.endswith('.jpg'):
  44.                 f= open('C:\\Users\\emico\\Desktop\\biomedical\\images.txt', 'a')
  45.                 f.write(os.path.join(root, file+"\n"))
  46.  
  47. #Run del ParallelIndexer
  48. def callParallelIndexer():
  49.     subprocess.call('gradlew runParallelIndexer', cwd='C:\\Users\\emico\\Desktop\\LireSolr',shell=True)
  50.  
  51. def solrConnection():
  52.     subprocess.call('solr start', cwd='C:\\solr-7.2.1\\bin',shell=True)
  53.     #Carica images-out.xml
  54.     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)
  55.     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)
  56.     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)
  57.  
  58.     core = "lire"
  59.     requestHandler = "lireq"
  60.     #Inserire qui la query by example
  61.     cmp = "C:\\Users\\emico\\Desktop\\Query_Images\\provapolmone.jpg"
  62.     wt= "json"
  63.  
  64.     solrconn = requests.get('http://localhost:8983/solr/'+core+'/'+requestHandler+'?cmp='+cmp+'&q=*:*&wt='+wt).json()
  65.     phog = solrconn["RisultatiPhogManhattan"]["docs"]       #Si è scelto di estrarre come features phog e jcd
  66.     jcd= solrconn["RisultatiJcdCosine"]["docs"]
  67.     patientPhog=[]
  68.     patientJcd=[]
  69.     studyPhog=[]
  70.     studyJcd=[]
  71.     seriesPhog=[]
  72.     seriesJcd=[]
  73.     instancePhog=[]
  74.     instanceJcd=[]
  75.  
  76.     #Prendo ad esempio i primi 20 risultati rilevanti di phog e di jcd.
  77.     for p in phog[:19]:
  78.         patientPhog.append(p["patient"])
  79.         studyPhog.append(p["study"])
  80.         seriesPhog.append(p["series"])
  81.         instancePhog.append(p["instance"])
  82.  
  83.  
  84.     for each in jcd[:19]:
  85.         patientJcd.append(each["patient"])
  86.         studyJcd.append(each["study"])
  87.         seriesJcd.append(each["series"])
  88.         instanceJcd.append(each["instance"])
  89.  
  90.  
  91.  
  92. getImagesFromPacs()
  93. listImg()
  94. callParallelIndexer()
  95. solrConnection()
  96.  
  97. #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