Exemple #1
0
def main():

    get_import = Query("GetPosdaFilesImportControl")
    go_in_service = Query("GoInServicePosdaImport")
    quit_q = Query("RelinquishControlPosdaImport")

    while True:
        # get current status
        for import_control in get_import.run(): pass

        if import_control.status == "waiting to go inservice":
            go_in_service.execute(MYPID)
            continue

        if import_control.status == "service process running":
            if import_control.processor_pid != MYPID:
                printe("Some other process controlling import")
                return

            if import_control.pending_change_request == "shutdown":
                quit_q.execute()
                printe("Relinquished control of posda_import")
                return

            printe("Doing actual work (well, pretending)")

        else:
            printe(f"unknown state ({import_control.status}) for posda_import")
Exemple #2
0
def main():

    get_import = Query("GetPosdaFilesImportControl")
    go_in_service = Query("GoInServicePosdaImport")
    quit_q = Query("RelinquishControlPosdaImport")

    while True:
        # get current status
        for import_control in get_import.run():
            pass

        if import_control.status == "waiting to go inservice":
            go_in_service.execute(MYPID)
            continue

        if import_control.status == "service process running":
            if import_control.processor_pid != MYPID:
                printe("Some other process controlling import")
                return

            if import_control.pending_change_request == "shutdown":
                quit_q.execute()
                printe("Relinquished control of posda_import")
                return

            printe("Doing actual work (well, pretending)")

        else:
            printe(f"unknown state ({import_control.status}) for posda_import")
print("Initial line written to email")

hierarchy = None
report = background.create_report(f"DICOM Hierarchy for {series_count} series")

writer = csv.writer(report)
writer.writerow([
    "collection",
    "site",
    "patient_id",
    "study_instance_uid",
    "study_date",
    "study_description",
    "series_instance_uid",
    "series_date",
    "series_description",
    "modality",
    "dicom_file_type",
    "num_files",
])

for i, s in enumerate(series):
    background.set_activity_status(f"Querying {i} of {series_count}")
    for row in q.run(s):
        writer.writerow(tuple(row))


print("Final line written to email")
elapsed = time.time() - start
background.finish(f"Processed {series_count} in {elapsed} seconds")
Exemple #4
0
scan_id = Query("CreateSimplePhiScanRow").get_single_value(
    description=args.description, 
    num_series=len(input_lines), 
    file_query=args.file_query_name
)

# create queries we are going to use multiple times
# TODO: ^ that

for series in input_lines:
    printe(f"Processing {series}")

    count = 0

    for row in get_series_count.run(series):
        count += 1

    printe(f"Found {count} files in this series.")

    series_scan_id = Query("CreateSimpleSeriesScanInstance").get_single_value(
        scan_instance_id=scan_id,
        series_instance_uid=series
    )

    cmd = "PhiSimpleSeriesScan.pl"
    command = [cmd, series, args.file_query_name]

    for line in lines(command):
        tagp, vr, value = unpack_n(line.split('|'), 3)