dicom-dre 1.0.0.dev1__tar.gz → 1.0.0.dev3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of dicom-dre might be problematic. Click here for more details.

Files changed (552) hide show
  1. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/.devcontainer/devcontainer.json +6 -1
  2. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/.github/workflows/deploy.yml +23 -6
  3. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/.gitignore +1 -0
  4. dicom_dre-1.0.0.dev3/CHANGELOG.md +23 -0
  5. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/PKG-INFO +18 -11
  6. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/README.md +17 -10
  7. dicom_dre-1.0.0.dev3/docs/about/changelog.md +8 -0
  8. dicom_dre-1.0.0.dev3/docs/about/history.md +46 -0
  9. dicom_dre-1.0.0.dev3/docs/about/provenance.md +51 -0
  10. dicom_dre-1.0.0.dev3/docs/about/testing.md +62 -0
  11. dicom_dre-1.0.0.dev3/docs/concepts/architecture.md +153 -0
  12. dicom_dre-1.0.0.dev3/docs/concepts/device-catalog.md +337 -0
  13. dicom_dre-1.0.0.dev3/docs/concepts/jpeg-dct.md +108 -0
  14. dicom_dre-1.0.0.dev3/docs/concepts/profiles.md +170 -0
  15. dicom_dre-1.0.0.dev3/docs/concepts/reproducibility.md +34 -0
  16. dicom_dre-1.0.0.dev3/docs/concepts/text-redaction.md +88 -0
  17. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/docs/conf.py +3 -0
  18. dicom_dre-1.0.0.dev3/docs/getting-started/installation.md +63 -0
  19. dicom_dre-1.0.0.dev3/docs/getting-started/quickstart.md +58 -0
  20. dicom_dre-1.0.0.dev3/docs/guides/cli.md +93 -0
  21. dicom_dre-1.0.0.dev3/docs/guides/extending-the-catalog.md +209 -0
  22. dicom_dre-1.0.0.dev3/docs/guides/local-validation.md +100 -0
  23. dicom_dre-1.0.0.dev3/docs/guides/redactor.md +195 -0
  24. dicom_dre-1.0.0.dev3/docs/index.md +84 -0
  25. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/pyproject.toml +8 -0
  26. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/__init__.py +4 -0
  27. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/_version.py +2 -2
  28. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/actions.py +65 -43
  29. dicom_dre-1.0.0.dev3/src/dicom_dre/attributes.py +254 -0
  30. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/batch.py +47 -15
  31. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/cli.py +9 -1
  32. dicom_dre-1.0.0.dev3/src/dicom_dre/parameters.py +82 -0
  33. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/pipeline.py +34 -4
  34. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/profile.py +27 -8
  35. dicom_dre-1.0.0.dev3/src/dicom_dre/profiles/builder.py +75 -0
  36. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/profiles/default.py +80 -72
  37. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/profiles/lds.py +1 -15
  38. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/profiles/lds_no_dob.py +1 -14
  39. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/profiles/pixels_only.py +15 -16
  40. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/result.py +50 -4
  41. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/text_redactor.py +37 -11
  42. dicom_dre-1.0.0.dev3/tests/unit/test_attributes.py +167 -0
  43. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/test_batch.py +60 -1
  44. dicom_dre-1.0.0.dev3/tests/unit/test_pipeline_attributes.py +119 -0
  45. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/test_pipeline_preservation.py +65 -1
  46. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/test_pipeline_redaction.py +5 -1
  47. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/test_pixel_blanker.py +13 -15
  48. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/test_profile.py +93 -32
  49. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/test_text_redactor.py +47 -0
  50. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/uv.lock +16 -0
  51. dicom_dre-1.0.0.dev1/CHANGELOG.md +0 -11
  52. dicom_dre-1.0.0.dev1/docs/index.md +0 -19
  53. dicom_dre-1.0.0.dev1/src/dicom_dre/_jpeg_dct_accel.c +0 -1573
  54. dicom_dre-1.0.0.dev1/src/dicom_dre/profiles/builder.py +0 -130
  55. dicom_dre-1.0.0.dev1/staged.diff +0 -203
  56. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/.devcontainer/devcontainer-lock.json +0 -0
  57. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/.devcontainer/post-create.sh +0 -0
  58. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/.github/copilot-instructions.md +0 -0
  59. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/.github/instructions/dicom-io.instructions.md +0 -0
  60. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/.github/instructions/tests.instructions.md +0 -0
  61. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/.vscode/extensions.json +0 -0
  62. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/.vscode/settings.json +0 -0
  63. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/LICENSE +0 -0
  64. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/NOTICE +0 -0
  65. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/TODO +0 -0
  66. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/docs/Makefile +0 -0
  67. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/docs/_static/.gitkeep +0 -0
  68. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/docs/make.bat +0 -0
  69. {dicom_dre-1.0.0.dev1/docs → dicom_dre-1.0.0.dev3/docs/reference}/api.md +0 -0
  70. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/hatch_build.py +0 -0
  71. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/justfile +0 -0
  72. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/_jpeg_dct_accel_build.py +0 -0
  73. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/catalog.py +0 -0
  74. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/default_catalog.py +0 -0
  75. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/jpeg_dct_scrubber.py +0 -0
  76. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/pixel_blanker.py +0 -0
  77. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/profiles/__init__.py +0 -0
  78. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/py.typed +0 -0
  79. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/pydicom_config.py +0 -0
  80. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/resources/__init__.py +0 -0
  81. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/resources/allow_lists/__init__.py +0 -0
  82. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/resources/allow_lists/default.csv +0 -0
  83. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/scrub_region.py +0 -0
  84. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/src/dicom_dre/uid_utils.py +0 -0
  85. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/conftest.py +0 -0
  86. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/__init__.py +0 -0
  87. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/cr/agfa/dxd40_1000c.json +0 -0
  88. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/ct/ge_medical_systems/discovery_ls.json +0 -0
  89. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/ct/ge_medical_systems/qx_i.json +0 -0
  90. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/ct/ge_medical_systems_ct/discovery_qx_i.json +0 -0
  91. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/ct/ge_medical_systems_mimvista/discovery_st.json +0 -0
  92. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/ct/mimvista_corp/unknown.json +0 -0
  93. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/ct/neurologica/ceretom.json +0 -0
  94. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/ct/neusoft/unknown.json +0 -0
  95. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/ct/philips/gemini.json +0 -0
  96. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/ct/siemens_mimvista/emotion_duo.json +0 -0
  97. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/dx/agfa/dx_g.json +0 -0
  98. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/carestream/classic_cr.json +0 -0
  99. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/fischer_imaging_corporation/senoscan_trueview.json +0 -0
  100. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/fujifilm_corporation/clearview_csm.json +0 -0
  101. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/fujifilm_corporation/fdr_1000aws.json +0 -0
  102. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/fujifilm_corporation/fdr_2000aws.json +0 -0
  103. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/ge_healthcare/senographe_pristina.json +0 -0
  104. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/ge_medical_systems/ads_1_0.json +0 -0
  105. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/ge_medical_systems/senograph_2000d_ads_17_2_3.json +0 -0
  106. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/ge_medical_systems/senographe_essential_ads_43_10_1.json +0 -0
  107. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/ge_medical_systems/senographe_essential_ads_56_21_3.json +0 -0
  108. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/ge_medical_systems/senographe_essential_dbt_reconstruction_box_01_10_3.json +0 -0
  109. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/ge_medical_systems/senographe_essential_dbt_reconstruction_box_01_10_4.json +0 -0
  110. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/hologic_inc/lorad_selenia.json +0 -0
  111. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/hologic_inc/selenia_dimensions.json +0 -0
  112. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/ims_s_r_l/giotto_image_3dl.json +0 -0
  113. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/kodak/classic_cr.json +0 -0
  114. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/kodak/elite_cr.json +0 -0
  115. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/lorad/hologic_selenia.json +0 -0
  116. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/lorad/lorad_selenia.json +0 -0
  117. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/lorad_a_hologic_company/dsm.json +0 -0
  118. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/mptronic_software/senographe_essential_ads_43_10_1.json +0 -0
  119. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/philips_digital_mammography_sweden_ab/l30.json +0 -0
  120. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/siemens/mammomat_inspiration.json +0 -0
  121. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/siemens/mammomat_novation_dr.json +0 -0
  122. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/siemens/mammomat_revelation.json +0 -0
  123. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mg/tmsc_fujitsu_ltd/mgu_1000d.json +0 -0
  124. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mr/ge_medical_systems/discovery_mr750.json +0 -0
  125. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mr/ge_medical_systems/signa_architect.json +0 -0
  126. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mr/ge_medical_systems/signa_hdxt.json +0 -0
  127. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mr/ge_medical_systems/signa_pet_mr.json +0 -0
  128. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mr/ge_medical_systems/signa_premier.json +0 -0
  129. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mr/hitachi_medical_corporation/oasis.json +0 -0
  130. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mr/merge_healthcare/cadstream_5_2_7_563.json +0 -0
  131. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mr/philips_medical_systems/ingenia.json +0 -0
  132. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mr/philips_medical_systems/intera.json +0 -0
  133. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mr/siemens/avanto.json +0 -0
  134. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mr/toshiba/titan.json +0 -0
  135. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/mr/toshiba_mec/mrt200pp3.json +0 -0
  136. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/nm/adac/atlantis.json +0 -0
  137. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/nm/segami/mirage.json +0 -0
  138. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/pt/ge_medical_systems/qx_i.json +0 -0
  139. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/pt/ge_medical_systems/signa_pet_mr.json +0 -0
  140. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/pt/ge_medical_systems_pet/discovery_qx_i.json +0 -0
  141. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/pt/gems/advance.json +0 -0
  142. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/pt/gems/unknown.json +0 -0
  143. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/pt/hmsa_mim_software/927.json +0 -0
  144. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/pt/philips_medical_systems/gemini_tf_base_c.json +0 -0
  145. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/pt/philips_medical_systems/guardian_body_c.json +0 -0
  146. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/pt/philips_medical_systems_mimvista/allegro_body_c.json +0 -0
  147. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/pt/siemens/1094.json +0 -0
  148. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/b_k_medical/1202.json +0 -0
  149. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/ge_healthcare/invenia.json +0 -0
  150. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/ge_healthcare/invenia_abus_2_0.json +0 -0
  151. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiq7.json +0 -0
  152. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiqbook.json +0 -0
  153. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiqe.json +0 -0
  154. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiqe9.json +0 -0
  155. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiqi.json +0 -0
  156. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiqp5.json +0 -0
  157. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiqp6.json +0 -0
  158. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiqs7.json +0 -0
  159. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiqs8.json +0 -0
  160. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiqworkse9.json +0 -0
  161. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/ge_medical_systems/logiq9.json +0 -0
  162. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/ge_vingmed_ultrasound/echopac_pc.json +0 -0
  163. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/ge_vingmed_ultrasound/vivid7.json +0 -0
  164. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/ge_vingmed_ultrasound/vivid_e9.json +0 -0
  165. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/philips_medical_systems/lumify.json +0 -0
  166. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/siemens/s2000.json +0 -0
  167. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/allow/us/siemens_medical_systems_ultrasound_division/antares.json +0 -0
  168. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/cannon/dr_2050c.json +0 -0
  169. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/canon/dr_2010c.json +0 -0
  170. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/canon/dr_2050c.json +0 -0
  171. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/canon/dr_c125.json +0 -0
  172. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/eastman_kodak_company/ls_75.json +0 -0
  173. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/efilm_medical/unknown.json +0 -0
  174. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/fujitsu/fi_6140z.json +0 -0
  175. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/g_e_medical_systems/prodigy.json +0 -0
  176. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/ge_healthcare_it_radiology/centricity_radiology_ra_600.json +0 -0
  177. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/general_electric/centricity_ra_600.json +0 -0
  178. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/hologic/discovery_a_s_n80111.json +0 -0
  179. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/hologic/discovery_a_s_n_85108.json +0 -0
  180. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/infinitt/infinitt_pacs.json +0 -0
  181. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/lexmark/unknown.json +0 -0
  182. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/lifeimagenomination/unknown.json +0 -0
  183. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/lifeimagenotify/unknown.json +0 -0
  184. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/lifeimagereport/unknown.json +0 -0
  185. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/lumisys/unknown.json +0 -0
  186. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/medweb/none.json +0 -0
  187. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/meridian_technique_limited/orthoview_isd.json +0 -0
  188. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/nai_tech_products_inc/the_dicom_box.json +0 -0
  189. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/neurostar_solutions_inc/unknown.json +0 -0
  190. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/north_american_imaging_inc/the_dicom_box.json +0 -0
  191. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/pacs/dr_c125.json +0 -0
  192. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/pacsgear/pacsscan.json +0 -0
  193. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/pacsgear/print2pacs.json +0 -0
  194. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/pacsgear/unknown.json +0 -0
  195. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/pacsgear_inc/the_dicom_box.json +0 -0
  196. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/pacsgear_rii2/unknown.json +0 -0
  197. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/pacslogic/unknown.json +0 -0
  198. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/pacsmatt/unknown.json +0 -0
  199. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/panasonic/kv_s2026c.json +0 -0
  200. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/philips/easydiagnost_super80_cp.json +0 -0
  201. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/philips_medical_systems/unknown.json +0 -0
  202. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/siemens_health_services/unknown.json +0 -0
  203. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/sorna_corporation/unknown.json +0 -0
  204. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/vidar/diagnosticpro_advantage.json +0 -0
  205. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/vidar/unknown.json +0 -0
  206. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/vidar/vidar_digitizer.json +0 -0
  207. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/cr/viztek/unknown.json +0 -0
  208. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/brightspeed.json +0 -0
  209. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/brightspeed_qx_i.json +0 -0
  210. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/brightspeed_s.json +0 -0
  211. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_600.json +0 -0
  212. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_610.json +0 -0
  213. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_690.json +0 -0
  214. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_710.json +0 -0
  215. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_ct.json +0 -0
  216. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_ct590_rt.json +0 -0
  217. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_ct750_hd.json +0 -0
  218. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_iq.json +0 -0
  219. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_mi.json +0 -0
  220. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_rx.json +0 -0
  221. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_st.json +0 -0
  222. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_ste.json +0 -0
  223. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_xr.json +0 -0
  224. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/hispeed_qx_i.json +0 -0
  225. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed.json +0 -0
  226. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed16.json +0 -0
  227. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed_plus.json +0 -0
  228. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed_pro_16.json +0 -0
  229. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed_pro_32.json +0 -0
  230. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed_qx_i.json +0 -0
  231. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed_rt.json +0 -0
  232. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed_rt16.json +0 -0
  233. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed_ultra.json +0 -0
  234. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed_vct.json +0 -0
  235. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed_xtra.json +0 -0
  236. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/optima_560.json +0 -0
  237. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/optima_ct520_series.json +0 -0
  238. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/optima_ct540.json +0 -0
  239. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/optima_ct580.json +0 -0
  240. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/optima_ct660.json +0 -0
  241. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/revolution_ct.json +0 -0
  242. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/revolution_evo.json +0 -0
  243. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/revolution_gsi.json +0 -0
  244. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/revolution_hd.json +0 -0
  245. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/medrad_inc/certegra.json +0 -0
  246. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/philips/brilliance_64.json +0 -0
  247. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/philips/gemini_tf_big_bore.json +0 -0
  248. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/philips/precedence_16p.json +0 -0
  249. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/siemens/sensation_64.json +0 -0
  250. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ct/toshiba/aquilion.json +0 -0
  251. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/dx/bioptics_inc/pathvision.json +0 -0
  252. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/dx/efilm_medical/unknown.json +0 -0
  253. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/dx/faxitron_x_ray_llc/dx_50.json +0 -0
  254. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/dx/ge_healthcare/lunar_prodigy.json +0 -0
  255. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/dx/ge_healthcare/lunar_prodigy_advance.json +0 -0
  256. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/dx/hologic/discovery_a_s_n87685.json +0 -0
  257. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/dx/hologic/discovery_c_s_n81330.json +0 -0
  258. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/dx/hologic/discovery_c_s_n84951.json +0 -0
  259. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/dx/hologic/discovery_sl_s_n82250.json +0 -0
  260. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/dx/hologic/horizon_w_s_n_200112.json +0 -0
  261. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/dx/lexmark/unknown.json +0 -0
  262. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/dx/lifeimagenomination/unknown.json +0 -0
  263. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/dx/lifeimagenotify/unknown.json +0 -0
  264. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/dx/lifeimagereport/unknown.json +0 -0
  265. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/dx/pacsgear/unknown.json +0 -0
  266. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/dx/pacslogic/unknown.json +0 -0
  267. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/dx/pacsmatt/unknown.json +0 -0
  268. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/dx/philips_medical_systems/unknown.json +0 -0
  269. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ko/ge_healthcare_it_radiology/centricity_radiology_ra_1000.json +0 -0
  270. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/bioptics_inc/biovision.json +0 -0
  271. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/bioptics_inc/corevision.json +0 -0
  272. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/bioptics_inc/pixarray100.json +0 -0
  273. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/cadx/cad1.json +0 -0
  274. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/cadx/mmhwdcad.json +0 -0
  275. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/cadx/ohmac2cad.json +0 -0
  276. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/canon/2050c.json +0 -0
  277. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/canon/dr_2010c.json +0 -0
  278. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/confirma_inc/cadstream_4_1_3_985.json +0 -0
  279. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/connect_imaging/unknown.json +0 -0
  280. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/di/document_scanner.json +0 -0
  281. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/eastman_kodak_company/carestream_digitized_priors_input_station_1_1_5_38679_vidar.json +0 -0
  282. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/faxitron_bioptics_llc/biovision.json +0 -0
  283. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/faxitron_x_ray_corporation/dx_50.json +0 -0
  284. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/faxitron_x_ray_llc/dx_50.json +0 -0
  285. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/ge_healthcare/lunar_prodigy_advance.json +0 -0
  286. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/ge_healthcare_it_digital_hardcopy/centricity_digital_hardcopy.json +0 -0
  287. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/ge_healthcare_it_radiology/centricity_radiology_ra_600.json +0 -0
  288. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/hologic/discovery_a_s_n83038.json +0 -0
  289. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/hologic_inc/securview.json +0 -0
  290. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/hologic_inc/trident.json +0 -0
  291. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/icad_inc/7_2_h.json +0 -0
  292. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/icad_inc/icad_powerlook_amp_8_0_1.json +0 -0
  293. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/icad_inc/unknown.json +0 -0
  294. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/kubtec/xpert.json +0 -0
  295. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/kubtec/xpert_20.json +0 -0
  296. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/lexmark/unknown.json +0 -0
  297. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/matakina_technology/unknown.json +0 -0
  298. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/matakina_technology/volpara_server.json +0 -0
  299. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/primordial/unknown.json +0 -0
  300. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/r2_technology_inc/cenova.json +0 -0
  301. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/r2_technology_inc/digitalnow_enhanced.json +0 -0
  302. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/r2_technology_inc/digitalnow_tm.json +0 -0
  303. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/ramsoft_inc/castle_powerreader.json +0 -0
  304. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/siemens_healthcare/syngo_via_va30a.json +0 -0
  305. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/three_palm_software/workstationone.json +0 -0
  306. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/vidar/cad_pro_advantage.json +0 -0
  307. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/vidar/cadpro.json +0 -0
  308. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/vidar/diagnosticpro_advantage.json +0 -0
  309. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/vidar/vidar_digitizer.json +0 -0
  310. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/visage_imaging/senograph_ds_ads_43_10_1.json +0 -0
  311. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/visage_imaging/unknown.json +0 -0
  312. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mg/volpara_limited/unknown.json +0 -0
  313. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/agfa/clinapps.json +0 -0
  314. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/aze/unknown.json +0 -0
  315. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/bammergroup_stanford/rapid_2_0.json +0 -0
  316. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/barco/voxar_3d.json +0 -0
  317. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/cannon/dr_2050c.json +0 -0
  318. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/canon/2050c.json +0 -0
  319. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/circlecvi/unknown.json +0 -0
  320. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/confirma_inc/cadstream_4_1_2_613.json +0 -0
  321. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/dcad/unknown.json +0 -0
  322. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/desacc_inc/health_data_explorer.json +0 -0
  323. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/fujitsu/unknown.json +0 -0
  324. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/ge/signa_1_5t.json +0 -0
  325. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/ge_healthcare_it_radiology/centricity_radiology_ra_600.json +0 -0
  326. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/ge_medical_systems/signa_hdxt.json +0 -0
  327. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/icad/unknown.json +0 -0
  328. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/image_information_systems/unknown.json +0 -0
  329. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/imagenow/unknown.json +0 -0
  330. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/lexmark/unknown.json +0 -0
  331. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/lifeimagenomination/unknown.json +0 -0
  332. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/lifeimagenotify/unknown.json +0 -0
  333. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/lifeimagereport/unknown.json +0 -0
  334. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/lumisys/unknown.json +0 -0
  335. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/medweb/none.json +0 -0
  336. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/merge_healthcare/cadstream_5_2_7_563.json +0 -0
  337. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/merge_healthcare/cadstream_5_2_9_711.json +0 -0
  338. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/merge_healthcare_inc/unknown.json +0 -0
  339. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/neurostar_solutions_inc/unknown.json +0 -0
  340. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/pacsgear/pacsscan.json +0 -0
  341. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/pacsgear/unknown.json +0 -0
  342. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/pacsgear_riipscan/unknown.json +0 -0
  343. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/pacsmatt/unknown.json +0 -0
  344. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/pacsscan/dr_2080c.json +0 -0
  345. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/pacsscan_4_0/unknown.json +0 -0
  346. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/panasonic/kv_s2028c.json +0 -0
  347. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/philips/unknown.json +0 -0
  348. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/philips_medical_systems/unknown.json +0 -0
  349. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/primordial/unknown.json +0 -0
  350. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/radiology_research/hfh.json +0 -0
  351. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/siemens_healthcare/syngo_via_va20a.json +0 -0
  352. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/siemens_healthcare/syngo_via_vb10a.json +0 -0
  353. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/sorna_corporation/unknown.json +0 -0
  354. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/statrad_llc/push2pacs.json +0 -0
  355. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/toshiba_mec/mrt200pp3.json +0 -0
  356. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/toshiba_mec/unknown.json +0 -0
  357. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/urlj/unknown.json +0 -0
  358. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/vassol/unknown.json +0 -0
  359. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/vidar/unknown.json +0 -0
  360. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/vital_images_inc/vitrea_2.json +0 -0
  361. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/mr/viztek/unknown.json +0 -0
  362. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/nm/adac/unknown.json +0 -0
  363. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/nm/ge_medical_systems/discovery_st.json +0 -0
  364. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/nm/segami/mirage.json +0 -0
  365. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ot/ge_medical_systems/qx_i.json +0 -0
  366. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/ot/philips_medical_systems/alluraxper.json +0 -0
  367. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/pct/ge_medical_systems/discovery_ste.json +0 -0
  368. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/pt/ge_medical_systems/discovery_690.json +0 -0
  369. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/pt/ge_medical_systems/discovery_st.json +0 -0
  370. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/pt/ge_medical_systems/discovery_ste.json +0 -0
  371. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/pt/ge_medical_systems/qx_i.json +0 -0
  372. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/pt/philips_medical_systems/allegro_body_c.json +0 -0
  373. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/sc/sante_dicom/unknown.json +0 -0
  374. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/sr/philips_medical_systems/ie33.json +0 -0
  375. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/sr/siemens/biograph128.json +0 -0
  376. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/sr/siemens/sensation_16.json +0 -0
  377. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/sr/siemens/sensation_64.json +0 -0
  378. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/sr/siemens/somatom_definition.json +0 -0
  379. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/sr/siemens/somatom_definition_as.json +0 -0
  380. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/sr/siemens/somatom_definition_edge.json +0 -0
  381. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/sr/siemens/somatom_definition_flash.json +0 -0
  382. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/sr/siemens/somatom_force.json +0 -0
  383. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/sr/sonosite_inc/turbo.json +0 -0
  384. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/acuson/cypress.json +0 -0
  385. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/acuson/sequoia.json +0 -0
  386. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/aloka_co_ltd/ssd_5500.json +0 -0
  387. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/atl/hdi_5000.json +0 -0
  388. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/g_e_medical_systems/logiq_700.json +0 -0
  389. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/ge_healthcare/logiq_s6.json +0 -0
  390. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/ge_healthcare/logiqe.json +0 -0
  391. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/ge_healthcare/logiqe9.json +0 -0
  392. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/ge_healthcare/logiqi.json +0 -0
  393. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/ge_healthcare/logiqp5.json +0 -0
  394. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/ge_healthcare/logiqp6.json +0 -0
  395. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/ge_healthcare/logiqp9.json +0 -0
  396. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/ge_healthcare/logiqs7.json +0 -0
  397. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/ge_healthcare/logiqs8.json +0 -0
  398. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/ge_healthcare/venue_40.json +0 -0
  399. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/ge_healthcare/viewpoint.json +0 -0
  400. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/ge_healthcare_it_radiology/centricity_radiology_ra_600.json +0 -0
  401. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/ge_healthcare_viewpoint/viewpoint.json +0 -0
  402. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/ge_medical_systems/logiq5.json +0 -0
  403. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/ge_medical_systems/logiq9.json +0 -0
  404. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/ge_medical_systems/logiqworks.json +0 -0
  405. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/ge_vingmed_ultrasound/vivid7.json +0 -0
  406. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/gems_ultrasound/vivid_i.json +0 -0
  407. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/gems_ultrasound/vivid_s5.json +0 -0
  408. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/gems_ultrasound/vivid_s6.json +0 -0
  409. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/medison/accuvix.json +0 -0
  410. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/medison/accuvix_xg.json +0 -0
  411. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/philips_medical_systems/affiniti_50g.json +0 -0
  412. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/philips_medical_systems/epiq_5g.json +0 -0
  413. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/philips_medical_systems/epiq_7g.json +0 -0
  414. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/philips_medical_systems/hd15.json +0 -0
  415. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/philips_medical_systems/iu22.json +0 -0
  416. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/samsung_medison_co_ltd/rs80a.json +0 -0
  417. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/samsung_medison_co_ltd/sonoace_r7.json +0 -0
  418. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/siemens/acuson_p500.json +0 -0
  419. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/siemens/acuson_sc2000.json +0 -0
  420. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/siemens/acuson_x300.json +0 -0
  421. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/siemens/acuson_x700.json +0 -0
  422. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/siemens/s2000.json +0 -0
  423. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/siemens_medical_systems_ultrasound_division/antares.json +0 -0
  424. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/siemens_ultrasound/g50_s.json +0 -0
  425. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/sonosite_inc/micromaxx.json +0 -0
  426. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/sonosite_inc/nano.json +0 -0
  427. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/sonosite_inc/x_porte.json +0 -0
  428. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/supersonic_imagine_sa/aixplorer.json +0 -0
  429. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/toshiba_mec/ssa_580a.json +0 -0
  430. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/toshiba_mec_us/tus_a500.json +0 -0
  431. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/u_systems/somoviewer.json +0 -0
  432. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/unknown/unknown.json +0 -0
  433. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/zonare/z_one.json +0 -0
  434. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/us/zonare/zs3.json +0 -0
  435. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/xa/philips/allura_clarity.json +0 -0
  436. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/filter/xa/philips_medical_systems/alluraxper.json +0 -0
  437. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/cr/canon_inc/axiom_multix_m.json +0 -0
  438. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/cr/canon_inc/cxdi.json +0 -0
  439. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/cr/konica/0402.json +0 -0
  440. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/cr/medicatechusa/krystalrad_660vsi.json +0 -0
  441. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/cr/shimadzu/cxdi_control_software_ne.json +0 -0
  442. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/ct/siemens/s1000.json +0 -0
  443. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/dx/canon_inc/cxdi.json +0 -0
  444. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/dx/cuattro_llc/clouddr_medical.json +0 -0
  445. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/dx/medicatechusa/krystalrad_660_vxi.json +0 -0
  446. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/dx/medlink_imaging/altodr.json +0 -0
  447. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/nm/ge_medical_systems_nuclear/unknown.json +0 -0
  448. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/ot/ge_medical_systems/discovery_690.json +0 -0
  449. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/ot/ge_medical_systems/discovery_mi.json +0 -0
  450. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/ot/ge_medical_systems/discovery_st.json +0 -0
  451. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/ot/ge_medical_systems/discovery_ste.json +0 -0
  452. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/ot/ge_medical_systems/signa_pet_mr.json +0 -0
  453. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/pt/ge_medical_systems/discovery_600.json +0 -0
  454. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/pt/ge_medical_systems/discovery_mi.json +0 -0
  455. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/pt/ge_medical_systems/signa_pet_mr.json +0 -0
  456. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/pt/philips_medical_systems/guardian_body_c.json +0 -0
  457. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/acuson/cypress.json +0 -0
  458. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/acuson/sequoia.json +0 -0
  459. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/aloka_co_ltd/ssd_5500.json +0 -0
  460. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/aloka_co_ltd/ssd_alpha10.json +0 -0
  461. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/aloka_co_ltd/ssd_alpha5.json +0 -0
  462. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/aloka_co_ltd/ssd_alpha6.json +0 -0
  463. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/aloka_co_ltd/ssd_alpha7.json +0 -0
  464. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/b_k_medical/1202.json +0 -0
  465. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/b_k_medical/2202.json +0 -0
  466. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/bk_medical/2300.json +0 -0
  467. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/g_e_medical_systems/logiq_700.json +0 -0
  468. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiq7.json +0 -0
  469. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiq_s6.json +0 -0
  470. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiqe.json +0 -0
  471. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiqe9.json +0 -0
  472. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiqi.json +0 -0
  473. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiqp5.json +0 -0
  474. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiqp6.json +0 -0
  475. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiqp9.json +0 -0
  476. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiqs7.json +0 -0
  477. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiqs8.json +0 -0
  478. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/vivide.json +0 -0
  479. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/voluson_p.json +0 -0
  480. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/voluson_s.json +0 -0
  481. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_healthcare_austria_gmbh_co_og/v830.json +0 -0
  482. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_healthcare_austria_gmbh_co_og/voluson_e8.json +0 -0
  483. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_medical_systems/logiq5.json +0 -0
  484. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_medical_systems/logiq9.json +0 -0
  485. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_medical_systems_kretztechnik_gmbh_co_ohg/v830.json +0 -0
  486. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_ultrasound/vivid_3.json +0 -0
  487. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_vingmed_ultrasound/vivid7.json +0 -0
  488. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_vingmed_ultrasound/vivid_e9.json +0 -0
  489. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/ge_vingmed_ultrasound/vivid_e95.json +0 -0
  490. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/gems_ultrasound/logiq_400.json +0 -0
  491. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/gems_ultrasound/vivid_i.json +0 -0
  492. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/gems_ultrasound/vivid_q.json +0 -0
  493. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/gems_ultrasound/vivid_s5.json +0 -0
  494. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/gems_ultrasound/vivid_s6.json +0 -0
  495. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/hitachi_aloka_medical_ltd/noblus.json +0 -0
  496. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/hitachi_aloka_medical_ltd/prosound_f75.json +0 -0
  497. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/medison/accuvix.json +0 -0
  498. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/medison/accuvix_v10.json +0 -0
  499. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/medison/accuvix_v20.json +0 -0
  500. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/medison/accuvix_xg.json +0 -0
  501. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/medison/sonoace_x8.json +0 -0
  502. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/affiniti_50g.json +0 -0
  503. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/affiniti_70g.json +0 -0
  504. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/clearvue_550.json +0 -0
  505. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/cx30.json +0 -0
  506. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/cx50.json +0 -0
  507. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/epiq_5w.json +0 -0
  508. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/epiq_7g.json +0 -0
  509. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/hd15.json +0 -0
  510. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/ie33.json +0 -0
  511. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/iu22.json +0 -0
  512. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/sparq.json +0 -0
  513. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/samsung_medison_co_ltd/h60.json +0 -0
  514. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/samsung_medison_co_ltd/rs80a.json +0 -0
  515. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/samsung_medison_co_ltd/sonoace_r7.json +0 -0
  516. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/siemens/acuson_freestyle.json +0 -0
  517. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/siemens/acuson_p500.json +0 -0
  518. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/siemens/acuson_sc2000.json +0 -0
  519. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/siemens/acuson_x300.json +0 -0
  520. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/siemens/acuson_x700.json +0 -0
  521. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/siemens/s1000.json +0 -0
  522. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/siemens/s2000.json +0 -0
  523. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/siemens/s3000.json +0 -0
  524. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/siemens_medical_systems_ultrasound_division/antares.json +0 -0
  525. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/siemens_ultrasound/elegra.json +0 -0
  526. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/siemens_ultrasound/g40.json +0 -0
  527. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/siemens_ultrasound/g50_s.json +0 -0
  528. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/siemens_ultrasound/g60_s.json +0 -0
  529. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/siemens_ultrasound/x150.json +0 -0
  530. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/sonosite/sonosite_titan.json +0 -0
  531. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/sonosite_inc/micromaxx.json +0 -0
  532. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/sonosite_inc/nano.json +0 -0
  533. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/sonosite_inc/turbo.json +0 -0
  534. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/sonosite_inc/x_porte.json +0 -0
  535. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/supersonic_imagine_sa/aixplorer.json +0 -0
  536. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/toshiba_mec/aplioxg.json +0 -0
  537. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/toshiba_mec/viamo.json +0 -0
  538. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/toshiba_mec/xarioxg.json +0 -0
  539. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/toshiba_mec_us/ssh_880cv.json +0 -0
  540. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/toshiba_mec_us/tus_a300.json +0 -0
  541. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/toshiba_mec_us/tus_a400.json +0 -0
  542. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/toshiba_mec_us/tus_a500.json +0 -0
  543. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/toshiba_mec_us/tus_ai700.json +0 -0
  544. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/toshiba_mec_us/tus_x200.json +0 -0
  545. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/zonare/z_one.json +0 -0
  546. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/catalog_fixtures/scrub/us/zonare/zs3.json +0 -0
  547. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/conftest.py +0 -0
  548. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/test_catalog.py +0 -0
  549. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/test_catalog_regression_fixtures.py +0 -0
  550. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/test_cli.py +0 -0
  551. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/test_default_catalog.py +0 -0
  552. {dicom_dre-1.0.0.dev1 → dicom_dre-1.0.0.dev3}/tests/unit/test_jpeg_dct_scrubber.py +0 -0
