Skip to content

Add Dragon Copilot for Radiology support: extension manifest schema, CLI commands, Dragon.Copilot.Radiology.Models .NET project, and sample request payloads#233

Merged
brandonpollett merged 37 commits into
microsoft:mainfrom
ashokginjala:2659934_Extend_Dragon_Copilot_CLI_for_Radiology_Scenarios
Jun 4, 2026
Merged

Add Dragon Copilot for Radiology support: extension manifest schema, CLI commands, Dragon.Copilot.Radiology.Models .NET project, and sample request payloads#233
brandonpollett merged 37 commits into
microsoft:mainfrom
ashokginjala:2659934_Extend_Dragon_Copilot_CLI_for_Radiology_Scenarios

Conversation

@ashokginjala
Copy link
Copy Markdown
Contributor

No description provided.

Bhanuprakash Reddy Parvatha Reddy and others added 22 commits April 30, 2026 19:38
1.  renamed this file from dcr-dragon-extensibility-api.yaml to be radiology-extensibility-api.yaml

2  updated the readme file same pattern as physician
updated DragonStandardPayload also have a schema_version
updated ProcessResponse also have a schema_version
updated the "reportGeneration" capability to "qualityCheck"
removed "reportGeneration" capability to not supporting.
fixed icons
updated DragonRadiologyTool  to DcrTool
updated  $comment line
removed DragonInputConfig its not been used
removed extension.yaml its not been used

updated the folder structure for samples
updated the packages
updated the packages
removed extension.yaml from cli folder
updated redme file
updated Missing "{" curly brace.
- Inline PatientInformation, Report, SessionData, QualityCheckResult (and Recommendation/Provenance/ReferenceResource) into radiology-extensibility-api.yaml under components.schemas; fix $ref paths and indentation
- Delete the now-redundant standalone YAML files
- Add Dragon.Copilot.Radiology.Models project (net10.0) with DragonStandardPayload, ProcessResponse, and SessionData DTOs
Copilot AI review requested due to automatic review settings May 20, 2026 18:26
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds first-class Dragon Copilot for Radiology (DCR) support to the repo by introducing a radiology extension manifest schema + CLI commands, along with a new Dragon.Copilot.Radiology.Models .NET models project and sample request payloads.

Changes:

  • Added radiology manifest JSON Schema + TypeScript types, prompts, templates, and CLI commands (radiology init|generate|validate|package).
  • Updated CLI schema validation to support radiology manifests and moved physician schema to a new schemas/physician/... path.
  • Added Radiology extensibility OpenAPI spec plus corresponding C# model classes and sample JSON payloads.

Reviewed changes

