Skip to content

Examples

List studies for patient IDs listed in a CSV file.

example.csv

pat_id
4165299
3870658
0000007

example_1.py

# /// script
# requires-python = ">=3.11"
# dependencies = [
#     "dicom-qr",
#     "typer"
# ]
# ///
import csv

import typer

import dicom_qr.logger
import dicom_qr.query
import dicom_qr.search
import dicom_qr.settings

dicom_qr.logger.ENABLE_FILE_LOGGING = False


def main(csv_file: str = typer.Argument(..., help='CSV file with patient IDs.')) -> None:
    dicom_qr.logger.setup_logging()

    with open(csv_file, encoding='utf-8') as fp:
        patient_ids = [row['pat_id'] for row in csv.DictReader(fp)]

    print('PatientID,StudyDate,StudyDescription AccesionNumber')  # noqa:T201
    for patient_id in patient_ids:
        with dicom_qr.query.get_query(dicom_qr.settings.get_settings()) as query:
            studies = query.get_studies(dicom_qr.search.SearchTerms(patid=patient_id))

            if len(studies) == 0:
                print(f'{patient_id},,,')  # noqa:T201
                continue

            for study in studies:
                print(f'{study.PatientID},{study.StudyDate},{study.StudyDescription},{study.AccessionNumber}')  # noqa:T201


if __name__ == "__main__":
    typer.run(main)
uv run example_1.py example.csv