1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import json
- import orthancInterface
- import orthancDatabaseBrowser
- import os
- import urllib3
- class orthancQR:
-
- def __init__(self,server):
- self.net=orthancInterface.orthancInterface()
- fconfig=os.path.join(os.path.expanduser('~'),'.labkey',f'{server}.json')
- self.net.init(fconfig)
- def addModality(self,name,v):
- #add modality with the name name and settings as shown below
- #v={"AET":aet,"Host":host,"Port":port}
- apiURL='/'.join([self.net.getCoreURL(),'modalities',name])
- response=self.net.put(apiURL,json.dumps(v),'json',timeout=urllib3.util.Timeout(read=0.5))
- def removeModality(self,name):
- apiURL='/'.join([self.net.getCoreURL(),'modalities',name])
- response=self.net.delete(apiURL,timeout=urllib3.util.Timeout(read=0.5))
- def cEcho(self,name):
- apiURL='/'.join([self.net.getCoreURL(),'modalities',name,'echo'])
- v={}
- response=self.net.post(apiURL,json.dumps(v),'json')
- #OK if empty,JSON if fail
- return orthancDatabaseBrowser.extractJSON(response.data)
- def sendCFind(self,name,par):
- v={"Level":par.get("Level","Study"),"Query":par["Query"]}
- apiURL='/'.join([self.net.getCoreURL(),'modalities',name,'query'])
- response=self.net.post(apiURL,json.dumps(v),'json')
- #pair of ID/Path json object
- return orthancDatabaseBrowser.extractJSON(response.data)
- def getCFindAnswers(self,queryId):
- apiURL='/'.join([self.net.getCoreURL(),'queries',queryId,'answers'])
- response=self.net.get(apiURL)
- #list of answers
- return orthancDatabaseBrowser.extractJSON(response.data)
- def getCFindAnswerContent(self,queryId,answerId):
- apiURL='/'.join([self.net.getCoreURL(),'queries',queryId,'answers',answerId,'content'])
- response=self.net.get(apiURL)
- #content of answer, object with DICOM codes (IDs etc)
- return orthancDatabaseBrowser.extractJSON(response.data)
- def startRetrievaJobForAll(self,queryId):
- #returns jobDescripton as JSON (ID,Path)
- apiURL='/'.join([self.net.getCoreURL(),'queries',queryId,'retrieve'])
- v={"TargetAet":"NIXLJUOIL","RetrieveMethod":"C-MOVE","Synchronous":False}
- response=self.net.post(apiURL,json.dumps(v),'json')
- return orthancDatabaseBrowser.extractJSON(response.data)
- def startRetrieveJob(self,queryId,answerId):
- #returns jobDescripton as JSON (ID,Path)
- apiURL='/'.join([self.net.getCoreURL(),'queries',queryId,'answers',answerId,'retrieve'])
- v={"TargetAet":"NIXLJUOIL","RetrieveMethod":"C-MOVE","Synchronous":False}
- response=self.net.post(apiURL,json.dumps(v),'json')
- return orthancDatabaseBrowser.extractJSON(response.data)
-
|