Addon methods

Addon methods include useful methods not described in AmbraHealth API documentation.

Study

Study level addon methods.

upload_dir

[New in 3.21.2.0]

This method for uploading study directory to some namespace in storage:

from pathlib import Path

study_dir = Path(...)

study_uid, image_params = api.Addon.Study.upload_dir(
    study_dir=study_dir,
    namespace_id=namespace_id,
)

upload_paths

[New in 3.21.2.0]

This method for uploading study using dicoms paths:

from pathlib import Path

study_dir = Path(...)

study_uid, image_params = api.Addon.Study.upload_paths(
    dicom_paths=study_dir.glob('**/*.dcm'),
    namespace_id=namespace_id,
)

It can be useful if you would like to use some user specific dicom path iterator. For example, tqdm progress bar usage:

from pathlib import Path
from tqdm import tqdm

study_dir = Path(...)

study_uid, image_params = api.Addon.Study.upload_paths(
    dicom_paths=iter(tqdm(study_dir.glob('**/*.dcm'))),
    namespace_id=namespace_id,
)

wait

Wait for a new study (not phantom) in namespace:

study = api.Addon.Study.wait(
    study_uid,
    namespace_id,
    timeout=10,
)

upload_dir_and_get

[New in 3.21.2.0]

Upload dicoms from specific study dir using api.Addon.Study.upload_dir() method and wait for this object to appear in v3services:

from pathlib import Path

study_dir = Path(...)

new_study = api.Addon.Study.upload_dir_and_get(
    study_dir=study_dir,
    namespace_id=namespace_id,
)

upload_paths_and_get

[New in 3.21.2.0]

Upload dicoms from paths iterator using api.Addon.Study.upload_paths() method and wait for this object to appear in v3services:

from pathlib import Path

study_dir = Path(...)

new_study = api.Addon.Study.upload_dir_and_get(
    dicom_paths=study_dir.glob('**/*.dcm'),
    namespace_id=namespace_id,
)

duplicate_and_get

This method calls api.Study.duplicate() async method and waits for new duplicated study:

duplicated_study = api.Addon.Study.duplicate_and_get(
    uuid=some_study.uuid,
    namespace_id=to_namespace_id,
)

anonymize_and_wait

[New in 3.21.1.0]

Start anonymization and wait for completion:

api.Addon.Study.anonymize_and_wait(
    engine_fqdn,
    namespace,
    study_uid,
    region,
    namespace_id,
    timeout=10,
)

anonymize_and_get

[New in 3.21.1.0]

Start anonymization and get anonymized study:

anonymized_study = api.Addon.Study.anonymize_and_get(
    engine_fqdn,
    namespace,
    study_uid,
    region,
    namespace_id,
    timeout=10,
)

wait_job [DEPRECATED]

[New in 3.21.1.0] [DEPRECATED in 3.21.2.0]

Warning

Instead of this use wait method.

Wait for a job done (for example storage anonymization job):

api.Addon.Study.wait_job(
    job_id,
    namespace_id,
    timeout=10,
)

dicom [DEPRECATED]

[New in 3.20.8.0] [DEPRECATED in 3.21.2.0]

Warning

Instead of this use get method.

Get pydicom specific object from storage:

dicom = api.Addon.Study.dicom(
          namespace_id=storage_namespace,
          study_uid=study_uid,
          image_uid=image['id'],
      )

upload_dicom [DEPRECATED]

[DEPRECATED in 3.21.2.0]

Warning

Instead of this use upload_from_path method.

This method is for uploading dicom to the some namespace in storage:

from pathlib import Path

dicom_path = Path(...)

image_params = api.Addon.Study.upload_dicom(
    dicom_path,
    namespace_id,
)

This method gets engine_fqdn from the service API for a specific namespace_id and then uploads dicom to the storage using api.Storage.Image.upload() method.

upload [DEPRECATED]

[DEPRECATED in 3.21.2.0]

Warning

Instead of this use upload_dir method.

This method creates a new thin study, uploads all dicom files (**/*.dcm) from a specific study path to storage, and calls sync for this study:

from pathlib import Path

study_path = Path(...)

study_uuid, image_params  = api.Addon.Study.upload(
    study_path,
    namespace_id,
)

upload_and_get [DEPRECATED]

[DEPRECATED in 3.21.2.0]

Warning

Instead of this use upload_dir_and_get method.

Upload dicoms from specific study dir using api.Addon.Study.upload() method and wait for this object to appear in v3services:

new_study = api.Addon.Study.upload_and_get(
    study_dir=study_dir,
    namespace_id=namespace_id,
)

Job

Job level addon methods.

wait

[New in 3.21.2.0]

Wait for storage job done (for example storage anonymization job):

api.Addon.Job.wait(
    job_id=job_id,
    namespace_id=namespace_id,
    timeout=10,
    ws_timeout=1,
)

wait_completion

[New in 3.21.3.0]

Execute storage method and wait this job. This is a anonymize and wait example:

anonymized_study_uid = api.Addon.Job.wait_completion(
    api.Storage.Study.anonymize,
    engine_fqdn=engine_fqdn,
    namespace=namespace,
    study_uid=study_uid,
    region=region,
    to_namespace=to_namespace,
    new_study_uid=new_study_uid,
    keep_image_uids=keep_image_uids,
    color=color,
    only_prepare=only_prepare,
)

Dicom

Dicom level addon methods.

get

[New in 3.21.2.0]

Get pydicom specific object from storage:

dicom = api.Addon.Dicom.get(
          namespace_id=storage_namespace,
          study_uid=study_uid,
          image_uid=image['id'],
      )

upload

[New in 3.21.2.0]

Upload dicom file to storage namespace:

with open('dicom.dcm', 'rb') as dicom_file:
    uploaded_image_params = api.Addon.Dicom.upload(
        dicom_file=dicom_file,
        namespace_id=namespace_id,
    )

upload_from_path

[New in 3.21.2.0]

Upload dicom from path to storage namespace:

from pathlib import Path

dicom_path = Path(..)

uploaded_image_params = api.Addon.Dicom.upload_from_path(
    dicom_path=dicom_path,
    namespace_id=namespace_id,
)