def test_connection_warning(self): with pytest.warns(UserWarning): Orthanc(WEAK_URL) with pytest.warns(None) as skip: Orthanc(WEAK_URL, warn_insecure=False) with pytest.warns(None) as record: Orthanc(URL) assert len(record) == 0 assert len(skip) == 0
def test_export_stable_study(): """Test exporting from Orthanc This tests assumes an instace of Orthanc running on http://localhost:8042/ """ study_id = "0e16a034-87328dd8-ab6277ec-5c5658bd-4734b513" auth = HTTPBasicAuth("orthanc", "orthanc") outdir = "deleteme" orthanc = Orthanc("http://localhost:8042/", auth=auth) if os.path.exists(outdir): shutil.rmtree(outdir) export_stable_study(orthanc, study_id, outdir) files = glob.glob(outdir + "**/**/*.dcm", recursive=True) assert len(files) == 183
""" try: db_conn.cursor().execute(table_update, (seriesId,)) return True except Error as err: print('\033[1;35mUPDATE ', seriesId, err, '. \033[0m') return False def mkdirs(path): if not os.path.exists(path): os.makedirs(path) ########## mkdirs(output_path) conn = sqlite3.connect(dbFile) orthanc = Orthanc(orthancSrv, warn_insecure=False) # SELECT State == 1 pseudoid_dict = {} select_pseudoid_series(conn) for (key, value) in pseudoid_dict.items(): # for each AccNumber acc_path = output_path + '/' + value mkdirs(acc_path) # for each SerialNumber of current PseudoId seriesnumber_dict = {} select_id_series(conn, key) for (skey, svalue) in seriesnumber_dict.items(): series_path = acc_path + '/' + svalue mkdirs(series_path) dcm_path = series_path + '/dcm'
# def get(self, study_id): # conn = db_connect.connect() # query = conn.execute("select trackid, name, composer, unitprice from tracks;") # result = {'data': [dict(zip(tuple (query.keys()) ,i)) for i in query.cursor]} # return jsonify(result) app = Flask(__name__) api = Api(app) load_dotenv() orthanc_url = os.environ['ORTHANC_URL'] user = os.environ['ORTHANC_USER'] psswd = os.environ['ORTHANC_PSSWD'] dicom_dir = os.environ['DICOM_DIR'] auth = HTTPBasicAuth(user, psswd) orthanc = Orthanc(orthanc_url, auth=auth) api.add_resource(DICOM_Export, '/dicom', resource_class_kwargs={ 'orthanc_instance': orthanc, 'dicom_outdir': dicom_dir }) def main(args): """Main entry point allowing external calls Args: args ([str]): command line parameter list """
from orthanc_rest_client import Orthanc from requests.auth import HTTPBasicAuth from unittest import mock import warnings import pytest URL = "https://demo.orthanc-server.com" WEAK_URL = "http://demo.orthanc-server.com" auth = HTTPBasicAuth("orthanc", "orthanc") auth_bad = HTTPBasicAuth("bad", "bad") orthanc = Orthanc(URL, auth=auth) class TestClass: def test_server_target(self): assert orthanc._target == URL def test_server_auth(self): assert orthanc._auth.password == orthanc._auth.username == "orthanc" def test_domain_passing(self): assert orthanc.instances.domain == URL assert orthanc.series.domain == URL assert orthanc.studies.domain == URL assert orthanc.server.domain == URL assert orthanc.patients.domain == URL assert orthanc.queries.domain == URL assert orthanc.modalities.domain == URL def test_auth_wrapper(self): orthanc.patients.patients = mock.MagicMock()
try: db_conn.cursor().execute(table_update, (seriesId, )) return True except Error as err: print('\033[1;35mUPDATE ', seriesId, err, '. \033[0m') return False def mkdirs(path): if not os.path.exists(path): os.makedirs(path) ########## conn = sqlite3.connect(dbFile) orthanc = Orthanc(orthancSrv, warn_insecure=False) # SELECT State == 1 # select_series(conn) # for (key, value) in series_dict.items(): # series_path = output_path + value # mkdirs(series_path) # print(series_path) # dcm_path = series_path + '/dcm/' # mkdirs(dcm_path) # nii_path = series_path + '/nifti/' # mkdirs(nii_path) # print("Get series instances ", end='') # os.system("find " + dcm_path + " -type l -delete") # insts = orthanc.get_series_instances(key) # for inst in insts:
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?); """ try: db_conn.cursor().execute(table_insert, (seriesId, \ PseudoID, PseudoName, PseudoAcc, \ SeriesNumber, SeriesBrief, SeriesDescription, \ AcquisitionMatrix, Rows, Columns, PixelSpacing, Height, Width, State)) return True except Error as err: print('\033[1;35mINSERT', seriesId, err, '. \033[0m') return False ########## conn = sqlite3.connect(dbFile) orthanc = Orthanc(orthancSrv, warn_insecure=False) # INSERT State = 0/1 all_series = orthanc.get_series() seriesNew = 0 for series in all_series: infoS = orthanc.get_series_shared_tags(series) infoI = orthanc.get_series_instances_tags(series) # PseudoID, PseudoName, PseudoAcc, \ PseudoID = infoS['0010,0020']['Value'] PseudoName = infoS['0010,0010']['Value'] PseudoAcc = infoS['0008,0050']['Value'] # SeriesNumber, SeriesBrief, SeriesDescription, State SeriesNumber = infoS['0020,0011']['Value'] SeriesBrief = '' SeriesDescription = ''
from orthanc_rest_client import Orthanc orthanc = Orthanc('http://localhost:8042')