Copilot reviewed 34 out of 36 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
tools/dragon-copilot-cli/src/shared/schema-validator.ts Extends shared schema validation to include radiology manifest schema + validation entrypoints; updates schema lookup paths.
tools/dragon-copilot-cli/src/schemas/radiology/radiology-extension-manifest-schema.json New JSON Schema (draft-07) for radiology extension manifests.
tools/dragon-copilot-cli/src/schemas/physician/physician-extension-manifest-schema.json New physician manifest schema file under schemas/physician/.
tools/dragon-copilot-cli/src/domains/radiology/types.ts Adds radiology manifest/type definitions and CLI option types.
tools/dragon-copilot-cli/src/domains/radiology/templates/index.ts Adds a radiology manifest template catalog.
tools/dragon-copilot-cli/src/domains/radiology/shared/schema-validator.ts Adds radiology-domain-specific AJV validator for radiology manifests.
tools/dragon-copilot-cli/src/domains/radiology/shared/prompts.ts Adds interactive prompt flows for generating radiology manifests/tools.
tools/dragon-copilot-cli/src/domains/radiology/index.ts Exposes radiology domain entrypoints + registers radiology commands.
tools/dragon-copilot-cli/src/domains/radiology/commands/validate.ts Adds dragon-copilot radiology validate command.
tools/dragon-copilot-cli/src/domains/radiology/commands/package.ts Adds dragon-copilot radiology package command to zip up a radiology extension bundle.
tools/dragon-copilot-cli/src/domains/radiology/commands/init.ts Adds dragon-copilot radiology init project/manifest generator.
tools/dragon-copilot-cli/src/domains/radiology/commands/generate.ts Adds dragon-copilot radiology generate (interactive + template-based) manifest updates.
tools/dragon-copilot-cli/src/domains/physician/shared/schema-validator.ts Updates physician schema path resolution to the new schemas/physician/... location.
tools/dragon-copilot-cli/src/commands/index.ts Registers the new radiology command group at the root CLI.
tools/dragon-copilot-cli/src/tests/manifest-validation.test.ts Adds radiology manifest validation unit tests via shared validator.
tools/dragon-copilot-cli/src/tests/command-registration.test.ts Extends command registration tests to include radiology.
tools/dragon-copilot-cli/src/tests/cli-integration.test.ts Adds CLI integration test for radiology validate.
tools/dragon-copilot-cli/package.json Formatting-only change (trailing brace alignment).
radiology/src/samples/requests/Report-Minimal.json Adds minimal report sample payload.
radiology/src/samples/requests/QualityCheckResult-MixedBillingClinical.json Adds richer quality-check result sample payload.
radiology/src/samples/requests/PatientInformation-AllFields.json Adds patient information sample payload.
radiology/src/models/Dragon.Copilot.Radiology.Models/SessionData.cs Adds DCR session metadata model.
radiology/src/models/Dragon.Copilot.Radiology.Models/Report.cs Adds radiology report payload model.
radiology/src/models/Dragon.Copilot.Radiology.Models/ReferenceResource.cs Adds reference resource model used by recommendations.
radiology/src/models/Dragon.Copilot.Radiology.Models/Recommendation.cs Adds quality recommendation model.
radiology/src/models/Dragon.Copilot.Radiology.Models/QualityCheckType.cs Adds enum for billing/clinical recommendation types.
radiology/src/models/Dragon.Copilot.Radiology.Models/QualityCheckResult.cs Adds quality-check result model.
radiology/src/models/Dragon.Copilot.Radiology.Models/Provenance.cs Adds provenance/span model for recommendations.
radiology/src/models/Dragon.Copilot.Radiology.Models/ProcessResponse.cs Adds response envelope model for /v1/process.
radiology/src/models/Dragon.Copilot.Radiology.Models/PatientInformation.cs Adds patient demographics model.
radiology/src/models/Dragon.Copilot.Radiology.Models/DragonStandardPayload.cs Adds request envelope model for DCR /v1/process.
radiology/src/models/Dragon.Copilot.Radiology.Models/Dragon.Copilot.Radiology.Models.csproj Adds new .NET project for radiology models.
radiology/src/models/Dragon.Copilot.Radiology.Models/BiologicalSex.cs Adds enum for patient sex values.
radiology/README.md Adds radiology section README and navigation.
radiology/radiology-extensibility-api.yaml Adds OpenAPI 3.0 spec for the radiology extensibility API.
physician/src/samples/DragonCopilot/Workflow/pythonSampleExtension/extension.yaml Removes the trigger field from a physician sample manifest.
Comments suppressed due to low confidence (1)

tools/dragon-copilot-cli/src/domains/radiology/shared/prompts.ts:328

  • Same encoding issue as above: this log message shows replacement characters (??) in the output. Replace with a plain-text prefix or correctly encoded character to avoid garbled CLI logs.
