示例#1
0
    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
示例#2
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
示例#3
0
        """
    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'
示例#4
0
#     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
    """
示例#5
0
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()
示例#6
0
    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 = ''
示例#8
0
from orthanc_rest_client import Orthanc
orthanc = Orthanc('http://localhost:8042')