Add Dragon Copilot for Radiology support: extension manifest schema, CLI commands, Dragon.Copilot.Radiology.Models .NET project, and sample request payloads#233
Conversation
…on_Copilot_CLI_for_Radiology_Scenarios
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
There was a problem hiding this comment.
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...');
- 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
…on_Copilot_CLI_for_Radiology_Scenarios
Hi Isuru, Thanks for the review, I have fixed all the comments. Please validate. |
…ering; add sample payload docs
| /// </summary> | ||
| [JsonPropertyName("report")] | ||
| public Report? Report { get; set; } | ||
| } |
There was a problem hiding this comment.
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": "..." }
}There was a problem hiding this comment.
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.
| { | ||
| "dateOfBirth": "1990-01-15", | ||
| "biologicalSex": "Male" | ||
| } |
There was a problem hiding this comment.
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"
}
}| @@ -0,0 +1,55 @@ | |||
| { | |||
There was a problem hiding this comment.
And I believe the result would look something like:
{
"schemaVersion": "0.0",
"success": true,
"message": "...",
"payload": {
"quality-check-result": { "recommendations": [...] }
}
}- 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
54443c4 to
2c47499
Compare
…on_Copilot_CLI_for_Radiology_Scenarios
No description provided.