@@ -16,7 +16,9 @@
16
16
  "python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
17
17
  "extensions.verifySignature": false, // https://github.com/microsoft/vscode-remote-release/issues/9628
18
18
  "remote.autoForwardPorts": false,
19
- "extensions.ignoreRecommendations": true
19
+ "extensions.ignoreRecommendations": true,
20
+ "git.autofetch": true,
21
+ "git.autofetchPeriod": 180
20
22
  },
21
23
  "extensions": [
22
24
  "bierner.markdown-mermaid",
@@ -43,6 +45,9 @@
43
45
  "ghcr.io/jsburckhardt/devcontainer-features/uv:1": {},
44
46
  "ghcr.io/devcontainers/features/github-cli:1": {}
45
47
  },
48
+ "mounts": [
49
+ "source=dicom-dre-home,target=/home/${localEnv:USER}${localEnv:USERNAME},type=volume"
50
+ ],
46
51
  "postCreateCommand": "bash ./.devcontainer/post-create.sh",
47
52
  "waitFor": "postCreateCommand"
48
53
  }
@@ -23,15 +23,35 @@ on:
23
23
  - main
24
24
  - development
25
25
 
26
- # Prevent overlapping deploys on the same branch.
27
26
  concurrency:
28
27
  group: deploy-${{ github.ref_name }}
