Clinical Practice Guidelines
3.0.0-ballot - STU 3 Ballot International flag

Clinical Practice Guidelines, published by HL7 International / Clinical Decision Support. This guide is not an authorized publication; it is the continuous build for version 3.0.0-ballot built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/cqf-recommendations/ and changes regularly. See the Directory of published versions

: CPG GraphDefinition Apply

Page standards status: Trial-use Maturity Level: 1

Raw json | Download

{
  "resourceType" : "OperationDefinition",
  "id" : "cpg-graphdefinition-apply",
  "language" : "en",
  "text" : {
    "status" : "generated",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p class=\"res-header-id\"><b>Generated Narrative: OperationDefinition cpg-graphdefinition-apply</b></p><a name=\"cpg-graphdefinition-apply\"> </a><a name=\"hccpg-graphdefinition-apply\"> </a><p>URL: [base]/GraphDefinition/$apply</p><p>URL: [base]/GraphDefinition/[id]/$apply</p><h3>Parameters</h3><table class=\"grid\"><tr><td><b>Use</b></td><td><b>Name</b></td><td><b>Scope</b></td><td><b>Cardinality</b></td><td><b>Type</b></td><td><b>Binding</b></td><td><b>Documentation</b></td></tr><tr><td>IN</td><td>url</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#uri\">uri</a></td><td/><td><div><p>Canonical URL of the GraphDefinition when invoked at the resource type level. This is exclusive with the <code>graphDefinition</code> parameter.</p>\n</div></td></tr><tr><td>IN</td><td>version</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#string\">string</a></td><td/><td><div><p>Version of the GraphDefinition when invoked at the resource type level. This is exclusive with the <code>graphDefinition</code> parameter.</p>\n</div></td></tr><tr><td>IN</td><td>graphDefinition</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/graphdefinition.html\">GraphDefinition</a></td><td/><td><div><p>The graph definition to be applied. If the operation is invoked at the instance level, this parameter is not allowed; if the operation is invoked at the type level, either this parameter or <code>url</code> (and optionally <code>version</code>) must be supplied.</p>\n</div></td></tr><tr><td>IN</td><td>subject</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#string\">string</a><br/>(<a href=\"https://hl7.org/fhir/R4/search.html#reference\">reference</a>)</td><td/><td><div><p>Subject(s) for which the graph definition will be realized. Subjects provided in this parameter SHALL match the type given by the <code>start</code> element of the GraphDefinition being applied. For example, if the start is Patient, the subject is a reference to a Patient, or a Group of Patients. This parameter cannot be used with the subjectGroup parameter. If no subject or subjectGroup is provided, what subjects are evaluated is up to the server.</p>\n</div></td></tr><tr><td>IN</td><td>subjectGroup</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/group.html\">Group</a></td><td/><td><div><p>Subjects for which the graph definition will be realized, provided as a Group resource. Subjects provided in this parameter SHALL match the type given by the <code>start</code> element of the GraphDefinition being applied. For example, if the start is Patient, the Group is a Group of Patients. This parameter cannot be used with the subject parameter. If no subject or subjectGroup is provided, what subjects are evaluated is up to the server.</p>\n</div></td></tr><tr><td>IN</td><td>encounter</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#string\">string</a><br/>(<a href=\"https://hl7.org/fhir/R4/search.html#reference\">reference</a>)</td><td/><td><div><p>The encounter in context, if any</p>\n</div></td></tr><tr><td>IN</td><td>practitioner</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#string\">string</a><br/>(<a href=\"https://hl7.org/fhir/R4/search.html#reference\">reference</a>)</td><td/><td><div><p>The practitioner applying the graph definition</p>\n</div></td></tr><tr><td>IN</td><td>organization</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#string\">string</a><br/>(<a href=\"https://hl7.org/fhir/R4/search.html#reference\">reference</a>)</td><td/><td><div><p>The organization applying the graph definition</p>\n</div></td></tr><tr><td>IN</td><td>userType</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#CodeableConcept\">CodeableConcept</a></td><td/><td><div><p>The type of user initiating the request, e.g. patient, healthcare provider, or specific type of healthcare provider (physician, nurse, etc.)</p>\n</div></td></tr><tr><td>IN</td><td>userLanguage</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#CodeableConcept\">CodeableConcept</a></td><td/><td><div><p>Preferred language of the person using the system</p>\n</div></td></tr><tr><td>IN</td><td>userTaskContext</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#CodeableConcept\">CodeableConcept</a></td><td/><td><div><p>The task the system user is performing, e.g. laboratory results review, medication list review, etc. This information can be used to tailor decision support outputs, such as recommended information resources</p>\n</div></td></tr><tr><td>IN</td><td>setting</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#CodeableConcept\">CodeableConcept</a></td><td/><td><div><p>The current setting of the request (inpatient, outpatient, etc.)</p>\n</div></td></tr><tr><td>IN</td><td>settingContext</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#CodeableConcept\">CodeableConcept</a></td><td/><td><div><p>Additional detail about the setting of the request, if any</p>\n</div></td></tr><tr><td>IN</td><td>parameters</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/parameters.html\">Parameters</a></td><td/><td><div><p>Any input parameters defined in libraries referenced by the GraphDefinition.  Parameter types are mapped to CQL as specified in the Using CQL With FHIR implementation guide. If a parameter appears more than once in the input Parameters resource, it is represented with a List in the input CQL. If a parameter has parts, it is represented as a Tuple in the input CQL.</p>\n</div></td></tr><tr><td>IN</td><td>useServerData</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#boolean\">boolean</a></td><td/><td><div><p>Whether to use data from the server performing the evaluation. If this parameter is true (the default), then the operation will use data first from any bundles provided as parameters (through the data and prefetch parameters), second data from the server performing the operation, and third, data from the dataEndpoint parameter (if provided). If this parameter is false, the operation will use data first from the bundles provided in the data or prefetch parameters, and second from the dataEndpoint parameter (if provided).</p>\n</div></td></tr><tr><td>IN</td><td>data</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/bundle.html\">Bundle</a></td><td/><td><div><p>Data to be made available to the GraphDefinition evaluation. This parameter is exclusive with the prefetchData parameter (i.e. either provide all data as a single bundle, or provide data using multiple bundles with prefetch descriptions).</p>\n</div></td></tr><tr><td>IN</td><td>prefetchData</td><td/><td>0..*</td><td/><td/><td><div><p>Data to be made available to the GraphDefinition evaluation, organized as prefetch response bundles. Each prefetchData parameter specifies either the name of the prefetchKey it is satisfying, a DataRequirement describing the prefetch, or both.</p>\n</div></td></tr><tr><td>IN</td><td>prefetchData.key</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#string\">string</a></td><td/><td><div><p>The key of the prefetch item. This typically corresponds to the name of a parameter in a library, or the name of a prefetch item in a CDS Hooks discovery response</p>\n</div></td></tr><tr><td>IN</td><td>prefetchData.descriptor</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/metadatatypes.html#DataRequirement\">DataRequirement</a></td><td/><td><div><p>A DataRequirement describing the content of the prefetch item.</p>\n</div></td></tr><tr><td>IN</td><td>prefetchData.data</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/bundle.html\">Bundle</a></td><td/><td><div><p>The prefetch data as a Bundle. If the prefetchData has no prefetchResult part, it indicates there is no data associated with this prefetch item.</p>\n</div></td></tr><tr><td>IN</td><td>dataEndpoint</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/endpoint.html\">Endpoint</a></td><td/><td><div><p>An endpoint to use to access data referenced by retrieve operations in libraries referenced by the GraphDefinition. If provided, this endpoint is used after the data or prefetchData bundles, and the server, if the useServerData parameter is true.</p>\n</div></td></tr><tr><td>IN</td><td>artifactEndpointConfiguration</td><td/><td>0..*</td><td/><td/><td><div><p>Configuration information to resolve canonical artifacts</p>\n<p>Processing Semantics:</p>\n<p>Create a canonical-like reference (e.g.\n<code>{canonical.url}|{canonical.version}</code> or similar extensions for non-canonical artifacts).</p>\n<ul>\n<li>Given a single <code>artifactEndpointConfiguration</code>\n<ul>\n<li>When <code>artifactRoute</code> is present\n<ul>\n<li>And the canonical or artifact reference starts with the <code>artifactRoute</code> (up to and including the entire uri)</li>\n<li>Then attempt to resolve with <code>endpointUri</code> or <code>endpoint</code></li>\n</ul>\n</li>\n<li>When <code>artifactRoute</code> is not present\n<ul>\n<li>Then attempt to resolve with <code>endpointUri</code> or <code>endpoint</code></li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Given multiple <code>artifactEndpointConfiguration</code>s\n<ul>\n<li>Then rank order each configuration (see below)</li>\n<li>And attempt to resolve with <code>endpointUri</code> or <code>endpoint</code> in order until resolved</li>\n</ul>\n</li>\n</ul>\n<p>Rank each <code>artifactEndpointConfiguration</code> such that:</p>\n<ul>\n<li>if <code>artifactRoute</code> is present <em>and</em> <code>artifactRoute</code> <em>starts with</em> canonical or artifact reference: rank based on number of matching characters</li>\n<li>if <code>artifactRoute</code> is <em>not</em> present: include but rank lower</li>\n</ul>\n<p>NOTE: For evenly ranked <code>artifactEndpointConfiguration</code>s, order as defined in the\nOperationDefinition.</p>\n</div></td></tr><tr><td>IN</td><td>artifactEndpointConfiguration.artifactRoute</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#uri\">uri</a></td><td/><td><div><p>An optional route used to determine whether this endpoint is expected to be able to resolve artifacts that match the route (i.e. start with the route, up to and including the entire url)</p>\n</div></td></tr><tr><td>IN</td><td>artifactEndpointConfiguration.endpointUri</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#uri\">uri</a></td><td/><td><div><p>The URI of the endpoint, exclusive with the <code>endpoint</code> parameter</p>\n</div></td></tr><tr><td>IN</td><td>artifactEndpointConfiguration.endpoint</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/endpoint.html\">Endpoint</a></td><td/><td><div><p>An Endpoint resource describing the endpoint, exclusive with the <code>endpointUri</code> parameter</p>\n</div></td></tr><tr><td>OUT</td><td>return</td><td/><td>0..*</td><td><a href=\"http://hl7.org/fhir/R4/bundle.html\">Bundle</a></td><td/><td><div><p>A Bundle for each input subject, with a Composition resource as the first entry. The Composition is the result of realizing the graph definition with respect to that subject, and identifies the graph definition using the cpg-generatedFrom extension.</p>\n</div></td></tr></table><div><p>The result of this operation is a Bundle for each subject, where the first entry in the Bundle is\na Composition resource that is the result of realizing the GraphDefinition with respect to that subject.\nThe remaining entries in the Bundle are the resources referenced by the Composition.</p>\n<p>The GraphDefinition is realized by starting with the subject, which is a resource of the type given by\n<code>GraphDefinition.start</code>, and following each link of the graph:</p>\n<ul>\n<li>If the link has a <a href=\"StructureDefinition-cpg-applicabilityExpression.html\">cpg-applicabilityExpression</a>,\nthe expression is evaluated, and the link is only followed if the expression returns true.</li>\n<li>For each target of a link, if the target has a <a href=\"StructureDefinition-cpg-targetExpression.html\">cpg-targetExpression</a>,\nthe expression is evaluated to determine the resources for that target. Otherwise, the resources for the\ntarget are determined by the <code>path</code> of the link. The resources are consistent with the <code>type</code> (and <code>profile</code>, if\nspecified) of the target.</li>\n<li>The resulting resources are included in the Composition, and any nested links of the target are followed\nfor each resulting resource.</li>\n</ul>\n<p>The target <code>profile</code> is typically a <a href=\"StructureDefinition-cpg-casefeaturedefinition.html\">CPGCaseFeatureDefinition</a>,\nin which case the target expression is typically the feature expression of that case feature.</p>\n<p>The resulting Composition SHOULD identify the GraphDefinition it was realized from using the\n<a href=\"StructureDefinition-cpg-generatedFrom.html\">cpg-generatedFrom</a> extension. When the GraphDefinition is a\n<a href=\"StructureDefinition-cpg-casesummarydefinition.html\">CPGCaseSummaryDefinition</a> or a\n<a href=\"StructureDefinition-cpg-caseplansummarydefinition.html\">CPGCasePlanSummaryDefinition</a>, the resulting Composition\nis typically a <a href=\"StructureDefinition-cpg-casesummary.html\">CPGCaseSummary</a> or a\n<a href=\"StructureDefinition-cpg-caseplansummary.html\">CPGCasePlanSummary</a>, respectively.</p>\n<p>If the GraphDefinition includes library references, those libraries will be available to the evaluated\nexpressions. If those libraries have parameters, those parameters will be bound by name to the parameters given\nto the operation. In addition, parameters to the <code>$apply</code> operation are available within expressions as context\nvariables, accessible by the name of the parameter, prefixed with a percent (%) symbol.</p>\n<p>Note that the result of this operation is transient (i.e. none of the resources created by the operation are\npersisted in the server, they are all returned as entries in the result Bundle(s)).</p>\n</div></div>"
  },
  "extension" : [
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm",
      "valueInteger" : 1
    },
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status",
      "valueCode" : "trial-use"
    },
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg",
      "valueCode" : "cds"
    }
  ],
  "url" : "http://hl7.org/fhir/uv/cpg/OperationDefinition/cpg-graphdefinition-apply",
  "version" : "3.0.0-ballot",
  "name" : "CPGGraphDefinitionApply",
  "title" : "CPG GraphDefinition Apply",
  "status" : "active",
  "kind" : "operation",
  "date" : "2026-11-10T08:06:13+00:00",
  "publisher" : "HL7 International / Clinical Decision Support",
  "contact" : [
    {
      "name" : "HL7 International / Clinical Decision Support",
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://www.hl7.org/Special/committees/dss"
        }
      ]
    }
  ],
  "description" : "The apply operation realizes a GraphDefinition for a given subject",
  "jurisdiction" : [
    {
      "coding" : [
        {
          "system" : "http://unstats.un.org/unsd/methods/m49/m49.htm",
          "code" : "001",
          "display" : "World"
        }
      ]
    }
  ],
  "code" : "apply",
  "comment" : "The result of this operation is a Bundle for each subject, where the first entry in the Bundle is\na Composition resource that is the result of realizing the GraphDefinition with respect to that subject.\nThe remaining entries in the Bundle are the resources referenced by the Composition.\n\nThe GraphDefinition is realized by starting with the subject, which is a resource of the type given by\n`GraphDefinition.start`, and following each link of the graph:\n\n* If the link has a [cpg-applicabilityExpression](StructureDefinition-cpg-applicabilityExpression.html),\nthe expression is evaluated, and the link is only followed if the expression returns true.\n* For each target of a link, if the target has a [cpg-targetExpression](StructureDefinition-cpg-targetExpression.html),\nthe expression is evaluated to determine the resources for that target. Otherwise, the resources for the\ntarget are determined by the `path` of the link. The resources are consistent with the `type` (and `profile`, if\nspecified) of the target.\n* The resulting resources are included in the Composition, and any nested links of the target are followed\nfor each resulting resource.\n\nThe target `profile` is typically a [CPGCaseFeatureDefinition](StructureDefinition-cpg-casefeaturedefinition.html),\nin which case the target expression is typically the feature expression of that case feature.\n\nThe resulting Composition SHOULD identify the GraphDefinition it was realized from using the\n[cpg-generatedFrom](StructureDefinition-cpg-generatedFrom.html) extension. When the GraphDefinition is a\n[CPGCaseSummaryDefinition](StructureDefinition-cpg-casesummarydefinition.html) or a\n[CPGCasePlanSummaryDefinition](StructureDefinition-cpg-caseplansummarydefinition.html), the resulting Composition\nis typically a [CPGCaseSummary](StructureDefinition-cpg-casesummary.html) or a\n[CPGCasePlanSummary](StructureDefinition-cpg-caseplansummary.html), respectively.\n\nIf the GraphDefinition includes library references, those libraries will be available to the evaluated\nexpressions. If those libraries have parameters, those parameters will be bound by name to the parameters given\nto the operation. In addition, parameters to the `$apply` operation are available within expressions as context\nvariables, accessible by the name of the parameter, prefixed with a percent (%) symbol.\n\nNote that the result of this operation is transient (i.e. none of the resources created by the operation are\npersisted in the server, they are all returned as entries in the result Bundle(s)).",
  "resource" : [
    "GraphDefinition"
  ],
  "system" : false,
  "type" : true,
  "instance" : true,
  "parameter" : [
    {
      "name" : "url",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Canonical URL of the GraphDefinition when invoked at the resource type level. This is exclusive with the `graphDefinition` parameter.",
      "type" : "uri"
    },
    {
      "name" : "version",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Version of the GraphDefinition when invoked at the resource type level. This is exclusive with the `graphDefinition` parameter.",
      "type" : "string"
    },
    {
      "name" : "graphDefinition",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "The graph definition to be applied. If the operation is invoked at the instance level, this parameter is not allowed; if the operation is invoked at the type level, either this parameter or `url` (and optionally `version`) must be supplied.",
      "type" : "GraphDefinition"
    },
    {
      "name" : "subject",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Subject(s) for which the graph definition will be realized. Subjects provided in this parameter SHALL match the type given by the `start` element of the GraphDefinition being applied. For example, if the start is Patient, the subject is a reference to a Patient, or a Group of Patients. This parameter cannot be used with the subjectGroup parameter. If no subject or subjectGroup is provided, what subjects are evaluated is up to the server.",
      "type" : "string",
      "searchType" : "reference"
    },
    {
      "name" : "subjectGroup",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Subjects for which the graph definition will be realized, provided as a Group resource. Subjects provided in this parameter SHALL match the type given by the `start` element of the GraphDefinition being applied. For example, if the start is Patient, the Group is a Group of Patients. This parameter cannot be used with the subject parameter. If no subject or subjectGroup is provided, what subjects are evaluated is up to the server.",
      "type" : "Group"
    },
    {
      "name" : "encounter",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "The encounter in context, if any",
      "type" : "string",
      "searchType" : "reference"
    },
    {
      "name" : "practitioner",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "The practitioner applying the graph definition",
      "type" : "string",
      "searchType" : "reference"
    },
    {
      "name" : "organization",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "The organization applying the graph definition",
      "type" : "string",
      "searchType" : "reference"
    },
    {
      "name" : "userType",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "The type of user initiating the request, e.g. patient, healthcare provider, or specific type of healthcare provider (physician, nurse, etc.)",
      "type" : "CodeableConcept"
    },
    {
      "name" : "userLanguage",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Preferred language of the person using the system",
      "type" : "CodeableConcept"
    },
    {
      "name" : "userTaskContext",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "The task the system user is performing, e.g. laboratory results review, medication list review, etc. This information can be used to tailor decision support outputs, such as recommended information resources",
      "type" : "CodeableConcept"
    },
    {
      "name" : "setting",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "The current setting of the request (inpatient, outpatient, etc.)",
      "type" : "CodeableConcept"
    },
    {
      "name" : "settingContext",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Additional detail about the setting of the request, if any",
      "type" : "CodeableConcept"
    },
    {
      "name" : "parameters",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Any input parameters defined in libraries referenced by the GraphDefinition.  Parameter types are mapped to CQL as specified in the Using CQL With FHIR implementation guide. If a parameter appears more than once in the input Parameters resource, it is represented with a List in the input CQL. If a parameter has parts, it is represented as a Tuple in the input CQL.",
      "type" : "Parameters"
    },
    {
      "name" : "useServerData",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Whether to use data from the server performing the evaluation. If this parameter is true (the default), then the operation will use data first from any bundles provided as parameters (through the data and prefetch parameters), second data from the server performing the operation, and third, data from the dataEndpoint parameter (if provided). If this parameter is false, the operation will use data first from the bundles provided in the data or prefetch parameters, and second from the dataEndpoint parameter (if provided).",
      "type" : "boolean"
    },
    {
      "name" : "data",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Data to be made available to the GraphDefinition evaluation. This parameter is exclusive with the prefetchData parameter (i.e. either provide all data as a single bundle, or provide data using multiple bundles with prefetch descriptions).",
      "type" : "Bundle"
    },
    {
      "name" : "prefetchData",
      "use" : "in",
      "min" : 0,
      "max" : "*",
      "documentation" : "Data to be made available to the GraphDefinition evaluation, organized as prefetch response bundles. Each prefetchData parameter specifies either the name of the prefetchKey it is satisfying, a DataRequirement describing the prefetch, or both.",
      "part" : [
        {
          "name" : "key",
          "use" : "in",
          "min" : 0,
          "max" : "1",
          "documentation" : "The key of the prefetch item. This typically corresponds to the name of a parameter in a library, or the name of a prefetch item in a CDS Hooks discovery response",
          "type" : "string"
        },
        {
          "name" : "descriptor",
          "use" : "in",
          "min" : 0,
          "max" : "1",
          "documentation" : "A DataRequirement describing the content of the prefetch item.",
          "type" : "DataRequirement"
        },
        {
          "name" : "data",
          "use" : "in",
          "min" : 0,
          "max" : "1",
          "documentation" : "The prefetch data as a Bundle. If the prefetchData has no prefetchResult part, it indicates there is no data associated with this prefetch item.",
          "type" : "Bundle"
        }
      ]
    },
    {
      "name" : "dataEndpoint",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "An endpoint to use to access data referenced by retrieve operations in libraries referenced by the GraphDefinition. If provided, this endpoint is used after the data or prefetchData bundles, and the server, if the useServerData parameter is true.",
      "type" : "Endpoint"
    },
    {
      "name" : "artifactEndpointConfiguration",
      "use" : "in",
      "min" : 0,
      "max" : "*",
      "documentation" : "Configuration information to resolve canonical artifacts\n\nProcessing Semantics:\n\nCreate a canonical-like reference (e.g.\n`{canonical.url}|{canonical.version}` or similar extensions for non-canonical artifacts).\n\n* Given a single `artifactEndpointConfiguration`\n  * When `artifactRoute` is present\n    * And the canonical or artifact reference starts with the `artifactRoute` (up to and including the entire uri)\n    * Then attempt to resolve with `endpointUri` or `endpoint`\n  * When `artifactRoute` is not present\n    * Then attempt to resolve with `endpointUri` or `endpoint`\n* Given multiple `artifactEndpointConfiguration`s\n  * Then rank order each configuration (see below)\n  * And attempt to resolve with `endpointUri` or `endpoint` in order until resolved\n\nRank each `artifactEndpointConfiguration` such that:\n* if `artifactRoute` is present *and* `artifactRoute` *starts with* canonical or artifact reference: rank based on number of matching characters\n* if `artifactRoute` is *not* present: include but rank lower\n\nNOTE: For evenly ranked `artifactEndpointConfiguration`s, order as defined in the\nOperationDefinition.",
      "part" : [
        {
          "name" : "artifactRoute",
          "use" : "in",
          "min" : 0,
          "max" : "1",
          "documentation" : "An optional route used to determine whether this endpoint is expected to be able to resolve artifacts that match the route (i.e. start with the route, up to and including the entire url)",
          "type" : "uri"
        },
        {
          "name" : "endpointUri",
          "use" : "in",
          "min" : 0,
          "max" : "1",
          "documentation" : "The URI of the endpoint, exclusive with the `endpoint` parameter",
          "type" : "uri"
        },
        {
          "name" : "endpoint",
          "use" : "in",
          "min" : 0,
          "max" : "1",
          "documentation" : "An Endpoint resource describing the endpoint, exclusive with the `endpointUri` parameter",
          "type" : "Endpoint"
        }
      ]
    },
    {
      "name" : "return",
      "use" : "out",
      "min" : 0,
      "max" : "*",
      "documentation" : "A Bundle for each input subject, with a Composition resource as the first entry. The Composition is the result of realizing the graph definition with respect to that subject, and identifies the graph definition using the cpg-generatedFrom extension.",
      "type" : "Bundle"
    }
  ]
}