dicom-dre 1.0.0__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.
Files changed (557) hide show
  1. dicom_dre-1.0.0/.devcontainer/devcontainer-lock.json +24 -0
  2. dicom_dre-1.0.0/.devcontainer/devcontainer.json +53 -0
  3. dicom_dre-1.0.0/.devcontainer/post-create.sh +38 -0
  4. dicom_dre-1.0.0/.gitattributes +1 -0
  5. dicom_dre-1.0.0/.github/copilot-instructions.md +253 -0
  6. dicom_dre-1.0.0/.github/instructions/dicom-io.instructions.md +25 -0
  7. dicom_dre-1.0.0/.github/instructions/docs.instructions.md +84 -0
  8. dicom_dre-1.0.0/.github/instructions/tests.instructions.md +314 -0
  9. dicom_dre-1.0.0/.github/skills/pr-template/SKILL.md +345 -0
  10. dicom_dre-1.0.0/.github/workflows/deploy.yml +199 -0
  11. dicom_dre-1.0.0/.github/workflows/docs.yml +125 -0
  12. dicom_dre-1.0.0/.gitignore +70 -0
  13. dicom_dre-1.0.0/.pre-commit-config.yaml +73 -0
  14. dicom_dre-1.0.0/.vscode/extensions.json +10 -0
  15. dicom_dre-1.0.0/.vscode/settings.json +45 -0
  16. dicom_dre-1.0.0/CHANGELOG.md +3 -0
  17. dicom_dre-1.0.0/LICENSE +202 -0
  18. dicom_dre-1.0.0/NOTICE +57 -0
  19. dicom_dre-1.0.0/PKG-INFO +270 -0
  20. dicom_dre-1.0.0/README.md +245 -0
  21. dicom_dre-1.0.0/docs/Makefile +16 -0
  22. dicom_dre-1.0.0/docs/_static/.gitkeep +0 -0
  23. dicom_dre-1.0.0/docs/about/changelog.md +8 -0
  24. dicom_dre-1.0.0/docs/about/history.md +46 -0
  25. dicom_dre-1.0.0/docs/about/limitations.md +112 -0
  26. dicom_dre-1.0.0/docs/about/testing.md +62 -0
  27. dicom_dre-1.0.0/docs/concepts/architecture.md +154 -0
  28. dicom_dre-1.0.0/docs/concepts/device-catalog.md +337 -0
  29. dicom_dre-1.0.0/docs/concepts/jpeg-dct.md +108 -0
  30. dicom_dre-1.0.0/docs/concepts/profiles.md +181 -0
  31. dicom_dre-1.0.0/docs/concepts/reproducibility.md +44 -0
  32. dicom_dre-1.0.0/docs/concepts/text-redaction.md +88 -0
  33. dicom_dre-1.0.0/docs/conf.py +93 -0
  34. dicom_dre-1.0.0/docs/getting-started/installation.md +84 -0
  35. dicom_dre-1.0.0/docs/getting-started/quickstart.md +65 -0
  36. dicom_dre-1.0.0/docs/guides/cli.md +154 -0
  37. dicom_dre-1.0.0/docs/guides/extending-the-catalog.md +209 -0
  38. dicom_dre-1.0.0/docs/guides/local-validation.md +100 -0
  39. dicom_dre-1.0.0/docs/guides/redactor.md +195 -0
  40. dicom_dre-1.0.0/docs/index.md +110 -0
  41. dicom_dre-1.0.0/docs/make.bat +35 -0
  42. dicom_dre-1.0.0/docs/notes/iso-2022-specific-character-set.md +173 -0
  43. dicom_dre-1.0.0/docs/reference/api.md +10 -0
  44. dicom_dre-1.0.0/hatch_build.py +53 -0
  45. dicom_dre-1.0.0/justfile +91 -0
  46. dicom_dre-1.0.0/pyproject.toml +237 -0
  47. dicom_dre-1.0.0/src/dicom_dre/__init__.py +82 -0
  48. dicom_dre-1.0.0/src/dicom_dre/_jpeg_dct_accel_build.py +581 -0
  49. dicom_dre-1.0.0/src/dicom_dre/_version.py +24 -0
  50. dicom_dre-1.0.0/src/dicom_dre/actions.py +350 -0
  51. dicom_dre-1.0.0/src/dicom_dre/attributes.py +254 -0
  52. dicom_dre-1.0.0/src/dicom_dre/batch.py +443 -0
  53. dicom_dre-1.0.0/src/dicom_dre/catalog.py +875 -0
  54. dicom_dre-1.0.0/src/dicom_dre/cli.py +606 -0
  55. dicom_dre-1.0.0/src/dicom_dre/default_catalog.py +2002 -0
  56. dicom_dre-1.0.0/src/dicom_dre/jpeg_dct_scrubber.py +949 -0
  57. dicom_dre-1.0.0/src/dicom_dre/parameters.py +107 -0
  58. dicom_dre-1.0.0/src/dicom_dre/pipeline.py +196 -0
  59. dicom_dre-1.0.0/src/dicom_dre/pixel_blanker.py +324 -0
  60. dicom_dre-1.0.0/src/dicom_dre/profile.py +420 -0
  61. dicom_dre-1.0.0/src/dicom_dre/profiles/__init__.py +14 -0
  62. dicom_dre-1.0.0/src/dicom_dre/profiles/builder.py +61 -0
  63. dicom_dre-1.0.0/src/dicom_dre/profiles/config.py +35 -0
  64. dicom_dre-1.0.0/src/dicom_dre/profiles/default.py +530 -0
  65. dicom_dre-1.0.0/src/dicom_dre/profiles/lds.py +40 -0
  66. dicom_dre-1.0.0/src/dicom_dre/profiles/lds_no_dob.py +37 -0
  67. dicom_dre-1.0.0/src/dicom_dre/profiles/pixels_only.py +422 -0
  68. dicom_dre-1.0.0/src/dicom_dre/py.typed +0 -0
  69. dicom_dre-1.0.0/src/dicom_dre/pydicom_config.py +20 -0
  70. dicom_dre-1.0.0/src/dicom_dre/resources/__init__.py +1 -0
  71. dicom_dre-1.0.0/src/dicom_dre/resources/allow_lists/__init__.py +1 -0
  72. dicom_dre-1.0.0/src/dicom_dre/resources/allow_lists/default.csv +32343 -0
  73. dicom_dre-1.0.0/src/dicom_dre/result.py +153 -0
  74. dicom_dre-1.0.0/src/dicom_dre/salt.py +245 -0
  75. dicom_dre-1.0.0/src/dicom_dre/scrub_region.py +42 -0
  76. dicom_dre-1.0.0/src/dicom_dre/text_redactor.py +862 -0
  77. dicom_dre-1.0.0/src/dicom_dre/uid_utils.py +102 -0
  78. dicom_dre-1.0.0/tests/conftest.py +14 -0
  79. dicom_dre-1.0.0/tests/unit/__init__.py +1 -0
  80. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/cr/agfa/dxd40_1000c.json +24 -0
  81. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/ct/ge_medical_systems/discovery_ls.json +22 -0
  82. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/ct/ge_medical_systems/qx_i.json +40 -0
  83. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/ct/ge_medical_systems_ct/discovery_qx_i.json +23 -0
  84. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/ct/ge_medical_systems_mimvista/discovery_st.json +21 -0
  85. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/ct/mimvista_corp/unknown.json +24 -0
  86. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/ct/neurologica/ceretom.json +21 -0
  87. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/ct/neusoft/unknown.json +80 -0
  88. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/ct/philips/gemini.json +24 -0
  89. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/ct/siemens_mimvista/emotion_duo.json +22 -0
  90. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/dx/agfa/dx_g.json +24 -0
  91. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/carestream/classic_cr.json +24 -0
  92. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/fischer_imaging_corporation/senoscan_trueview.json +23 -0
  93. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/fujifilm_corporation/clearview_csm.json +24 -0
  94. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/fujifilm_corporation/fdr_1000aws.json +24 -0
  95. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/fujifilm_corporation/fdr_2000aws.json +24 -0
  96. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/ge_healthcare/senographe_pristina.json +23 -0
  97. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/ge_medical_systems/ads_1_0.json +25 -0
  98. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/ge_medical_systems/senograph_2000d_ads_17_2_3.json +25 -0
  99. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/ge_medical_systems/senographe_essential_ads_43_10_1.json +25 -0
  100. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/ge_medical_systems/senographe_essential_ads_56_21_3.json +44 -0
  101. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/ge_medical_systems/senographe_essential_dbt_reconstruction_box_01_10_3.json +42 -0
  102. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/ge_medical_systems/senographe_essential_dbt_reconstruction_box_01_10_4.json +99 -0
  103. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/hologic_inc/lorad_selenia.json +24 -0
  104. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/hologic_inc/selenia_dimensions.json +119 -0
  105. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/ims_s_r_l/giotto_image_3dl.json +23 -0
  106. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/kodak/classic_cr.json +24 -0
  107. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/kodak/elite_cr.json +24 -0
  108. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/lorad/hologic_selenia.json +24 -0
  109. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/lorad/lorad_selenia.json +24 -0
  110. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/lorad_a_hologic_company/dsm.json +22 -0
  111. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/mptronic_software/senographe_essential_ads_43_10_1.json +25 -0
  112. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/philips_digital_mammography_sweden_ab/l30.json +24 -0
  113. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/siemens/mammomat_inspiration.json +101 -0
  114. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/siemens/mammomat_novation_dr.json +23 -0
  115. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/siemens/mammomat_revelation.json +24 -0
  116. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mg/tmsc_fujitsu_ltd/mgu_1000d.json +23 -0
  117. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mr/ge_medical_systems/discovery_mr750.json +80 -0
  118. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mr/ge_medical_systems/signa_architect.json +24 -0
  119. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mr/ge_medical_systems/signa_hdxt.json +148 -0
  120. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mr/ge_medical_systems/signa_pet_mr.json +24 -0
  121. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mr/ge_medical_systems/signa_premier.json +84 -0
  122. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mr/hitachi_medical_corporation/oasis.json +44 -0
  123. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mr/merge_healthcare/cadstream_5_2_7_563.json +22 -0
  124. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mr/philips_medical_systems/ingenia.json +24 -0
  125. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mr/philips_medical_systems/intera.json +24 -0
  126. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mr/siemens/avanto.json +59 -0
  127. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mr/toshiba/titan.json +42 -0
  128. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/mr/toshiba_mec/mrt200pp3.json +42 -0
  129. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/nm/adac/atlantis.json +23 -0
  130. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/nm/segami/mirage.json +42 -0
  131. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/pt/ge_medical_systems/qx_i.json +22 -0
  132. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/pt/ge_medical_systems/signa_pet_mr.json +272 -0
  133. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/pt/ge_medical_systems_pet/discovery_qx_i.json +22 -0
  134. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/pt/gems/advance.json +21 -0
  135. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/pt/gems/unknown.json +23 -0
  136. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/pt/hmsa_mim_software/927.json +21 -0
  137. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/pt/philips_medical_systems/gemini_tf_base_c.json +22 -0
  138. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/pt/philips_medical_systems/guardian_body_c.json +22 -0
  139. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/pt/philips_medical_systems_mimvista/allegro_body_c.json +21 -0
  140. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/pt/siemens/1094.json +40 -0
  141. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/b_k_medical/1202.json +22 -0
  142. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/ge_healthcare/invenia.json +22 -0
  143. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/ge_healthcare/invenia_abus_2_0.json +23 -0
  144. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiq7.json +22 -0
  145. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiqbook.json +24 -0
  146. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiqe.json +22 -0
  147. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiqe9.json +111 -0
  148. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiqi.json +23 -0
  149. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiqp5.json +22 -0
  150. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiqp6.json +22 -0
  151. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiqs7.json +22 -0
  152. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiqs8.json +22 -0
  153. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/ge_healthcare/logiqworkse9.json +21 -0
  154. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/ge_medical_systems/logiq9.json +22 -0
  155. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/ge_vingmed_ultrasound/echopac_pc.json +40 -0
  156. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/ge_vingmed_ultrasound/vivid7.json +22 -0
  157. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/ge_vingmed_ultrasound/vivid_e9.json +22 -0
  158. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/philips_medical_systems/lumify.json +22 -0
  159. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/siemens/s2000.json +40 -0
  160. dicom_dre-1.0.0/tests/unit/catalog_fixtures/allow/us/siemens_medical_systems_ultrasound_division/antares.json +40 -0
  161. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/cannon/dr_2050c.json +24 -0
  162. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/canon/dr_2010c.json +24 -0
  163. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/canon/dr_2050c.json +24 -0
  164. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/canon/dr_c125.json +24 -0
  165. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/eastman_kodak_company/ls_75.json +25 -0
  166. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/efilm_medical/unknown.json +36 -0
  167. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/fujitsu/fi_6140z.json +24 -0
  168. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/g_e_medical_systems/prodigy.json +22 -0
  169. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/ge_healthcare_it_radiology/centricity_radiology_ra_600.json +308 -0
  170. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/general_electric/centricity_ra_600.json +61 -0
  171. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/hologic/discovery_a_s_n80111.json +22 -0
  172. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/hologic/discovery_a_s_n_85108.json +22 -0
  173. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/infinitt/infinitt_pacs.json +21 -0
  174. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/lexmark/unknown.json +84 -0
  175. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/lifeimagenomination/unknown.json +19 -0
  176. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/lifeimagenotify/unknown.json +19 -0
  177. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/lifeimagereport/unknown.json +20 -0
  178. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/lumisys/unknown.json +242 -0
  179. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/medweb/none.json +56 -0
  180. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/meridian_technique_limited/orthoview_isd.json +25 -0
  181. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/nai_tech_products_inc/the_dicom_box.json +41 -0
  182. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/neurostar_solutions_inc/unknown.json +21 -0
  183. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/north_american_imaging_inc/the_dicom_box.json +40 -0
  184. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/pacs/dr_c125.json +24 -0
  185. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/pacsgear/pacsscan.json +84 -0
  186. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/pacsgear/print2pacs.json +25 -0
  187. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/pacsgear/unknown.json +426 -0
  188. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/pacsgear_inc/the_dicom_box.json +22 -0
  189. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/pacsgear_rii2/unknown.json +24 -0
  190. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/pacslogic/unknown.json +19 -0
  191. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/pacsmatt/unknown.json +68 -0
  192. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/panasonic/kv_s2026c.json +24 -0
  193. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/philips/easydiagnost_super80_cp.json +22 -0
  194. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/philips_medical_systems/unknown.json +18 -0
  195. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/siemens_health_services/unknown.json +167 -0
  196. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/sorna_corporation/unknown.json +21 -0
  197. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/vidar/diagnosticpro_advantage.json +24 -0
  198. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/vidar/unknown.json +157 -0
  199. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/vidar/vidar_digitizer.json +149 -0
  200. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/cr/viztek/unknown.json +21 -0
  201. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/brightspeed.json +40 -0
  202. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/brightspeed_qx_i.json +22 -0
  203. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/brightspeed_s.json +21 -0
  204. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_600.json +38 -0
  205. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_610.json +22 -0
  206. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_690.json +22 -0
  207. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_710.json +40 -0
  208. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_ct.json +22 -0
  209. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_ct590_rt.json +22 -0
  210. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_ct750_hd.json +58 -0
  211. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_iq.json +22 -0
  212. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_mi.json +22 -0
  213. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_rx.json +21 -0
  214. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_st.json +55 -0
  215. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_ste.json +38 -0
  216. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/discovery_xr.json +21 -0
  217. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/hispeed_qx_i.json +22 -0
  218. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed.json +21 -0
  219. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed16.json +72 -0
  220. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed_plus.json +21 -0
  221. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed_pro_16.json +21 -0
  222. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed_pro_32.json +21 -0
  223. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed_qx_i.json +21 -0
  224. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed_rt.json +21 -0
  225. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed_rt16.json +39 -0
  226. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed_ultra.json +21 -0
  227. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed_vct.json +129 -0
  228. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/lightspeed_xtra.json +40 -0
  229. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/optima_560.json +22 -0
  230. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/optima_ct520_series.json +22 -0
  231. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/optima_ct540.json +22 -0
  232. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/optima_ct580.json +22 -0
  233. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/optima_ct660.json +58 -0
  234. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/revolution_ct.json +23 -0
  235. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/revolution_evo.json +22 -0
  236. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/revolution_gsi.json +22 -0
  237. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/ge_medical_systems/revolution_hd.json +22 -0
  238. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/medrad_inc/certegra.json +23 -0
  239. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/philips/brilliance_64.json +24 -0
  240. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/philips/gemini_tf_big_bore.json +24 -0
  241. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/philips/precedence_16p.json +44 -0
  242. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/siemens/sensation_64.json +22 -0
  243. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ct/toshiba/aquilion.json +163 -0
  244. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/dx/bioptics_inc/pathvision.json +25 -0
  245. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/dx/efilm_medical/unknown.json +68 -0
  246. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/dx/faxitron_x_ray_llc/dx_50.json +66 -0
  247. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/dx/ge_healthcare/lunar_prodigy.json +22 -0
  248. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/dx/ge_healthcare/lunar_prodigy_advance.json +23 -0
  249. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/dx/hologic/discovery_a_s_n87685.json +22 -0
  250. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/dx/hologic/discovery_c_s_n81330.json +22 -0
  251. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/dx/hologic/discovery_c_s_n84951.json +23 -0
  252. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/dx/hologic/discovery_sl_s_n82250.json +22 -0
  253. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/dx/hologic/horizon_w_s_n_200112.json +23 -0
  254. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/dx/lexmark/unknown.json +124 -0
  255. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/dx/lifeimagenomination/unknown.json +19 -0
  256. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/dx/lifeimagenotify/unknown.json +19 -0
  257. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/dx/lifeimagereport/unknown.json +19 -0
  258. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/dx/pacsgear/unknown.json +1726 -0
  259. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/dx/pacslogic/unknown.json +19 -0
  260. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/dx/pacsmatt/unknown.json +21 -0
  261. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/dx/philips_medical_systems/unknown.json +18 -0
  262. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ko/ge_healthcare_it_radiology/centricity_radiology_ra_1000.json +18 -0
  263. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/bioptics_inc/biovision.json +46 -0
  264. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/bioptics_inc/corevision.json +25 -0
  265. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/bioptics_inc/pixarray100.json +25 -0
  266. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/cadx/cad1.json +18 -0
  267. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/cadx/mmhwdcad.json +18 -0
  268. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/cadx/ohmac2cad.json +18 -0
  269. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/canon/2050c.json +24 -0
  270. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/canon/dr_2010c.json +25 -0
  271. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/confirma_inc/cadstream_4_1_3_985.json +24 -0
  272. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/connect_imaging/unknown.json +22 -0
  273. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/di/document_scanner.json +23 -0
  274. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/eastman_kodak_company/carestream_digitized_priors_input_station_1_1_5_38679_vidar.json +22 -0
  275. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/faxitron_bioptics_llc/biovision.json +25 -0
  276. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/faxitron_x_ray_corporation/dx_50.json +24 -0
  277. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/faxitron_x_ray_llc/dx_50.json +24 -0
  278. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/ge_healthcare/lunar_prodigy_advance.json +22 -0
  279. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/ge_healthcare_it_digital_hardcopy/centricity_digital_hardcopy.json +23 -0
  280. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/ge_healthcare_it_radiology/centricity_radiology_ra_600.json +24 -0
  281. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/hologic/discovery_a_s_n83038.json +23 -0
  282. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/hologic_inc/securview.json +24 -0
  283. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/hologic_inc/trident.json +24 -0
  284. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/icad_inc/7_2_h.json +25 -0
  285. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/icad_inc/icad_powerlook_amp_8_0_1.json +25 -0
  286. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/icad_inc/unknown.json +23 -0
  287. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/kubtec/xpert.json +21 -0
  288. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/kubtec/xpert_20.json +21 -0
  289. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/lexmark/unknown.json +24 -0
  290. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/matakina_technology/unknown.json +22 -0
  291. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/matakina_technology/volpara_server.json +24 -0
  292. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/primordial/unknown.json +19 -0
  293. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/r2_technology_inc/cenova.json +24 -0
  294. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/r2_technology_inc/digitalnow_enhanced.json +23 -0
  295. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/r2_technology_inc/digitalnow_tm.json +23 -0
  296. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/ramsoft_inc/castle_powerreader.json +25 -0
  297. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/siemens_healthcare/syngo_via_va30a.json +23 -0
  298. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/three_palm_software/workstationone.json +23 -0
  299. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/vidar/cad_pro_advantage.json +27 -0
  300. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/vidar/cadpro.json +26 -0
  301. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/vidar/diagnosticpro_advantage.json +25 -0
  302. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/vidar/vidar_digitizer.json +24 -0
  303. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/visage_imaging/senograph_ds_ads_43_10_1.json +25 -0
  304. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/visage_imaging/unknown.json +24 -0
  305. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mg/volpara_limited/unknown.json +21 -0
  306. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/agfa/clinapps.json +23 -0
  307. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/aze/unknown.json +23 -0
  308. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/bammergroup_stanford/rapid_2_0.json +40 -0
  309. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/barco/voxar_3d.json +22 -0
  310. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/cannon/dr_2050c.json +24 -0
  311. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/canon/2050c.json +25 -0
  312. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/circlecvi/unknown.json +40 -0
  313. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/confirma_inc/cadstream_4_1_2_613.json +44 -0
  314. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/dcad/unknown.json +36 -0
  315. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/desacc_inc/health_data_explorer.json +23 -0
  316. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/fujitsu/unknown.json +24 -0
  317. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/ge/signa_1_5t.json +23 -0
  318. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/ge_healthcare_it_radiology/centricity_radiology_ra_600.json +61 -0
  319. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/ge_medical_systems/signa_hdxt.json +59 -0
  320. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/icad/unknown.json +36 -0
  321. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/image_information_systems/unknown.json +20 -0
  322. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/imagenow/unknown.json +20 -0
  323. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/lexmark/unknown.json +24 -0
  324. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/lifeimagenomination/unknown.json +19 -0
  325. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/lifeimagenotify/unknown.json +19 -0
  326. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/lifeimagereport/unknown.json +19 -0
  327. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/lumisys/unknown.json +21 -0
  328. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/medweb/none.json +38 -0
  329. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/merge_healthcare/cadstream_5_2_7_563.json +22 -0
  330. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/merge_healthcare/cadstream_5_2_9_711.json +22 -0
  331. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/merge_healthcare_inc/unknown.json +21 -0
  332. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/neurostar_solutions_inc/unknown.json +38 -0
  333. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/pacsgear/pacsscan.json +44 -0
  334. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/pacsgear/unknown.json +24 -0
  335. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/pacsgear_riipscan/unknown.json +24 -0
  336. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/pacsmatt/unknown.json +55 -0
  337. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/pacsscan/dr_2080c.json +25 -0
  338. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/pacsscan_4_0/unknown.json +24 -0
  339. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/panasonic/kv_s2028c.json +24 -0
  340. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/philips/unknown.json +18 -0
  341. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/philips_medical_systems/unknown.json +18 -0
  342. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/primordial/unknown.json +34 -0
  343. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/radiology_research/hfh.json +41 -0
  344. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/siemens_healthcare/syngo_via_va20a.json +22 -0
  345. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/siemens_healthcare/syngo_via_vb10a.json +38 -0
  346. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/sorna_corporation/unknown.json +22 -0
  347. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/statrad_llc/push2pacs.json +21 -0
  348. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/toshiba_mec/mrt200pp3.json +42 -0
  349. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/toshiba_mec/unknown.json +21 -0
  350. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/urlj/unknown.json +24 -0
  351. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/vassol/unknown.json +23 -0
  352. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/vidar/unknown.json +21 -0
  353. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/vital_images_inc/vitrea_2.json +21 -0
  354. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/mr/viztek/unknown.json +19 -0
  355. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/nm/adac/unknown.json +22 -0
  356. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/nm/ge_medical_systems/discovery_st.json +21 -0
  357. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/nm/segami/mirage.json +59 -0
  358. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ot/ge_medical_systems/qx_i.json +24 -0
  359. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/ot/philips_medical_systems/alluraxper.json +23 -0
  360. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/pct/ge_medical_systems/discovery_ste.json +21 -0
  361. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/pt/ge_medical_systems/discovery_690.json +22 -0
  362. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/pt/ge_medical_systems/discovery_st.json +21 -0
  363. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/pt/ge_medical_systems/discovery_ste.json +21 -0
  364. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/pt/ge_medical_systems/qx_i.json +24 -0
  365. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/pt/philips_medical_systems/allegro_body_c.json +23 -0
  366. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/sc/sante_dicom/unknown.json +24 -0
  367. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/sr/philips_medical_systems/ie33.json +23 -0
  368. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/sr/siemens/biograph128.json +18 -0
  369. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/sr/siemens/sensation_16.json +19 -0
  370. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/sr/siemens/sensation_64.json +19 -0
  371. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/sr/siemens/somatom_definition.json +19 -0
  372. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/sr/siemens/somatom_definition_as.json +32 -0
  373. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/sr/siemens/somatom_definition_edge.json +18 -0
  374. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/sr/siemens/somatom_definition_flash.json +18 -0
  375. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/sr/siemens/somatom_force.json +18 -0
  376. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/sr/sonosite_inc/turbo.json +21 -0
  377. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/acuson/cypress.json +21 -0
  378. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/acuson/sequoia.json +80 -0
  379. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/aloka_co_ltd/ssd_5500.json +22 -0
  380. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/atl/hdi_5000.json +79 -0
  381. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/g_e_medical_systems/logiq_700.json +23 -0
  382. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/ge_healthcare/logiq_s6.json +23 -0
  383. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/ge_healthcare/logiqe.json +61 -0
  384. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/ge_healthcare/logiqe9.json +523 -0
  385. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/ge_healthcare/logiqi.json +24 -0
  386. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/ge_healthcare/logiqp5.json +23 -0
  387. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/ge_healthcare/logiqp6.json +23 -0
  388. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/ge_healthcare/logiqp9.json +24 -0
  389. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/ge_healthcare/logiqs7.json +23 -0
  390. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/ge_healthcare/logiqs8.json +252 -0
  391. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/ge_healthcare/venue_40.json +21 -0
  392. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/ge_healthcare/viewpoint.json +85 -0
  393. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/ge_healthcare_it_radiology/centricity_radiology_ra_600.json +42 -0
  394. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/ge_healthcare_viewpoint/viewpoint.json +49 -0
  395. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/ge_medical_systems/logiq5.json +24 -0
  396. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/ge_medical_systems/logiq9.json +177 -0
  397. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/ge_medical_systems/logiqworks.json +65 -0
  398. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/ge_vingmed_ultrasound/vivid7.json +43 -0
  399. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/gems_ultrasound/vivid_i.json +24 -0
  400. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/gems_ultrasound/vivid_s5.json +26 -0
  401. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/gems_ultrasound/vivid_s6.json +39 -0
  402. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/medison/accuvix.json +20 -0
  403. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/medison/accuvix_xg.json +21 -0
  404. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/philips_medical_systems/affiniti_50g.json +23 -0
  405. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/philips_medical_systems/epiq_5g.json +22 -0
  406. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/philips_medical_systems/epiq_7g.json +22 -0
  407. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/philips_medical_systems/hd15.json +21 -0
  408. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/philips_medical_systems/iu22.json +43 -0
  409. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/samsung_medison_co_ltd/rs80a.json +21 -0
  410. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/samsung_medison_co_ltd/sonoace_r7.json +38 -0
  411. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/siemens/acuson_p500.json +21 -0
  412. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/siemens/acuson_sc2000.json +22 -0
  413. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/siemens/acuson_x300.json +38 -0
  414. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/siemens/acuson_x700.json +21 -0
  415. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/siemens/s2000.json +55 -0
  416. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/siemens_medical_systems_ultrasound_division/antares.json +22 -0
  417. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/siemens_ultrasound/g50_s.json +21 -0
  418. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/sonosite_inc/micromaxx.json +21 -0
  419. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/sonosite_inc/nano.json +21 -0
  420. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/sonosite_inc/x_porte.json +21 -0
  421. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/supersonic_imagine_sa/aixplorer.json +24 -0
  422. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/toshiba_mec/ssa_580a.json +22 -0
  423. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/toshiba_mec_us/tus_a500.json +67 -0
  424. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/u_systems/somoviewer.json +24 -0
  425. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/unknown/unknown.json +38 -0
  426. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/zonare/z_one.json +24 -0
  427. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/us/zonare/zs3.json +26 -0
  428. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/xa/philips/allura_clarity.json +22 -0
  429. dicom_dre-1.0.0/tests/unit/catalog_fixtures/filter/xa/philips_medical_systems/alluraxper.json +23 -0
  430. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/cr/canon_inc/axiom_multix_m.json +61 -0
  431. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/cr/canon_inc/cxdi.json +44 -0
  432. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/cr/konica/0402.json +49 -0
  433. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/cr/medicatechusa/krystalrad_660vsi.json +303 -0
  434. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/cr/shimadzu/cxdi_control_software_ne.json +24 -0
  435. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/ct/siemens/s1000.json +25 -0
  436. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/dx/canon_inc/cxdi.json +26 -0
  437. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/dx/cuattro_llc/clouddr_medical.json +25 -0
  438. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/dx/medicatechusa/krystalrad_660_vxi.json +257 -0
  439. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/dx/medlink_imaging/altodr.json +27 -0
  440. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/nm/ge_medical_systems_nuclear/unknown.json +50 -0
  441. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/ot/ge_medical_systems/discovery_690.json +28 -0
  442. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/ot/ge_medical_systems/discovery_mi.json +25 -0
  443. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/ot/ge_medical_systems/discovery_st.json +52 -0
  444. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/ot/ge_medical_systems/discovery_ste.json +72 -0
  445. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/ot/ge_medical_systems/signa_pet_mr.json +46 -0
  446. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/pt/ge_medical_systems/discovery_600.json +28 -0
  447. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/pt/ge_medical_systems/discovery_mi.json +25 -0
  448. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/pt/ge_medical_systems/signa_pet_mr.json +29 -0
  449. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/pt/philips_medical_systems/guardian_body_c.json +92 -0
  450. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/acuson/cypress.json +25 -0
  451. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/acuson/sequoia.json +89 -0
  452. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/aloka_co_ltd/ssd_5500.json +25 -0
  453. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/aloka_co_ltd/ssd_alpha10.json +44 -0
  454. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/aloka_co_ltd/ssd_alpha5.json +24 -0
  455. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/aloka_co_ltd/ssd_alpha6.json +24 -0
  456. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/aloka_co_ltd/ssd_alpha7.json +24 -0
  457. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/b_k_medical/1202.json +26 -0
  458. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/b_k_medical/2202.json +46 -0
  459. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/bk_medical/2300.json +46 -0
  460. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/g_e_medical_systems/logiq_700.json +42 -0
  461. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiq7.json +44 -0
  462. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiq_s6.json +24 -0
  463. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiqe.json +64 -0
  464. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiqe9.json +304 -0
  465. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiqi.json +25 -0
  466. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiqp5.json +24 -0
  467. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiqp6.json +24 -0
  468. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiqp9.json +25 -0
  469. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiqs7.json +63 -0
  470. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/logiqs8.json +204 -0
  471. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/vivide.json +24 -0
  472. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/voluson_p.json +25 -0
  473. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_healthcare/voluson_s.json +25 -0
  474. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_healthcare_austria_gmbh_co_og/v830.json +131 -0
  475. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_healthcare_austria_gmbh_co_og/voluson_e8.json +25 -0
  476. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_medical_systems/logiq5.json +25 -0
  477. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_medical_systems/logiq9.json +44 -0
  478. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_medical_systems_kretztechnik_gmbh_co_ohg/v830.json +104 -0
  479. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_ultrasound/vivid_3.json +24 -0
  480. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_vingmed_ultrasound/vivid7.json +47 -0
  481. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_vingmed_ultrasound/vivid_e9.json +67 -0
  482. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/ge_vingmed_ultrasound/vivid_e95.json +25 -0
  483. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/gems_ultrasound/logiq_400.json +21 -0
  484. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/gems_ultrasound/vivid_i.json +45 -0
  485. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/gems_ultrasound/vivid_q.json +25 -0
  486. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/gems_ultrasound/vivid_s5.json +25 -0
  487. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/gems_ultrasound/vivid_s6.json +25 -0
  488. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/hitachi_aloka_medical_ltd/noblus.json +25 -0
  489. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/hitachi_aloka_medical_ltd/prosound_f75.json +64 -0
  490. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/medison/accuvix.json +23 -0
  491. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/medison/accuvix_v10.json +24 -0
  492. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/medison/accuvix_v20.json +24 -0
  493. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/medison/accuvix_xg.json +24 -0
  494. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/medison/sonoace_x8.json +24 -0
  495. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/affiniti_50g.json +26 -0
  496. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/affiniti_70g.json +25 -0
  497. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/clearvue_550.json +24 -0
  498. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/cx30.json +24 -0
  499. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/cx50.json +24 -0
  500. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/epiq_5w.json +25 -0
  501. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/epiq_7g.json +67 -0
  502. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/hd15.json +24 -0
  503. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/ie33.json +46 -0
  504. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/iu22.json +88 -0
  505. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/philips_medical_systems/sparq.json +24 -0
  506. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/samsung_medison_co_ltd/h60.json +24 -0
  507. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/samsung_medison_co_ltd/rs80a.json +44 -0
  508. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/samsung_medison_co_ltd/sonoace_r7.json +24 -0
  509. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/siemens/acuson_freestyle.json +46 -0
  510. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/siemens/acuson_p500.json +25 -0
  511. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/siemens/acuson_sc2000.json +25 -0
  512. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/siemens/acuson_x300.json +46 -0
  513. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/siemens/acuson_x700.json +25 -0
  514. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/siemens/s1000.json +25 -0
  515. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/siemens/s2000.json +25 -0
  516. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/siemens/s3000.json +25 -0
  517. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/siemens_medical_systems_ultrasound_division/antares.json +67 -0
  518. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/siemens_ultrasound/elegra.json +25 -0
  519. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/siemens_ultrasound/g40.json +25 -0
  520. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/siemens_ultrasound/g50_s.json +25 -0
  521. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/siemens_ultrasound/g60_s.json +25 -0
  522. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/siemens_ultrasound/x150.json +25 -0
  523. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/sonosite/sonosite_titan.json +23 -0
  524. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/sonosite_inc/micromaxx.json +24 -0
  525. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/sonosite_inc/nano.json +44 -0
  526. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/sonosite_inc/turbo.json +24 -0
  527. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/sonosite_inc/x_porte.json +24 -0
  528. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/supersonic_imagine_sa/aixplorer.json +291 -0
  529. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/toshiba_mec/aplioxg.json +46 -0
  530. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/toshiba_mec/viamo.json +24 -0
  531. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/toshiba_mec/xarioxg.json +45 -0
  532. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/toshiba_mec_us/ssh_880cv.json +25 -0
  533. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/toshiba_mec_us/tus_a300.json +27 -0
  534. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/toshiba_mec_us/tus_a400.json +27 -0
  535. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/toshiba_mec_us/tus_a500.json +28 -0
  536. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/toshiba_mec_us/tus_ai700.json +28 -0
  537. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/toshiba_mec_us/tus_x200.json +27 -0
  538. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/zonare/z_one.json +45 -0
  539. dicom_dre-1.0.0/tests/unit/catalog_fixtures/scrub/us/zonare/zs3.json +46 -0
  540. dicom_dre-1.0.0/tests/unit/conftest.py +128 -0
  541. dicom_dre-1.0.0/tests/unit/test_attributes.py +167 -0
  542. dicom_dre-1.0.0/tests/unit/test_batch.py +486 -0
  543. dicom_dre-1.0.0/tests/unit/test_catalog.py +577 -0
  544. dicom_dre-1.0.0/tests/unit/test_catalog_regression_fixtures.py +113 -0
  545. dicom_dre-1.0.0/tests/unit/test_cli.py +620 -0
  546. dicom_dre-1.0.0/tests/unit/test_default_catalog.py +570 -0
  547. dicom_dre-1.0.0/tests/unit/test_jpeg_dct_scrubber.py +307 -0
  548. dicom_dre-1.0.0/tests/unit/test_pipeline_attributes.py +121 -0
  549. dicom_dre-1.0.0/tests/unit/test_pipeline_preservation.py +263 -0
  550. dicom_dre-1.0.0/tests/unit/test_pipeline_redaction.py +143 -0
  551. dicom_dre-1.0.0/tests/unit/test_pixel_blanker.py +672 -0
  552. dicom_dre-1.0.0/tests/unit/test_profile.py +658 -0
  553. dicom_dre-1.0.0/tests/unit/test_public_api.py +94 -0
  554. dicom_dre-1.0.0/tests/unit/test_salt.py +188 -0
  555. dicom_dre-1.0.0/tests/unit/test_text_redactor.py +874 -0
  556. dicom_dre-1.0.0/tests/unit/test_uid_utils.py +87 -0
  557. dicom_dre-1.0.0/uv.lock +1410 -0