29
28
  cancel-in-progress: false
30
29
 
31
30
  jobs:
31
+ test:
32
+ runs-on: ubuntu-latest
33
+ permissions:
34
+ contents: read
35
+ env:
36
+ # Exclude the docs group (a default group locally) from CI installs.
37
+ UV_NO_GROUP: docs
38
+ steps:
39
+ - name: Checkout
40
+ uses: actions/checkout@v4
41
+
42
+ - name: Set up uv
43
+ uses: astral-sh/setup-uv@v5
44
+ with:
45
+ python-version: "3.12"
46
+
47
+ - name: Install dependencies
48
+ run: uv sync
49
+
50
+ - name: Run tests
51
+ run: uv run pytest
52
+
32
53
  version:
33
- # Compute the next version without modifying the repository. Determines
34
- # whether a release is warranted and the version/tag that would result.
54
+ needs: test
35
55
  runs-on: ubuntu-latest
36
56
  permissions:
37
57
  contents: read
@@ -138,9 +158,6 @@ jobs:
138
158
  path: ./dist/*.tar.gz
139
159
 
140
160
  release:
141
- # First job that mutates the repository. Runs only after every distribution
142
- # has built. Tags, commits the changelog, pushes, creates the GitHub
143
- # Release, and uploads the built artifacts.
144
161
  needs: [version, build_wheels, build_sdist]
145
162
  if: needs.version.outputs.released == 'true'
146
163
  runs-on: ubuntu-latest
@@ -17,6 +17,7 @@ docs/_build/
17
17
 
18
18
  # CFFI build scratch (generated by the JPEG-DCT build hook)
19
19
  src/dicom_dre/dicom_dre/
20
+ src/dicom_dre/_jpeg_dct_accel.c
20
21
 
21
22
  # Virtual environments
22
23
  .venv/
@@ -0,0 +1,23 @@
1
+ # CHANGELOG
2
+
3
+ <!-- version list -->
4
+
5
+ ## v1.0.0-dev.2 (2026-07-24)
6
+
7
+ ### Documentation
8
+
9
+ - Initial rewrite from source repo
10
+ ([`80e26c9`](https://github.com/susom/dicom-dre/commit/80e26c99e5f270528dfa2ddb8551b0baf3fdc7b7))
11
+
12
+ - Scaffolding
13
+ ([`c1db56a`](https://github.com/susom/dicom-dre/commit/c1db56a224050b8704f82ac99b857d6c0c43690f))
14
+
15
+ ### Performance Improvements
16
+
17
+ - Redactor caching
18
+ ([`ce14989`](https://github.com/susom/dicom-dre/commit/ce14989512d0d688d6b726444c84f91cafc28757))
19
+
20
+
21
+ ## v1.0.0-dev.1 (2026-07-24)
22
+
23
+ - Initial Release
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dicom-dre
3
- Version: 1.0.0.dev1
3
+ Version: 1.0.0.dev3
4
4
  Summary: DICOM De-identification & Redaction Engine
5
5
  Project-URL: repository, https://github.com/susom/dicom-dre
6
6
  Author-email: Stanford <people@stanford.edu>
@@ -25,7 +25,7 @@ Description-Content-Type: text/markdown
25
25
 
26
26
  # DICOM-DRE
27
27
 
28
- A fast, deterministic DICOM de-identification and redaction engine.
28
+ A fast, reproducible DICOM de-identification and redaction engine.
29
29
 
30
30
  `dicom-dre` removes protected health information (PHI) from DICOM instances in
31
31
  two places where it commonly hides:
@@ -39,22 +39,28 @@ two places where it commonly hides:
39
39
  - **Free-text metadata PHI.** Description fields that frequently carry PHI
40
40
  (`SeriesDescription`, `StudyDescription`, `ProtocolName`) are redacted
41
41
  token-by-token against an allowlist: any token not on the allowlist is masked,
42
- while known clinical terms pass through.
42
+ while known clinical terms pass through. This approach works because the
43
+ distinct values in these short description fields are overwhelmingly derived
44
+ from structured entries in the source PACS, so a finite allowlist covers the
45
+ legitimate vocabulary. It is not intended for paragraphs of prose, general
46
+ clinical notes, or other entirely free-form fields with no discernible
47
+ pattern, where the allowlist model cannot bound the vocabulary or reliably
48
+ de-identify the text.
43
49
 
44
50
  Instance metadata is also scrubbed against a configurable de-identification
45
51
  profile, and instance/study/series UIDs are deterministically re-derived, so the
46
52
  same input plus the same parameters always yields the same output.
47
53
 
48
- ## Deterministic by design
54
+ ## Reproducible by design
49
55
 
50
56
  The engine performs no hashing lookups, no network calls, and no randomization
51
57
  of its own. De-identification parameters (patient ID, accession number, UID
52
- root, salt, etc.) are consumed exactly as supplied. Given identical inputs and
53
- parameters, output is byte-reproducible. Callers are responsible for supplying
54
- already-hashed or already-mapped identifier values.
58
+ root, salt, jitter, etc.) are consumed exactly as supplied. Given identical
59
+ inputs and parameters, output is byte-for-byte reproducible. Callers are
60
+ responsible for supplying already-hashed or already-mapped identifier values.
55
61
 
56
- This determinism is guarded by a regression test suite built from sampled DICOM
57
- studies. Each fixture records the technical matching tags and the expected
62
+ This reproducibility is guarded by a regression test suite built from sampled
63
+ DICOM studies. Each fixture records the technical matching tags and the expected
58
64
  catalog filtering and pixel-scrub decisions (with no PHI or pixel data), and the
59
65
  tests assert that the engine still reaches the recorded decision for every case,
60
66
  so catalog or profile changes that alter existing outcomes are caught.
@@ -151,13 +157,14 @@ site's vocabulary.
151
157
  ## Library usage
152
158
 
153
159
  ```python
154
- from dicom_dre import deidentify_paths, ProfileSpec
160
+ from dicom_dre import DeidParameters, ProfileSpec, deidentify_paths
155
161
 
156
162
  for item in deidentify_paths(
157
163
  sources=["studies/"],
158
164
  output_dir="out/",
159
165
  recursive=True,
160
- profile_spec=ProfileSpec(name="default", parameters={"PATIENT_ID": "TEST"}),
166
+ profile_spec=ProfileSpec(name="default"),
167
+ parameters=DeidParameters(patient_id="TEST"),
161
168
  ):
162
169
  print(item.input_file, item.result.outcome)
163
170
  ```
@@ -1,6 +1,6 @@
1
1
  # DICOM-DRE
2
2
 
3
- A fast, deterministic DICOM de-identification and redaction engine.
3
+ A fast, reproducible DICOM de-identification and redaction engine.
4
4
 
5
5
  `dicom-dre` removes protected health information (PHI) from DICOM instances in
6
6
  two places where it commonly hides:
@@ -14,22 +14,28 @@ two places where it commonly hides:
14
14
  - **Free-text metadata PHI.** Description fields that frequently carry PHI
15
15
  (`SeriesDescription`, `StudyDescription`, `ProtocolName`) are redacted
16
16
  token-by-token against an allowlist: any token not on the allowlist is masked,
17
- while known clinical terms pass through.
17
+ while known clinical terms pass through. This approach works because the
18
+ distinct values in these short description fields are overwhelmingly derived
19
+ from structured entries in the source PACS, so a finite allowlist covers the
20
+ legitimate vocabulary. It is not intended for paragraphs of prose, general
21
+ clinical notes, or other entirely free-form fields with no discernible
22
+ pattern, where the allowlist model cannot bound the vocabulary or reliably
23
+ de-identify the text.
18
24
 
19
25
  Instance metadata is also scrubbed against a configurable de-identification
20
26
  profile, and instance/study/series UIDs are deterministically re-derived, so the
21
27
  same input plus the same parameters always yields the same output.
22
28
 
23
- ## Deterministic by design
29
+ ## Reproducible by design
24
30
 
25
31
  The engine performs no hashing lookups, no network calls, and no randomization
26
32
  of its own. De-identification parameters (patient ID, accession number, UID
27
- root, salt, etc.) are consumed exactly as supplied. Given identical inputs and
28
- parameters, output is byte-reproducible. Callers are responsible for supplying
29
- already-hashed or already-mapped identifier values.
33
+ root, salt, jitter, etc.) are consumed exactly as supplied. Given identical
34
+ inputs and parameters, output is byte-for-byte reproducible. Callers are
35
+ responsible for supplying already-hashed or already-mapped identifier values.
30
36
 
31
- This determinism is guarded by a regression test suite built from sampled DICOM
32
- studies. Each fixture records the technical matching tags and the expected
37
+ This reproducibility is guarded by a regression test suite built from sampled
38
+ DICOM studies. Each fixture records the technical matching tags and the expected
33
39
  catalog filtering and pixel-scrub decisions (with no PHI or pixel data), and the
34
40
  tests assert that the engine still reaches the recorded decision for every case,
35
41
  so catalog or profile changes that alter existing outcomes are caught.
@@ -126,13 +132,14 @@ site's vocabulary.
126
132
  ## Library usage
127
133
 
128
134
  ```python
129
- from dicom_dre import deidentify_paths, ProfileSpec
135
+ from dicom_dre import DeidParameters, ProfileSpec, deidentify_paths
130
136
 
131
137
  for item in deidentify_paths(
132
138
  sources=["studies/"],
133
139
  output_dir="out/",
134
140
  recursive=True,
135
- profile_spec=ProfileSpec(name="default", parameters={"PATIENT_ID": "TEST"}),
141
+ profile_spec=ProfileSpec(name="default"),
142
+ parameters=DeidParameters(patient_id="TEST"),
136
143
  ):
137
144
  print(item.input_file, item.result.outcome)
138
145
  ```
@@ -0,0 +1,8 @@
1
+ # Changelog
2
+
3
+ python-semantic-release generates the changelog at the repository root from
4
+ Conventional Commit messages.
5
+
6
+ ```{include} ../../CHANGELOG.md
7
+ :start-line: 2
8
+ ```
@@ -0,0 +1,46 @@
1
+ # History
2
+
3
+ `dicom-dre` grew out of a de-identification workflow built on the MIRC CTP
4
+ (Clinical Trial Processor) engine. This page records that background. It is not
5
+ a reference for configuring the engine; the device catalog and profiles
6
+ documented elsewhere in these docs have replaced the behavior described here.
7
+
8
+ ## From CTP scripts to a device catalog
9
+
10
+ The original workflow controlled DICOM image handling with two CTP script files
11
+ and an XML metadata template:
12
+
13
+ - **filter.script** decided which images to accept for processing. Images
14
+ matching a filter rule passed through; the engine quarantined images matching
15
+ no rule.
16
+ - **pixel.script** defined rectangular regions to blank for images with
17
+ burned-in PHI annotations.
18
+
19
+ Both scripts used a Java boolean expression syntax over DICOM attributes. Filter
20
+ rules keyed on manufacturer, model, modality, software version, and image
21
+ dimensions. Pixel rules paired a matching signature with one or more
22
+ `(x, y, width, height)` scrub regions.
23
+
24
+ Two problems motivated the rewrite:
25
+
26
+ - The filter and pixel scripts encoded the same device signatures twice, once to
27
+ decide acceptance and again to place scrub regions, so the two files drifted
28
+ apart as maintainers added devices.
29
+ - The expression syntax was code rather than data, which made the rule set hard
30
+ to inspect, test, and validate.
31
+
32
+ `dicom-dre` replaces both script files with a single Python device catalog. Each
33
+ catalog entry describes one device and binds its acquisition variants directly
34
+ to the pixel regions to blank, so each device defines its filter decision and
35
+ its scrub regions together. See [Device catalog](../concepts/device-catalog.md).
36
+
37
+ ## From an XML template to profiles
38
+
39
+ De-identification profiles now express the metadata handling that a CTP
40
+ anonymizer template previously expressed. See
41
+ [Profiles](../concepts/profiles.md) for the profiles shipped in this repository.
42
+
43
+ ## Acknowledgement
44
+
45
+ This project would not have been possible without years of working with and
46
+ learning from the MIRC CTP engine.
@@ -0,0 +1,51 @@
1
+ # Provenance and Portability
2
+
3
+ The bundled device catalog and free-text allowlist come from studies on a single
4
+ PACS at one medical research center. The catalog's device rules, pixel scrub
5
+ regions, and allowlisted vocabulary reflect the scanner fleet and reporting
6
+ conventions seen there. They are unlikely to be complete or correct for a
7
+ different site.
8
+
9
+ ## What is site-specific
10
+
11
+ The following ship with `dicom-dre` but encode assumptions about one site:
12
+
13
+ - **Device rules.** Each catalog entry matches a specific device by
14
+ manufacturer, model, modality, software version, and image dimensions. Devices
15
+ absent from the observed fleet have no entry, and the engine will not
16
+ recognize them.
17
+ - **Pixel scrub regions.** Blanking coordinates are fixed per device and
18
+ acquisition variant. If a device burns in text at a different location, or a
19
+ firmware revision moves the overlay, the engine will not scrub it correctly.
20
+ - **Free-text allowlist.** The allowlisted vocabulary reflects the reporting
21
+ conventions and clinical terms seen in one site's description fields. The
22
+ engine masks local vocabulary that is absent from the allowlist; local PHI
23
+ patterns the allowlist does not anticipate may pass through.
24
+
25
+ ## Consequences of an unvalidated deployment
26
+
27
+ - **Unmatched or mismatched devices** do not have their burned-in text blanked.
28
+ The engine filters an instance from an unknown device rather than emitting it
29
+ with unscrubbed PHI, but a partially matching rule with wrong coordinates can
30
+ emit an instance whose overlay is not fully covered.
31
+ - **Over-redaction** masks legitimate terms when the allowlist omits vocabulary
32
+ used at your site, degrading the usefulness of description fields.
33
+ - **Under-redaction** leaks PHI when tokens that should be masked resemble
34
+ allowlisted terms.
35
+
36
+ ## Before relying on `dicom-dre` elsewhere
37
+
38
+ - Validate pixel scrubbing against your own devices. Confirm that each device
39
+ you process either matches a catalog entry with correct scrub regions or that
40
+ the engine intentionally filters it.
41
+ - Review and extend the allowlist for your local vocabulary to reduce
42
+ over-redaction and under-redaction.
43
+ - Run the regression suite after any catalog or allowlist change to confirm that
44
+ existing decisions still hold.
45
+
46
+ The [Local validation](../guides/local-validation.md) guide describes these
47
+ steps in detail. The [Extending the catalog](../guides/extending-the-catalog.md)
48
+ guide covers adding new device entries.
49
+
50
+ Treat the shipped catalog and allowlist as a starting point that requires local
51
+ validation, not as a turnkey configuration.
@@ -0,0 +1,62 @@
1
+ # Testing
2
+
3
+ The project uses pytest. Tests live in `tests/unit/` and mirror the structure of
4
+ `src/dicom_dre/`.
5
+
6
+ ## Running the test suite
7
+
8
+ Run all tests:
9
+
10
+ ```bash
11
+ uv run pytest
12
+ ```
13
+
14
+ Or use the justfile target:
15
+
16
+ ```bash
17
+ just test
18
+ ```
19
+
20
+ Run a single test file or pattern:
21
+
22
+ ```bash
23
+ just test-one tests/unit/test_pipeline_preservation.py
24
+ ```
25
+
26
+ ## Coverage
27
+
28
+ Generate a coverage report with per-line detail for uncovered lines:
29
+
30
+ ```bash
31
+ just cov
32
+ ```
33
+
34
+ This runs `uv run pytest --cov=src/dicom_dre --cov-report=term-missing`.
35
+
36
+ ## Pure-Python fallback
37
+
38
+ The JPEG DCT-domain scrubber has an optional compiled C accelerator. To confirm
39
+ that the pure-Python fallback works when the extension is absent, run:
40
+
41
+ ```bash
42
+ just test-fallback
43
+ ```
44
+
45
+ The target temporarily moves any compiled `_jpeg_dct_accel*.so` out of the
46
+ package, runs the suite, and restores the extension afterward.
47
+
48
+ ## Regression fixtures
49
+
50
+ `tests/unit/test_catalog_regression_fixtures.py` asserts that the catalog still
51
+ reaches the recorded filtering and pixel-scrub decision for each sampled case.
52
+ The fixtures record only the technical matching tags and the expected decision,
53
+ with no PHI or pixel data. Run this suite after any catalog or profile change so
54
+ that it catches alterations to existing outcomes.
55
+
56
+ ## Writing tests
57
+
58
+ - Place tests in `tests/unit/`, mirroring the source structure.
59
+ - Use descriptive test names that state what each test verifies.
60
+ - Mock external services in unit tests, especially any that would make network
61
+ calls.
62
+ - Use fixtures for common setup.
@@ -0,0 +1,153 @@
1
+ # Architecture
2
+
3
+ `dicom-dre` is a pure-Python DICOM de-identification engine. It filters images,
4
+ blanks burned-in pixel regions, and rewrites metadata tags. For each input file
5
+ it produces one of three outcomes by running three stages in sequence.
6
+
7
+ ## Overview
8
+
9
+ For each input DICOM file the engine runs three stages:
10
+
11
+ 1. **Filter** — a device catalog decides whether to keep or reject the image.
12
+ 2. **Pixel scrub** — the engine blanks the burned-in text regions the catalog
13
+ identified.
14
+ 3. **Metadata** — the engine rewrites DICOM tags: it removes PHI, re-derives
15
+ UIDs, and shifts or keeps dates.
16
+
17
+ Each run returns a {py:class}`~dicom_dre.result.DeidentifyResult` whose `outcome`
18
+ is one of three {py:class}`~dicom_dre.result.Outcome` values:
19
+
20
+ | Outcome | Cause |
21
+ |---------|-------|
22
+ | `DEIDENTIFIED` | The file passed the filter, and the engine wrote it out. |
23
+ | `FILTERED` | A device or exclusion rule rejected the file; the result carries the matched reason. |
24
+ | `QUARANTINED` | Processing raised an exception; the result carries the error text. |
25
+
26
+ ## Pipeline
27
+
28
+ Every de-identification call enters through
29
+ {py:func}`dicom_dre.pipeline.deidentify_file`, which composes the three stages and
30
+ returns a `DeidentifyResult`.
31
+
32
+ ```{mermaid}
33
+ flowchart LR
34
+ A["PHI DICOM"] --> F{"Filter<br>catalog.evaluate()"}
35
+ F -->|deny| X["FILTERED<br>(+ reason)"]
36
+ F -->|allow / scrub| S["Pixel scrub<br>blank_regions()"]
37
+ S --> M["Metadata<br>profile.apply()"]
38
+ M --> O["DEIDENTIFIED"]
39
+ F -.->|exception| Q["QUARANTINED"]
40
+ ```
41
+
42
+ An exception raised in any stage does not propagate to the caller.
43
+ `deidentify_file` catches it and returns a `QUARANTINED` result instead.
44
+
45
+ ## Stages
46
+
47
+ ### Filter
48
+
49
+ `catalog.evaluate(DicomTags.from_file(path))` returns a
50
+ {py:class}`~dicom_dre.catalog.CatalogDecision` with an action (`allow`, `deny`, or
51
+ `scrub`), a human-readable reason, and a list of scrub regions. A `deny` action
52
+ stops the pipeline and produces a `FILTERED` result whose `filter_reason` is the
53
+ matched rule. Catalog evaluation reads tags directly with pydicom.
54
+
55
+ See [Device Catalog](device-catalog.md).
56
+
57
+ ### Pixel scrub
58
+
59
+ When the decision carries scrub regions,
60
+ {py:func}`dicom_dre.pixel_blanker.blank_regions` blanks them. The engine edits
61
+ JPEG Baseline images directly in the compressed bitstream with no re-encoding.
62
+ For all other transfer syntaxes, it decodes with pydicom and numpy, blanks the
63
+ regions, and writes uncompressed Explicit VR Little Endian.
64
+
65
+ See [JPEG DCT Scrubbing](jpeg-dct.md).
66
+
67
+ ### Metadata
68
+
69
+ The bound {py:class}`~dicom_dre.profile.DeidProfile` runs its tag rules on the
70
+ dataset with `DeidProfile.apply(ds, params)`, where `params` is a
71
+ {py:class}`~dicom_dre.parameters.DeidParameters` carrying the per-patient values.
72
+ Rules are small closures defined in
73
+ {py:mod}`dicom_dre.actions` (for example `remove`, `empty`, `hash_uid`,
74
+ `jitter_date`, `keep`). The profile factories in {py:mod}`dicom_dre.profiles`
75
+ compose the tag sets each profile applies them to.
76
+
77
+ Each factory in `actions.py` closes over its build-time arguments at
78
+ profile-construction time and returns a
79
+ `(Dataset, BaseTag, DeidParameters) -> None` callable that reads per-patient
80
+ values from the supplied parameters. The available actions:
81
+
82
+ | Action | Effect |
83
+ |--------|--------|
84
+ | `keep()` | Leave the element unchanged. |
85
+ | `remove()` | Delete the element from the dataset. |
86
+ | `empty()` | Replace the value with a zero-length value (empty list for `SQ`). |
87
+ | `set_value(value, create_if_missing=False)` | Replace the value with a literal string, optionally creating the element when absent. |
88
+ | `set_param(field, default=None, fallback_field=None, create_if_missing=False)` | Write a per-patient value read from `DeidParameters`, with fallbacks. |
89
+ | `hash_uid(root, use_study_salt=False)` | Re-derive a UID as an MD5 hash under `root`, optionally salted with the study identifier. |
90
+ | `jitter_date()` | Shift the `DA`/`DT` date component forward by `params.jitter` days, preserving any time/timezone remainder. |
91
+ | `append_value(text, create_if_missing=False)` | Append `text` to a multi-valued element using `\` as separator. |
92
+ | `cap_age(threshold, replacement)` | Replace an `AS` age when its numeric part exceeds `threshold`. |
93
+ | `if_exists(inner)` | Apply `inner` only when the element is present. |
94
+ | `process()` | Mark an `SQ` element for recursive rule application by `DeidProfile`. |
95
+
96
+ Profiles compose these actions rather than parsing a script.
97
+
98
+ ### Device-scoped private-tag preservation
99
+
100
+ By default the engine removes every private data element that has no explicit
101
+ tag rule. A device rule may name a small, reviewer-approved set of private
102
+ elements to retain verbatim through its `preserved_private_tags` field (a tuple
103
+ of `PrivateTagSpec`). When the catalog decision carries specs, the pipeline
104
+ attaches them to the `DeidProfile`. At apply time, `DeidProfile.apply(ds, params)`
105
+ resolves each spec's private-creator block (the block is runtime-assigned, not
106
+ fixed) and keeps both the resolved data elements and their creator element. The
107
+ engine removes all other private elements as usual. When preservation is active,
108
+ the engine also stamps the De-identification Method Code Sequence `(0012,0064)`
109
+ with the Retain Safe Private Option. It emits the sequence only for files that
110
+ actually preserve private tags.
111
+
112
+ See [Device Catalog](device-catalog.md#preserved-private-tags) and
113
+ [Profiles](profiles.md).
114
+
115
+ ## Profiles
116
+
117
+ The `default`, `lds`, `lds-no-dob`, and `pixels-only` profiles each map to a
118
+ factory function in {py:mod}`dicom_dre.profiles`. A profile name selects which
119
+ tags the engine keeps, removes, or shifts. [Profiles](profiles.md) describes the
120
+ behavior of each profile.
121
+
122
+ ## Regression validation
123
+
124
+ A regression fixture suite guards catalog and metadata behavior against known
125
+ inputs. Each fixture pins the expected filter decision, scrub decision, scrub
126
+ regions, and de-identified metadata for a representative instance, so the test
127
+ run catches a change that alters any of them. The fixtures live in
128
+ `tests/unit/test_catalog_regression_fixtures.py`.
129
+
130
+ See [Testing](../about/testing.md).
131
+
132
+ ## Extending
133
+
134
+ - To allow or deny a new device, or to blank a new pixel region, add a `device()`
135
+ entry to {py:mod}`dicom_dre.default_catalog`. See
136
+ [Extending the catalog](../guides/extending-the-catalog.md).
137
+ - To change a tag rule or add a profile, compose actions in
138
+ {py:mod}`dicom_dre.profiles`, deriving from an existing profile with
139
+ `dataclasses.replace`.
140
+
141
+ ## Module reference
142
+
143
+ | Module | Responsibility |
144
+ |--------|----------------|
145
+ | {py:mod}`dicom_dre.pipeline` | Orchestrator: composes the three stages into a `DeidentifyResult` |
146
+ | {py:mod}`dicom_dre.result` | `DeidentifyResult` and `Outcome` result types |
147
+ | {py:mod}`dicom_dre.profile` | `DeidProfile.apply()` metadata rewrite |
148
+ | {py:mod}`dicom_dre.actions` | Tag-action factories (`remove`, `hash_uid`, `jitter_date`, ...) |
149
+ | {py:mod}`dicom_dre.profiles` | `default`, `lds`, `lds-no-dob`, `pixels-only` factories and the profile builder |
150
+ | {py:mod}`dicom_dre.catalog` | Catalog engine: `DeviceCatalog`, `CatalogDecision`, `DicomTags` |
151
+ | {py:mod}`dicom_dre.default_catalog` | Device and exclusion rule data |
152
+ | {py:mod}`dicom_dre.pixel_blanker` | `blank_regions()` pixel scrub dispatch |
153
+ | {py:mod}`dicom_dre.jpeg_dct_scrubber` | DCT-domain JPEG blanking and C accelerator |