export async function promptOutputs(): Promise<DcrOutput[]> {
  const outputs: DcrOutput[] = [];

  console.log('\n?? Configuring outputs for your tool...');

Comment thread tools/dragon-copilot-cli/src/shared/schema-validator.ts
Comment thread tools/dragon-copilot-cli/src/domains/radiology/shared/prompts.ts
Comment thread tools/dragon-copilot-cli/src/domains/radiology/commands/init.ts Outdated
Comment thread radiology/src/models/Dragon.Copilot.Radiology.Models/ProcessResponse.cs Outdated
Comment thread radiology/src/models/Dragon.Copilot.Radiology.Models/QualityCheckResult.cs Outdated
Comment thread radiology/README.md
Comment thread tools/dragon-copilot-cli/src/domains/radiology/commands/generate.ts
Comment thread radiology/src/models/Dragon.Copilot.Radiology.Models/Report.cs Outdated
- bundle.cjs: embed physician/radiology schemas under both directory-prefixed and bare-filename keys so all loadSchema() consumers resolve in SEA/bundled mode
- radiology/shared/prompts.ts: replace corrupted '??' prefixes with properly encoded emojis
- Radiology model tweaks (ProcessResponse, QualityCheckResult, Report)
- radiology init command updates
Copy link
Copy Markdown

@ir-ms-oss ir-ms-oss left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi Ashok,
Thank you for these changes.

Comment thread radiology/radiology-extensibility-api.yaml Outdated
Comment thread radiology/radiology-extensibility-api.yaml Outdated
Comment thread radiology/radiology-extensibility-api.yaml Outdated
Comment thread radiology/radiology-extensibility-api.yaml Outdated
Comment thread radiology/radiology-extensibility-api.yaml Outdated
Comment thread tools/dragon-copilot-cli/package.json Outdated
Comment thread tools/dragon-copilot-cli/README.md Outdated
Comment thread tools/dragon-copilot-cli/README.md
@ashokginjala
Copy link
Copy Markdown
Contributor Author

Hi Ashok, Thank you for these changes.

Hi Isuru, Thanks for the review, I have fixed all the comments. Please validate.

@ashokginjala ashokginjala changed the title Radiology OpenAPI schemas and Dragon.Copilot.Radiology.Models project Add Dragon Copilot for Radiology support: extension manifest schema, CLI commands, Dragon.Copilot.Radiology.Models .NET project, and sample request payloads May 26, 2026
Comment thread radiology/src/models/Dragon.Copilot.Radiology.Models/ProcessRequest.cs Outdated
Comment thread radiology/src/samples/requests/PatientInformation-AllFields.json Outdated
Comment thread tools/dragon-copilot-cli/src/domains/radiology/shared/prompts.ts Outdated
Comment thread README.md Outdated
Comment thread tools/dragon-copilot-cli/README.md Outdated
/// </summary>
[JsonPropertyName("report")]
public Report? Report { get; set; }
}
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does the actual request look like based on the manifest values? I would think that if we used the patient-info naming like in the sample manifest, we would actually see a request that looks like the following. This wouldn't deserialize correctly with this class I believe.

{
   "schemaVersion": "0.0",
   "sessionData": {...},
   "patient-info": { "dateOfBirth": "...", "biologicalSex": "..." },
   "report": { "reportText": "..." }
 }

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Renamed to PatientInfo (class, file, OpenAPI schema) and aligned the JSON property to patientInfo so the wire payload from the sample manifest now deserializes against the class.

Comment on lines +1 to +4
{
"dateOfBirth": "1990-01-15",
"biologicalSex": "Male"
}
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doesn't look like what we would fully expect on the request, right? (same for the other samples)

Shouldn't it be something like:

 {
   "schemaVersion": "0.0",
   "sessionData": {
     "correlation_id": "...",
     "session_start": "2025-06-20T08:57:35.978Z",
     "environment_id": "..."
   },
   "patient-info": {
     "dateOfBirth": "1990-01-15",
     "biologicalSex": "Male"
   }
 }

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

@@ -0,0 +1,55 @@
{
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And I believe the result would look something like:

 {
   "schemaVersion": "0.0",
   "success": true,
   "message": "...",
   "payload": {
     "quality-check-result": { "recommendations": [...] }
   }
 }

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

- Rename PatientInformation -> PatientInfo (C# class, file, OpenAPI schema)

- Standardize manifest input/output names on camelCase: patientInfo, report, qualityCheckResult

- Update ProcessRequest JSON property to patientInfo so wire payload deserializes

- Convert request/response sample JSONs to full /v1/process envelopes

- Rename samples to *Request-Example.json / *Response-Example.json

- Add FullRequest-Example.json showing patientInfo + report together
@ashokginjala ashokginjala force-pushed the 2659934_Extend_Dragon_Copilot_CLI_for_Radiology_Scenarios branch from 54443c4 to 2c47499 Compare June 2, 2026 17:18
@brandonpollett brandonpollett merged commit cf463eb into microsoft:main Jun 4, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants