# Help screenshot catalog — source of truth for UX coverage and capture.
# Capture: uv run python -m docs_help --language en_US
#
# Output: docs/<lang>/<workflow.id>/<shots_dir>/<os>/<file>  (os = macos|windows)
# severity: required | soft | orthanc

fixtures:
  test_dcm_files: tests/controller/assets/test_dcm_files
  davidson_cxr: tests/controller/assets/test_dcm_files/davidson_cxr
  CT_Head_With_Contrast: tests/controller/assets/test_dcm_files/CT_Head_With_Contrast
  us_rgb_single_frame: tests/controller/assets/test_dcm_files/us_rgb_single_frame
  ctp_lookup: tests/controller/assets/ctp_lookup/test_dcm_files_lookup.properties

languages:
  en_US: en

orthanc:
  host: 127.0.0.1
  port: 4242
  aet: ORTHANC

workflows:
  - id: 02-install
    doc: 02-install/index.md
    title: Install and first launch
    shots_dir: shots
    shots:
      - id: Welcome
        file: Welcome.png
        window: WelcomeView
        severity: required
        deps: [language]
        ux_elements: [Welcome screen, Language selector, New Project / Open / AI Features]
        caption: "Welcome screen after first launch."

  - id: 05-create-project
    doc: 05-create-project/index.md
    title: Create a project
    shots_dir: shots
    shots:
      - id: NewProjectSettings
        file: NewProjectSettings.png
        window: SettingsDialog
        severity: required
        deps: [language, temp_storage]
        ux_elements:
          - Project Name
          - Storage Directory
          - Site ID / UID Root
          - Local Server / Query Server / Export Server buttons
          - AWS Cognito
          - Network Timeouts
          - Modalities / Storage Classes / Transfer Syntaxes
          - Patient Lookup Table / Logging Levels
        caption: "New Project Settings — identity, storage, and network before create."
      - id: LocalServer
        file: LocalServer.png
        window: DICOMNodeDialog
        severity: required
        deps: [project]
        ux_elements: [Local Server AE Title, IP, Port]
        caption: "Local Server — AE Title and port this computer uses to receive images."
      - id: QueryServer
        file: QueryServer.png
        window: DICOMNodeDialog
        severity: required
        deps: [project]
        ux_elements: [Query Server AE Title, IP, Port]
        caption: "Query Server — hospital archive used by Dashboard Search."
      - id: ExportServer
        file: ExportServer.png
        window: DICOMNodeDialog
        severity: required
        deps: [project]
        ux_elements: [Export Server AE Title, IP, Port]
        caption: "Export Server setting — destination used when you Send."
      - id: AWSCognito
        file: AWSCognito.png
        window: AWSCognitoDialog
        severity: required
        deps: [project]
        ux_elements: [AWS Cognito credentials fields]
        caption: "AWS Cognito credentials for S3 Send (optional)."
      - id: NetworkTimeouts
        file: NetworkTimeouts.png
        window: NetworkTimeoutsDialog
        severity: required
        deps: [project]
        ux_elements: [TCP / ACSE / DIMSE / Network timeouts]
        caption: "Network Timeouts for slow archives."
      - id: Modalities
        file: Modalities.png
        window: ModalitiesDialog
        severity: required
        deps: [project]
        ux_elements: [Modality checkboxes]
        caption: "Select modalities allowed in this project."
      - id: StorageClasses
        file: StorageClasses.png
        window: SOPClassesDialog
        severity: required
        deps: [project]
        ux_elements: [Storage class list]
        caption: "Storage Classes derived from modalities."
      - id: TransferSyntaxes
        file: TransferSyntaxes.png
        window: TransferSyntaxesDialog
        severity: required
        deps: [project]
        ux_elements: [Transfer syntax list]
        caption: "Transfer Syntaxes accepted for receive/import."
      - id: LookupTable
        file: LookupTable.png
        window: LookupTableDialog
        severity: required
        deps: [project, fixture:ctp_lookup]
        ux_elements: [Properties path, Preview summary, Script changes, Accept]
        caption: "Patient Lookup Table preview from CTP properties."
      - id: LoggingLevels
        file: LoggingLevels.png
        window: LoggingLevelsDialog
        severity: required
        deps: [project]
        ux_elements: [Anonymizer / pynetdicom / pydicom / SQL levels]
        caption: "Logging Levels for troubleshooting."
      - id: Dashboard
        file: Dashboard.png
        window: Dashboard
        severity: required
        deps: [project]
        ux_elements: [Search, View, Send buttons, Totals]
        caption: "Dashboard after project create — Search, View, Send."

  - id: 06-search
    doc: 06-search/index.md
    title: Search
    shots_dir: shots
    shots:
      - id: ImportFiles_Menu
        file: ImportFiles_Menu.png
        window: FileMenu
        severity: required
        deps: [project]
        ux_elements: [Import Files, Import Directory]
        caption: "File menu — Import Files (pick files) or Import Directory (folder tree)."
      - id: ImportDirectory_Chooser
        file: ImportDirectory_Chooser.png
        window: NativeFolderDialog
        severity: required
        deps: [project]
        ux_elements: [test_dcm_files path, Folder list, davidson_cxr, Choose]
        caption: "Import Directory — choose test_dcm_files (or a study folder under it)."
      - id: ImportDavidson_Done
        file: ImportDavidson_Done.png
        window: ImportFilesDialog
        severity: required
        deps: [project, fixture:davidson_cxr]
        ux_elements: [Success PHI → anonymized Patient ID, Close]
        caption: "Import Files finished — path mapped to anonymized Patient ID."
      - id: ImportDirectory_Log
        file: ImportDirectory_Log.png
        window: ImportFilesDialog
        severity: required
        deps: [project, fixture:test_dcm_files]
        ux_elements: [Scrollable import log, Success and skip/error lines, Close]
        caption: "Import Directory finished — each file reports success, skip, or reason."
      - id: QueryRetrieve_Ready
        file: QueryRetrieve_Ready.png
        window: QueryView
        severity: orthanc
        deps: [project, orthanc]
        ux_elements: [Patient Name/ID, Modality, Study Date, Accession, Load Accession Numbers, Query, Show Imported Studies, Move Level, Import & Anonymize]
        caption: "Query, Retrieve & Import window — criteria, results table, and import controls."
      - id: OrthancCT_Query
        file: OrthancCT_Query.png
        window: QueryView
        severity: orthanc
        deps: [project, orthanc]
        ux_elements: [Modality CT, Query results, Doe^Archibald selected, Select All, Clear Selection]
        caption: "CT query results — Doe^Archibald head CT selected."
      - id: OrthancCT_Importing
        file: OrthancCT_Importing.png
        window: ImportStudiesDialog
        severity: orthanc
        deps: [project, orthanc]
        ux_elements: [Move Level SERIES, Metadata progress, Image progress, Import Finished, Close]
        caption: "Import Studies dialog — CT series C-MOVE of Doe^Archibald finished."
      - id: OrthancCT_Imported
        file: OrthancCT_Imported.png
        window: QueryView
        severity: orthanc
        deps: [project, orthanc]
        ux_elements: [Green imported row, Imported count, Move Level SERIES]
        caption: "Doe^Archibald CT series import complete — green row and Imported count."

  - id: 07-view
    doc: 07-view/index.md
    title: View
    shots_dir: shots
    shots:
      - id: Dataset
        file: Dataset.png
        window: DatasetView
        severity: required
        deps: [project, imported, fixture:davidson_cxr, fixture:CT_Head_With_Contrast, fixture:us_rgb_single_frame]
        ux_elements: [Study/Series tree, AI status columns, View Projections, AI Batch Process]
        caption: "Dataset tree fitted to content — studies expanded with series rows visible."
      - id: ViewProjections
        file: ViewProjections.png
        window: ProjectionView
        severity: required
        deps: [project, imported, fixture:CT_Head_With_Contrast]
        ux_elements: [Projection thumbnails, Study title, Open Series View from tile, S M L]
        caption: "View Projections for a selected study (right-click study or toolbar button)."
      - id: ViewProjections_Multi
        file: ViewProjections_Multi.png
        window: ProjectionView
        severity: required
        deps: [project, imported, fixture:davidson_cxr, fixture:CT_Head_With_Contrast, fixture:us_rgb_single_frame]
        ux_elements: [Multiple study title, Projection thumbnails for several series, S M L, Page label]
        caption: "View Projections after multi-selecting studies — stacked tiles, title shows study/series counts, S selected."
      - id: SeriesView_Review
        file: SeriesView_Review.png
        window: SeriesView
        severity: required
        deps: [project, fixture:davidson_cxr]
        ux_elements: [Image viewport, Frame navigator, Toolbar]
        caption: "Series View reviewing davidson_cxr (before Process tools)."
      - id: Dataset_EditDescription
        file: Dataset_EditDescription.png
        window: DatasetView
        severity: required
        deps: [project, imported, fixture:davidson_cxr]
        ux_elements: [Harmonized series row, Inline description Combobox, RadLex alternatives]
        caption: "Dataset — click a harmonized series description to choose a RadLex alternative (XR views)."
      - id: Dataset_EditStudyDescription
        file: Dataset_EditStudyDescription.png
        window: DatasetView
        severity: required
        deps: [project, imported, fixture:davidson_cxr]
        ux_elements: [Harmonized study row, Inline description Combobox, LOINC Long Common Name options]
        caption: "Dataset — click a harmonized study description to choose a LOINC Long Common Name for that modality."
      - id: Dataset_CreatePatientLookup
        file: Dataset_CreatePatientLookup.png
        window: DatasetView
        severity: required
        deps: [project, imported, fixture:davidson_cxr, fixture:CT_Head_With_Contrast, fixture:us_rgb_single_frame]
        recipe:
          mode: button
        ux_elements: [Create Patient Lookup button, Dataset tree]
        caption: "Dataset toolbar — Create Patient Lookup exports the PHI mapping CSV."
      - id: Dataset_PatientLookup_CSV
        file: Dataset_PatientLookup_CSV.png
        window: CSVPreview
        severity: required
        deps: [project, imported, fixture:davidson_cxr, fixture:CT_Head_With_Contrast, fixture:us_rgb_single_frame]
        recipe:
          mode: csv
        ux_elements: [CSV path under private/phi_export, Column headers, Series rows]
        caption: "Patient Lookup CSV after Process — davidson, CT head, US single-frame with AI status columns."

  - id: 03-ai-features-setup
    doc: 03-ai-features-setup/index.md
    title: "AI Features setup"
    shots_dir: shots
    shots:
      - id: AiFeaturesSetup
        file: AiFeaturesSetup.png
        window: AiFeaturesSetupDialog
        severity: required
        deps: [language]
        ux_elements: [Download rows, Harmonize resolution, License]
        caption: "AI Features setup — download models before Process tool demos."

  - id: 08-process/02-remove-burned-in-text
    doc: 08-process/02-remove-burned-in-text/index.md
    title: "8.1 Remove Pixel PHI"
    shots_dir: shots
    shots:
      - id: Process_RemovePixel_Whitelist
        file: Process_RemovePixel_Whitelist.png
        window: SeriesView
        severity: soft
        deps: [project, fixture:davidson_cxr, ocr_models]
        recipe:
          whitelist: default
          edit_context: frame
          actions: []
        ux_elements: [Default Whitelist, Frame edit context]
        caption: "davidson_cxr — default whitelist and Frame edit context."
      - id: Process_RemovePixel_Detect
        file: Process_RemovePixel_Detect.png
        window: SeriesView
        severity: soft
        deps: [project, fixture:davidson_cxr, ocr_models]
        recipe:
          whitelist: default
          edit_context: frame
          actions: [detect_text]
          wait: detect_complete
        ux_elements: [Green OCR rectangles, Whitelist Standard, Portable/L not boxed]
        caption: "davidson_cxr after Detect Text — green boxes on PHI; Portable and L skipped (whitelist)."
      - id: Process_RemovePixel_Remove
        file: Process_RemovePixel_Remove.png
        window: SeriesView
        severity: soft
        deps: [project, fixture:davidson_cxr, ocr_models]
        recipe:
          whitelist: default
          edit_context: frame
          actions: [detect_text, remove_text]
          removal_mode: blackout
        ux_elements: [Remove Text result, Black out text, Save Pixel Changes]
        caption: "davidson_cxr after Remove Text using Black out text."
      - id: Process_RemovePixel_US_Detect
        file: Process_RemovePixel_US_Detect.png
        window: SeriesView
        severity: soft
        deps: [project, fixture:us_rgb_single_frame, ocr_models]
        recipe:
          whitelist: default
          edit_context: frame
          actions: [detect_text]
          removal_mode: inpaint
          wait: detect_complete
        ux_elements: [Green OCR rectangles on color US, Blend into background mode]
        caption: "us_rgb_single_frame after Detect Text with Blend into background selected."
      - id: Process_RemovePixel_US_Blend
        file: Process_RemovePixel_US_Blend.png
        window: SeriesView
        severity: soft
        deps: [project, fixture:us_rgb_single_frame, ocr_models]
        recipe:
          whitelist: default
          edit_context: frame
          actions: [detect_text, remove_text]
          removal_mode: inpaint
        ux_elements: [Blend into background, Remove Text result]
        caption: "us_rgb_single_frame after Remove Text using Blend into background."
      - id: Process_RemovePixel_US_Exclude_Panel
        file: Process_RemovePixel_US_Exclude_Panel.png
        window: SeriesView
        severity: soft
        deps: [project, fixture:us_rgb_single_frame, ocr_models]
        recipe:
          whitelist: default
          edit_context: frame
          actions: [exclude_area]
          exclude_rect: [8, 55, 210, 150]
        ux_elements: [Exclude Area white dotted outline, mindray parameter block]
        caption: "us_rgb_single_frame after Exclude Area over the machine-parameter block under mindray."
      - id: Process_RemovePixel_US_Exclude_Detect
        file: Process_RemovePixel_US_Exclude_Detect.png
        window: SeriesView
        severity: soft
        deps: [project, fixture:us_rgb_single_frame, ocr_models]
        recipe:
          whitelist: default
          edit_context: frame
          actions: [exclude_area, detect_text]
          exclude_rect: [8, 55, 210, 150]
          wait: detect_complete
        ux_elements: [White dotted exclude under mindray, Green OCR outside block, parameters not boxed]
        caption: "us_rgb_single_frame Detect Text with Exclude Area — mindray parameter block skipped."

  - id: 08-process/03-harmonize-names
    doc: 08-process/03-harmonize-names/index.md
    title: "8.2 Harmonize names"
    shots_dir: shots
    shots:
      - id: Process_Harmonize_Description
        file: Process_Harmonize_Description.png
        window: SeriesView+HarmonizeResultsView
        severity: soft
        deps: [project, fixture:CT_Head_With_Contrast, tseg_models]
        recipe:
          actions: [harmonize_description]
          brain_prompt: auto_no
        ux_elements: [Series View, Harmonize Description, Playbook results table]
        caption: "CT_Head_With_Contrast Series View above completed Harmonize Description results."
      - id: Process_Harmonize_BrainPrompt
        file: Process_Harmonize_BrainPrompt.png
        window: HarmonizeResultsView+BrainPrompt
        severity: soft
        deps: [project, fixture:CT_Head_With_Contrast, tseg_models, brain_models]
        recipe:
          actions: [harmonize_description]
          brain_prompt: capture
        ux_elements: [Harmonize Description, Brain structures Yes/No]
        caption: "Harmonize Description with Brain structures Yes/No prompt (dialog only)."
      - id: Process_Harmonize_SegmentedSeries
        file: Process_Harmonize_SegmentedSeries.png
        window: SeriesView
        severity: soft
        deps: [project, fixture:CT_Head_With_Contrast, tseg_models, brain_models]
        recipe:
          actions: [harmonize_description, segment_brain_features, accept, latch_all_segments, middle_slice]
          brain_prompt: auto_yes
        ux_elements: [Series View, Brain structure latches, Middle slice]
        caption: "CT_Head_With_Contrast Series View with full brain-structure segments on middle slice."

  - id: 08-process/04-blur-faces
    doc: 08-process/04-blur-faces/index.md
    title: "8.3 Blur faces"
    shots_dir: shots
    shots:
      - id: Process_FaceBlur_Gaussian
        file: Process_FaceBlur_Gaussian.png
        window: FaceBlurReviewDialog
        severity: soft
        deps: [project, fixture:CT_Head_With_Contrast, face_models]
        recipe:
          blur_mode: gaussian
          wait: review_ready
        ux_elements: [Face Blur review complete, Current vs Proposed, Green face mask, QA summary, Save]
        caption: "CT_Head_With_Contrast Face Blur review complete (Gaussian) — QA ready to Save."

  - id: 08-process/05-run-on-many-studies
    doc: 08-process/05-run-on-many-studies/index.md
    title: "8.4 Run on many studies"
    shots_dir: shots
    shots:
      - id: AiBatchOptions
        file: AiBatchOptions.png
        window: AiBatchProcessOptionsDialog
        severity: soft
        deps: [project, imported, fixture:davidson_cxr, fixture:CT_Head_With_Contrast]
        ux_elements: [Algorithm checkboxes, Modes]
        caption: "AI Batch options with davidson_cxr and CT_Head_With_Contrast imported."

  - id: 09-send
    doc: 09-send/index.md
    title: Send
    shots_dir: shots
    shots:
      - id: SendView_Initial
        file: SendView_Initial.png
        window: ExportView
        severity: required
        deps: [project, imported, fixture:davidson_cxr, fixture:CT_Head_With_Contrast]
        recipe:
          stage: initial
        ux_elements: [Patient list, Export destination title, No selection]
        caption: "Send — initial Export view with patients listed, none selected."
      - id: SendView_Selection
        file: SendView_Selection.png
        window: ExportView
        severity: required
        deps: [project, imported, fixture:davidson_cxr, fixture:CT_Head_With_Contrast]
        recipe:
          stage: selection
        ux_elements: [Selected patient rows, Select All, Export]
        caption: "Send — patients selected before Export."
      - id: SendView_Sending
        file: SendView_Sending.png
        window: ExportView
        severity: required
        deps: [project, imported, fixture:davidson_cxr, fixture:CT_Head_With_Contrast]
        recipe:
          stage: sending
        ux_elements: [Progress bar, Cancel Export enabled, Images Sent updating]
        caption: "Send — export in progress with status and Cancel Export."
      - id: SendView_Sent
        file: SendView_Sent.png
        window: ExportView
        severity: required
        deps: [project, imported, fixture:davidson_cxr, fixture:CT_Head_With_Contrast]
        recipe:
          stage: sent
        ux_elements: [Green completed rows, Date Time, Images Sent, Processed N of N]
        caption: "Send — export complete; successful patients shown in green."