@@ -0,0 +1,24 @@
1
+ {
2
+ "features": {
3
+ "ghcr.io/devcontainers-extra/features/apt-packages:1": {
4
+ "version": "1.0.6",
5
+ "resolved": "ghcr.io/devcontainers-extra/features/apt-packages@sha256:55c54412112da81b9381e470cdbbe55278564950d1ff536ce925b1e8e096babd",
6
+ "integrity": "sha256:55c54412112da81b9381e470cdbbe55278564950d1ff536ce925b1e8e096babd"
7
+ },
8
+ "ghcr.io/devcontainers/features/common-utils:2": {
9
+ "version": "2.5.9",
10
+ "resolved": "ghcr.io/devcontainers/features/common-utils@sha256:cb0c4d3c276f157eed17935747e364178d75fee17f55c4e129966f64633deb3a",
11
+ "integrity": "sha256:cb0c4d3c276f157eed17935747e364178d75fee17f55c4e129966f64633deb3a"
12
+ },
13
+ "ghcr.io/devcontainers/features/github-cli:1": {
14
+ "version": "1.1.0",
15
+ "resolved": "ghcr.io/devcontainers/features/github-cli@sha256:d22f50b70ed75339b4eed1ba9ecde3a1791f90e88d37936517e3bace0bbad671",
16
+ "integrity": "sha256:d22f50b70ed75339b4eed1ba9ecde3a1791f90e88d37936517e3bace0bbad671"
17
+ },
18
+ "ghcr.io/jsburckhardt/devcontainer-features/uv:1": {
19
+ "version": "1.0.0",
20
+ "resolved": "ghcr.io/jsburckhardt/devcontainer-features/uv@sha256:542a0bc2203205b3c696de650ba862f280b20af3543493cc232edd9ac35791f7",
21
+ "integrity": "sha256:542a0bc2203205b3c696de650ba862f280b20af3543493cc232edd9ac35791f7"
22
+ }
23
+ }
24
+ }
@@ -0,0 +1,53 @@
1
+ // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
2
+ // https://containers.dev/
3
+ {
4
+ "name": "dicom-dre",
5
+ "image": "python:3.12-slim-trixie",
6
+ "remoteUser": "${localEnv:USER}${localEnv:USERNAME}",
7
+ "containerEnv": {
8
+ "UV_COMPILE_BYTECODE": "1",
9
+ "UV_LINK_MODE": "copy",
10
+ "UV_PYTHON_DOWNLOADS": "never",
11
+ "UV_TOOL_BIN_DIR": "/usr/local/bin"
12
+ },
13
+ "customizations": {
14
+ "vscode": {
15
+ "settings": {
16
+ "python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
17
+ "extensions.verifySignature": false, // https://github.com/microsoft/vscode-remote-release/issues/9628
18
+ "remote.autoForwardPorts": false,
19
+ "extensions.ignoreRecommendations": true,
20
+ "git.autofetch": true,
21
+ "git.autofetchPeriod": 180
22
+ },
23
+ "extensions": [
24
+ "bierner.markdown-mermaid",
25
+ "charliermarsh.ruff",
26
+ "GitHub.copilot",
27
+ "GitHub.vscode-pull-request-github",
28
+ "ms-python.python",
29
+ "meta.pyrefly",
30
+ "redhat.vscode-yaml"
31
+ ]
32
+ }
33
+ },
34
+ "features": {
35
+ "ghcr.io/devcontainers/features/common-utils:2": {
36
+ "username": "${localEnv:USER}${localEnv:USERNAME}",
37
+ "userUid": "1000",
38
+ "userGid": "1000",
39
+ "upgradePackages": "false",
40
+ "configureZshAsDefaultShell": "false"
41
+ },
42
+ "ghcr.io/devcontainers-extra/features/apt-packages:1": {
43
+ "packages": "build-essential,ca-certificates,cmake,curl,dcmtk,file,git,just,ninja-build,patchelf,pkg-config,swig,unzip,wget,zip,bubblewrap,socat"
44
+ },
45
+ "ghcr.io/jsburckhardt/devcontainer-features/uv:1": {},
46
+ "ghcr.io/devcontainers/features/github-cli:1": {}
47
+ },
48
+ "mounts": [
49
+ "source=dicom-dre-home,target=/home/${localEnv:USER}${localEnv:USERNAME},type=volume"
50
+ ],
51
+ "postCreateCommand": "bash ./.devcontainer/post-create.sh",
52
+ "waitFor": "postCreateCommand"
53
+ }
@@ -0,0 +1,38 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+
4
+ WORKSPACE_DIR="$(pwd)"
5
+
6
+ BLUE='\033[0;34m'
7
+ NC='\033[0m'
8
+
9
+ # Git doesn't like the UID changes from bind-mounting the source into the container.
10
+ if ! git config --global --get-all safe.directory | grep -qx "${WORKSPACE_DIR}"; then
11
+ git config --global --add safe.directory "${WORKSPACE_DIR}"
12
+ fi
13
+
14
+ # Convenience aliases.
15
+ if ! grep -q "#dicom-dre#" "${HOME}/.bashrc" 2>/dev/null; then
16
+ {
17
+ echo '#dicom-dre#'
18
+ echo 'alias ll="ls -alF"'
19
+ echo 'alias la="ls -A"'
20
+ echo 'alias l="ls -CF"'
21
+ } >> "${HOME}/.bashrc"
22
+ fi
23
+
24
+ # Sync dependencies and build the CFFI JPEG-DCT extension (and python-gdcm from source).
25
+ echo -e "${BLUE}Running uv sync...${NC}"
26
+ uv sync
27
+
28
+ # Compile the CFFI JPEG-DCT acceleration extension into src/dicom_dre/.
29
+ # Without this the engine silently falls back to the ~300x-slower pure-Python
30
+ # entropy codec. Building from src/ so the module 'dicom_dre._jpeg_dct_accel'
31
+ # lands at src/dicom_dre/_jpeg_dct_accel.*.so.
32
+ echo -e "${BLUE}Compiling JPEG-DCT acceleration extension...${NC}"
33
+ (cd src && uv run python -m dicom_dre._jpeg_dct_accel_build)
34
+ rm -f src/dicom_dre/_jpeg_dct_accel.c src/dicom_dre/_jpeg_dct_accel.o
35
+
36
+ # Install git hooks so PHI-protection checks run on commit, push, and commit-msg.
37
+ echo -e "${BLUE}Installing git hooks...${NC}"
38
+ uv run pre-commit install --hook-type pre-commit --hook-type pre-push --hook-type commit-msg
@@ -0,0 +1 @@
1
+ * text=auto eol=lf
@@ -0,0 +1,253 @@
1
+ COPILOT INSTRUCTIONS
2
+
3
+ This document defines how the AI pair programmer should reason, communicate, and write code.
4
+ It sets style rules, workflow expectations, and interaction guidelines to ensure consistent,
5
+ high-quality, and safe contributions.
6
+
7
+ CORE DIRECTIVE
8
+ You are an expert AI pair programmer.
9
+ Your primary goal is to make precise, high-quality, and safe code modifications.
10
+ Follow every rule in this document meticulously.
11
+
12
+ INTERACTION & REASONING GUIDELINES
13
+
14
+ - Concise communication:
15
+ Use one clear sentence before each tool call to explain what you are doing.
16
+
17
+ - Continuity:
18
+ If the user says "resume" or "continue", pick up exactly where your last step ended.
19
+
20
+ - Thorough thinking:
21
+ Think rigorously and document reasoning internally.
22
+ Share only concise results externally.
23
+
24
+ - Communication style:
25
+ Use factual, descriptive language in the style of internal engineering specifications.
26
+ Never use marketing terms (efficient, compelling, comprehensively, effectively, successfully).
27
+ Never use promotional adjectives (comprehensive, robust, powerful, optimized, seamless, flexible, scalable, intuitive, advanced, cutting-edge).
28
+ Never use enthusiastic phrases (Perfect! Excellent! Great! Awesome! I have successfully...).
29
+ Avoid the informal term "knobs" for configurable values; use "settings", "options", or "parameters".
30
+ Avoid evaluative or subjective judgments.
31
+ Prefer verbs and concrete nouns over adjectives.
32
+ Omit unverifiable or unquantifiable claims.
33
+ Provide factual summaries that describe actions and results without celebration.
34
+ When uncertain if a word is promotional, omit it.
35
+ Do not use emphatic markers (CRITICAL, IMPORTANT, WARNING) in code comments or documentation unless explicitly requested by the user.
36
+
37
+ - File creation:
38
+ Do not create summary documentation unless explicitly requested.
39
+ Do not create test files without asking first.
40
+ Only create files directly required to fulfill the user's request.
41
+
42
+ - Error checking:
43
+ After making any code changes, automatically check for linter errors using get_errors.
44
+ Fix all errors before reporting completion.
45
+ Never wait for the user to point out linter errors.
46
+
47
+ CODING STANDARDS
48
+ General Rule:
49
+
50
+ - Implement the smallest possible change that satisfies the request.
51
+ - Follow the Google Python coding standards except when they conflict with this document.
52
+ - Do not create trailing whitespace, and immediately remove trailing whitespace when found.
53
+ - Avoid spaces in empty lines.
54
+ - Avoid the use of emojis in log messages or documentation.
55
+
56
+ Naming Conventions:
57
+
58
+ - Modules: lowercase_with_underscores
59
+ - Classes: CapWords
60
+ - Functions & variables: lowercase_with_underscores
61
+ - Constants: UPPERCASE_WITH_UNDERSCORES
62
+ - Private members: prefix with \_
63
+
64
+ Strings:
65
+
66
+ - Prefer double quotes ("...")
67
+ - Use triple quotes ("""...""") for docstrings
68
+
69
+ Error Handling:
70
+
71
+ - CRITICAL: Never use assert statements for runtime validation
72
+ - Assert statements are removed in optimized byte code compilation
73
+ - Use explicit ValueError, TypeError, or other appropriate exceptions instead
74
+ - Provide clear, descriptive error messages
75
+
76
+ Example:
77
+ # Wrong
78
+ assert value is not None
79
+ assert len(items) > 0
80
+
81
+ # Correct
82
+ if value is None:
83
+ raise ValueError("value must not be None")
84
+ if len(items) == 0:
85
+ raise ValueError("items list cannot be empty")
86
+
87
+ IMPORTS
88
+
89
+ Rules:
90
+
91
+ - All imports must be at the top of the file
92
+ - Only use inline imports when necessary for performance or to avoid circular import issues
93
+ - One import per line
94
+ - Order: standard library -> third-party -> local
95
+ - Always use absolute imports, inside **init**.py is ok
96
+ - Avoid importing Prefect functions and modules in a file that does not contain @task and @flow functions.
97
+
98
+ PACKAGE RESOURCES
99
+
100
+ - Use importlib.resources, never Path(__file__).parent
101
+ - Pattern: import importlib.resources as pkg_resources, then Path(str(pkg_resources.files(resource_module)))
102
+
103
+ DOCSTRINGS & COMMENTS
104
+
105
+ - Follow PEP 257
106
+ - First line: short summary sentence
107
+ - Document all public classes, methods, and functions
108
+ - Never write obvious comments that simply restate what the code does
109
+ - Omit self-evident or trivially true statements. Do not document facts the
110
+ reader can infer from the signature, types, or an obvious guarantee (for
111
+ example "this module has no dependencies so it avoids an import cycle",
112
+ "returns a value", "this is a helper"). Record a fact only when it is
113
+ non-obvious and affects correctness, safety, performance, or correct use.
114
+ - State what the code does, not what it does not do. Avoid negative-space
115
+ statements that contrast with an alternative or a prior design (for example
116
+ "not passed to X", "rather than closing over Y"); these are usually
117
+ refactoring artifacts. Keep a negative statement only when it conveys
118
+ critical information the reader cannot infer, such as a safety constraint.
119
+ - Write dry, precise prose using established computer science and engineering
120
+ terms. Name the actual mechanism, not an analogy for it.
121
+ - Do not use metaphor or anthropomorphism. Data does not "travel", "live",
122
+ "ship", "flow", or get "baked in"; objects do not "carry", "own", or "want".
123
+ Use precise verbs instead: "is stored in", "resides in", "is fixed at
124
+ construction", "is serialized to", "is passed to", "occurs", "is scoped to".
125
+ - Prohibited terms and replacements: "baked" -> "fixed"/"set at construction";
126
+ "knobs" -> "settings"/"options"/"parameters"; "lives" -> "is stored"/
127
+ "resides"/"occurs"; "travel"/"ship" -> "is serialized"/"is sent"/"is passed";
128
+ "carries" -> "holds"/"contains".
129
+
130
+ Example:
131
+ def add(x: int, y: int) -> int:
132
+ """Return the sum of x and y."""
133
+ return x + y
134
+
135
+ TYPE ANNOTATIONS
136
+
137
+ - Use PEP 484 type hints
138
+ - Forward-declare types with TYPE_CHECKING if needed
139
+ - Use quoted annotations ("State") when types are not available at runtime
140
+
141
+ DATACLASSES
142
+
143
+ - Fields with default values MUST come after fields without defaults
144
+ - Order fields: required fields first, then optional/default fields
145
+ - Use field(default=...) or field(default_factory=...) for fields with defaults
146
+ - Never mix required and default fields in arbitrary order
147
+
148
+ Example:
149
+ @dataclass
150
+ class MyClass:
151
+ # Required fields first
152
+ name: str
153
+ age: int
154
+ # Default fields last
155
+ status: str = "active"
156
+ tags: List[str] = field(default_factory=list)
157
+
158
+ TESTING
159
+
160
+ - Run tests using `uv run pytest` (NEVER `python -m pytest`)
161
+ - Place tests in tests/ using pytest
162
+ - Mock external services in unit tests especially if they use network calls
163
+ - Prefer small, isolated tests over broad coverage in a single test
164
+ - Avoid disabling, skipping, or commenting out failing unit tests. If a unit test fails, fix the root cause of the exception.
165
+ - Avoid removing assertions, adding empty try/catch blocks, or making tests trivial in order to make tests pass.
166
+ - Avoid introducing conditional logic that skips test cases under certain conditions, for example a missing dependency.
167
+ - Always ensure the unit test continues to properly validate the intended functionality.
168
+
169
+ DOCUMENTATION
170
+
171
+ - When making changes to workflows, always update the corresponding documentation in the docs/ folder
172
+ - Keep workflow documentation synchronized with code changes
173
+ - Update relevant .md files in docs/workflows/ when modifying flow implementations
174
+ - When adding CLI documentation, verify all commands and options against actual --help output
175
+ - When adding new documentation files, add them to the `nav` section in mkdocs.yml
176
+
177
+ CLI REGISTRATION
178
+
179
+ - When creating new CLI commands, always register them in src/dicom_dre/cli.py
180
+ - Add the new command or command group to the `cli` group following the pattern of existing subcommands
181
+ - Group related subcommands under a click group (as done for the redactor subgroup)
182
+
183
+ PYTHON PACKAGE MANAGEMENT
184
+
185
+ - Always use `uv` instead of `pip` for all package management operations
186
+ - Installation: `uv pip install <package>`
187
+ - Editable install: `uv pip install -e .`
188
+ - Multiple packages: `uv pip install package1 package2`
189
+ - Upgrading packages: `uv add package_name>=package_version --upgrade-package package_name`
190
+ - Never use bare `pip` commands
191
+ - `uv` is faster and more reliable than pip for this project
192
+
193
+ SAFETY & ERROR HANDLING
194
+
195
+ - Never suggest destructive commands without confirmation
196
+ - Validate API usage against latest documentation
197
+ - Do not expose secrets, credentials, or tokens in code
198
+
199
+ PHI PROTECTION
200
+
201
+ This project processes medical imaging data. Protected Health Information (PHI) must never
202
+ be transmitted to external services, including MCP servers configured in .vscode/mcp.json.
203
+
204
+ - Never include PHI in tool queries sent to external MCP servers
205
+ - PHI includes: patient names, MRNs, accession numbers, dates of birth, addresses,
206
+ phone numbers, Social Security numbers, and any other HIPAA-defined identifiers
207
+ - When formulating search queries for external documentation servers, use generic
208
+ placeholders (e.g., "accession number" instead of an actual value)
209
+ - If the user pastes PHI in the chat, do not echo it in tool queries
210
+ - Safe test values: The accession numbers "TEST" and "TESTING" exist on the server
211
+ and contain no PHI. These are safe to use in examples and testing.
212
+
213
+ GIT
214
+
215
+ - Avoid suggesting git commands that modify history (rebase, reset, amend) without explicit user confirmation.
216
+
217
+ COMMIT MESSAGES
218
+
219
+ Use Conventional Commits format for all commit messages. This format is parsed by
220
+ python-semantic-release to determine version bumps automatically.
221
+
222
+ Format: <type>[optional scope]: <description>
223
+
224
+ Types that trigger releases:
225
+ - feat: A new feature (triggers MINOR version bump, e.g., 1.0.0 -> 1.1.0)
226
+ - fix: A bug fix (triggers PATCH version bump, e.g., 1.0.0 -> 1.0.1)
227
+ - perf: A performance improvement (triggers PATCH version bump)
228
+
229
+ Types that do NOT trigger releases:
230
+ - chore: Maintenance tasks, dependency updates
231
+ - docs: Documentation changes
232
+ - refactor: Code refactoring without behavior change
233
+ - style: Formatting, whitespace changes
234
+ - test: Adding or updating tests
235
+ - ci: CI/CD configuration changes
236
+ - build: Build system changes
237
+
238
+ Breaking changes (trigger MAJOR version bump, e.g., 1.0.0 -> 2.0.0):
239
+ - Add ! after type: feat!: remove deprecated API
240
+ - Or add BREAKING CHANGE: footer in commit body
241
+
242
+ Examples:
243
+ - feat: add new DICOM anonymization option
244
+ - fix(pipeline): handle missing patient ID gracefully
245
+ - docs: update workflow documentation
246
+ - feat!: change CLI argument format
247
+ - fix: resolve memory leak in image processing
248
+
249
+ BREAKING CHANGE: The --format flag now requires explicit value
250
+
251
+ FINALLY
252
+
253
+ Provide short, concise summaries without the use of emoji when completing a large task.
@@ -0,0 +1,25 @@
1
+ ---
2
+ description: Reading and writing DICOM with pydicom
3
+ applyTo: "src/dicom_dre/**/*.py"
4
+ ---
5
+
6
+ # DICOM I/O Conventions
7
+
8
+ ## Process-wide pydicom config
9
+
10
+ Any module that reads or writes DICOM with pydicom (`dcmread`, `dcmwrite`,
11
+ `save_as`, `Dataset` I/O) depends on the global settings in
12
+ `dicom_dre.pydicom_config`, which make reads tolerant of malformed
13
+ production data.
14
+
15
+ - The settings are process-global: one import applies them everywhere, so the
16
+ import only has to run before the first read or write in the process.
17
+ - Add the side-effect import to any new DICOM reader/writer whose module (or its
18
+ import chain) does not already reach it:
19
+
20
+ ```python
21
+ import dicom_dre.pydicom_config # noqa: F401 applies process-wide pydicom config
22
+ ```
23
+
24
+ - Modules that import the pipeline (`dicom_dre.pipeline`) or an anonymizer entry
25
+ module already inherit it transitively and do not need the direct import.
@@ -0,0 +1,84 @@
1
+ ---
2
+ description: Writing documentation in docs/
3
+ applyTo: "docs/**/*.md, README.md"
4
+ ---
5
+
6
+ # Writing Documentation in dicom-dre
7
+
8
+ Rules for writing and editing Markdown documentation under `docs/`. Favor the
9
+ reader: a clear page is more likely to be correct, cheaper to change, and safe
10
+ to reuse. Clarity is the primary goal; the rules below serve it.
11
+
12
+ ## Voice and Style
13
+
14
+ - Write as dry as an IEEE or NIST specification: factual, declarative, and
15
+ impersonal. State facts and requirements; omit motivation, praise, and asides.
16
+ - Use present tense and the active voice ("The engine hashes the value", not
17
+ "The value is hashed by the engine").
18
+ - Prefer verbs and concrete nouns over adjectives.
19
+ - Omit marketing and promotional words (for example efficient, powerful, robust,
20
+ seamless, comprehensive, advanced).
21
+ - Omit claims you cannot verify from the code or tests.
22
+
23
+ ## What to Include
24
+
25
+ - State what a component does, not what it does not do. Avoid negative-space
26
+ descriptions that contrast with an alternative or a prior design (for example
27
+ "handled here rather than in the parent", "not passed to X"); these are
28
+ usually refactoring artifacts. Keep a negative statement only when it conveys
29
+ critical information the reader cannot infer, such as a safety constraint.
30
+ - Omit self-evident or trivially true statements. Do not state facts the reader
31
+ can infer or that hold by construction (for example "this module has no
32
+ dependencies so it avoids an import cycle"). Write only what is non-obvious
33
+ and consequential.
34
+
35
+ ## Terminology and Verbs
36
+
37
+ - Name the actual mechanism, not an analogy. Do not use metaphor or
38
+ anthropomorphism: data does not "travel", "live", "ship", "flow", or get
39
+ "baked in"; objects do not "carry", "own", "want", or "know" anything.
40
+ - Use precise verbs for the operation:
41
+ - storage or location: "is stored in", "is held in", "resides in".
42
+ - fixed at construction: "is fixed at construction", "is set once at
43
+ construction time".
44
+ - cross-process transfer: "is serialized to", "is pickled and sent to", "is
45
+ passed to". State that it crosses the process boundary when relevant.
46
+ - occurrence or scope: "occurs", "is performed", "is scoped to".
47
+ - Prefer terms of art already used in the codebase: serialization,
48
+ immutability, process boundary, construction time, apply time, deterministic
49
+ derivation, closure.
50
+ - Prohibited terms and replacements: "baked" -> "fixed"/"set at construction";
51
+ "knobs" -> "settings"/"options"/"parameters"; "lives" -> "is stored"/
52
+ "resides"/"occurs"; "travel"/"ship" -> "is serialized"/"is sent"/"is passed";
53
+ "carries" -> "holds"/"contains".
54
+
55
+ ## Punctuation
56
+
57
+ - Do not use em-dashes (`--` or the Unicode em-dash). Rephrase into separate
58
+ sentences, or use a colon, comma, or parentheses.
59
+ - Do not use en-dashes for ranges in prose. Write "10 to 30", not "10-30".
60
+
61
+ ## Conciseness
62
+
63
+ - Keep sentences short. Prefer several plain sentences over one long clause.
64
+ - Cut filler and hedging (for example "in order to", "it is important to note
65
+ that", "basically", "simply").
66
+ - Make each point once. One idea per sentence; one topic per paragraph.
67
+
68
+ ## Formatting
69
+
70
+ - Wrap prose at roughly 88 columns to match the source line length.
71
+ - Wrap element names, keywords, parameters, and file paths in backticks
72
+ (`PatientID`, `HASH_SALT`, `~/.config/dicom-dre/salt`).
73
+ - Use fenced code blocks with a language hint for commands and code.
74
+ - Use relative Markdown links between docs pages
75
+ (`[Reproducibility](reproducibility.md)`).
76
+ - Do not use emoji.
77
+
78
+ ## Accuracy
79
+
80
+ - Keep documentation synchronized with the code. When behavior changes, update
81
+ the affected pages in the same change.
82
+ - Verify CLI flags, parameter names, and defaults against the actual source and
83
+ `--help` output before documenting them.
84
+ - When adding a new page, add it to the `nav`/`toctree` so it is reachable.