Canonical Resource Management Infrastructure Implementation Guide
1.0.0-ballot2 - Ballot International flag

This page is part of the Canonical Resource Management Infrastructure Implementation Guide (v1.0.0-ballot2: STU1 Ballot 2) based on FHIR (HL7® FHIR® Standard) R4. . For a full list of available versions, see the Directory of published versions

: CRMI Profiled Operation Example - JSON Representation

Draft as of 2023-03-12

Raw json | Download


{
  "resourceType" : "OperationDefinition",
  "id" : "crmi-profiled-operation-example",
  "meta" : {
    "profile" : [
      🔗 "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-artifact-operation"🔗 ,
      "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-artifact-version-bindable-operation"🔗 ,
      "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-artifact-endpoint-configurable-operation"🔗 ,
      "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-manifestable-operation"
    ]
  },
  "text" : {
    "status" : "extensions",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p>URL: [base]/ActivityDefinition/$data-requirements</p><p>URL: [base]/ActivityDefinition/[id]/$data-requirements</p><p>URL: [base]/CapabilityStatement/$data-requirements</p><p>URL: [base]/CapabilityStatement/[id]/$data-requirements</p><p>URL: [base]/ChargeItemDefinition/$data-requirements</p><p>URL: [base]/ChargeItemDefinition/[id]/$data-requirements</p><p>URL: [base]/CodeSystem/$data-requirements</p><p>URL: [base]/CodeSystem/[id]/$data-requirements</p><p>URL: [base]/CompartmentDefinition/$data-requirements</p><p>URL: [base]/CompartmentDefinition/[id]/$data-requirements</p><p>URL: [base]/ConceptMap/$data-requirements</p><p>URL: [base]/ConceptMap/[id]/$data-requirements</p><p>URL: [base]/EffectEvidenceSynthesis/$data-requirements</p><p>URL: [base]/EffectEvidenceSynthesis/[id]/$data-requirements</p><p>URL: [base]/EventDefinition/$data-requirements</p><p>URL: [base]/EventDefinition/[id]/$data-requirements</p><p>URL: [base]/Evidence/$data-requirements</p><p>URL: [base]/Evidence/[id]/$data-requirements</p><p>URL: [base]/EvidenceVariable/$data-requirements</p><p>URL: [base]/EvidenceVariable/[id]/$data-requirements</p><p>URL: [base]/ExampleScenario/$data-requirements</p><p>URL: [base]/ExampleScenario/[id]/$data-requirements</p><p>URL: [base]/GraphDefinition/$data-requirements</p><p>URL: [base]/GraphDefinition/[id]/$data-requirements</p><p>URL: [base]/ImplementationGuide/$data-requirements</p><p>URL: [base]/ImplementationGuide/[id]/$data-requirements</p><p>URL: [base]/Library/$data-requirements</p><p>URL: [base]/Library/[id]/$data-requirements</p><p>URL: [base]/Measure/$data-requirements</p><p>URL: [base]/Measure/[id]/$data-requirements</p><p>URL: [base]/Medication/$data-requirements</p><p>URL: [base]/Medication/[id]/$data-requirements</p><p>URL: [base]/MedicationKnowledge/$data-requirements</p><p>URL: [base]/MedicationKnowledge/[id]/$data-requirements</p><p>URL: [base]/MessageDefinition/$data-requirements</p><p>URL: [base]/MessageDefinition/[id]/$data-requirements</p><p>URL: [base]/NamingSystem/$data-requirements</p><p>URL: [base]/NamingSystem/[id]/$data-requirements</p><p>URL: [base]/OperationDefinition/$data-requirements</p><p>URL: [base]/OperationDefinition/[id]/$data-requirements</p><p>URL: [base]/PlanDefinition/$data-requirements</p><p>URL: [base]/PlanDefinition/[id]/$data-requirements</p><p>URL: [base]/Questionnaire/$data-requirements</p><p>URL: [base]/Questionnaire/[id]/$data-requirements</p><p>URL: [base]/ResearchDefinition/$data-requirements</p><p>URL: [base]/ResearchDefinition/[id]/$data-requirements</p><p>URL: [base]/ResearchElementDefinition/$data-requirements</p><p>URL: [base]/ResearchElementDefinition/[id]/$data-requirements</p><p>URL: [base]/RiskEvidenceSynthesis/$data-requirements</p><p>URL: [base]/RiskEvidenceSynthesis/[id]/$data-requirements</p><p>URL: [base]/SearchParameter/$data-requirements</p><p>URL: [base]/SearchParameter/[id]/$data-requirements</p><p>URL: [base]/StructureDefinition/$data-requirements</p><p>URL: [base]/StructureDefinition/[id]/$data-requirements</p><p>URL: [base]/StructureMap/$data-requirements</p><p>URL: [base]/StructureMap/[id]/$data-requirements</p><p>URL: [base]/Substance/$data-requirements</p><p>URL: [base]/Substance/[id]/$data-requirements</p><p>URL: [base]/TerminologyCapabilities/$data-requirements</p><p>URL: [base]/TerminologyCapabilities/[id]/$data-requirements</p><p>URL: [base]/TestScript/$data-requirements</p><p>URL: [base]/TestScript/[id]/$data-requirements</p><p>URL: [base]/ValueSet/$data-requirements</p><p>URL: [base]/ValueSet/[id]/$data-requirements</p><p>Parameters</p><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>id</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 logical id of the canonical or artifact resource to analyze.</p>\n</div></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>A canonical or artifact reference to a canonical resource.</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>The version of the canonical or artifact resource to analyze</p>\n</div></td></tr><tr><td>IN</td><td>identifier</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#string\">string</a><br/>(<a href=\"http://hl7.org/fhir/R4/search.html#token\">token</a>)</td><td/><td><div><p>A business identifier of the canonical or artifact resource to be analyzed.</p>\n</div></td></tr><tr><td>IN</td><td>expression</td><td/><td>0..*</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#string\">string</a></td><td/><td><div><p>The name of a specific expression to be considered for analysis. If no\nexpressions are specified, the analysis is performed on the entire resource. If\nexpressions are specified, the analysis is performed only on the expressions\nspecified.</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 for the artifact. If the artifact is a logic library,\nor references logic libraries, parameters defined in this input will be\nbound by name to parameters defined in the logic library (or referenced\nlibraries). If the logic library is a CQL library, parameter types are\nmapped to CQL as specified in the Using CQL with FHIR implementation guide.\nIf a parameter appears more than once in the input Parameters resource,\nit is represented with a List in the input CQL. If a parameter has parts,\nit is represented as a Tuple in the input CQL.</p>\n</div></td></tr><tr><td>IN</td><td>artifactVersion</td><td/><td>0..*</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#uri\">uri</a></td><td/><td><div><p>Specifies a version to use for a canonical or artifact resource if the artifact referencing\nthe resource does not already specify a version. The format is the same as a canonical URL:\n[url]|[version] - e.g. http://loinc.org|2.56</p>\n<p>Note that this is a generalization of the <code>system-version</code> parameter to the $expand operation\nto apply to any canonical resource, including code systems.</p>\n</div></td></tr><tr><td>IN</td><td>checkArtifactVersion</td><td/><td>0..*</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#uri\">uri</a></td><td/><td><div><p>Edge Case: Specifies a version to use for a canonical or artifact resource. If the artifact referencing\nthe resource specifies a different version, an error is returned instead of the package. The\nformat is the same as a canonical URL: [url]|[version] - e.g. http://loinc.org|2.56</p>\n<p>Note that this is a generalization of the <code>check-system-version</code> parameter to the $expand operation to\napply to any canonical resource, including code systems.</p>\n</div></td></tr><tr><td>IN</td><td>forceArtifactVersion</td><td/><td>0..*</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#uri\">uri</a></td><td/><td><div><p>Edge Case: Specifies a version to use for a canonical or artifact resource. This parameter overrides any\nspecified version in the artifact (and any artifacts it depends on). The\nformat is the same as a canonical URL: [system]|[version] - e.g.\nhttp://loinc.org|2.56. Note that this has obvious safety issues, in that it may\nresult in a value set expansion giving a different list of codes that is both\nwrong and unsafe, and implementers should only use this capability reluctantly.</p>\n<p>It primarily exists to deal with situations where specifications have fallen\ninto decay as time passes. If the version of a canonical is overridden, the version used SHALL\nexplicitly be represented in the expansion parameters.</p>\n<p>Note that this is a generalization of the <code>force-system-version</code> parameter to the $expand operation\nto apply to any canonical resource, including code systems.</p>\n</div></td></tr><tr><td>IN</td><td>manifest</td><td/><td>0..1</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#canonical\">canonical</a></td><td/><td><div><p>Specifies an asset-collection library that defines version bindings for code\nsystems and other canonical resources referenced by the value set(s) being expanded\nand other canonical resources referenced by the artifact. When specified, code\nsystems and other canonical resources identified as <code>depends-on</code> related artifacts\nin the manifest library have the same meaning as specifying that code system or other\ncanonical version in the <code>system-version</code> parameter of an expand or the <code>canonicalVersion</code>\nparameter.</p>\n</div></td></tr><tr><td>IN</td><td>include</td><td/><td>0..*</td><td><a href=\"http://hl7.org/fhir/R4/datatypes.html#string\">string</a></td><td/><td><div><p>Specifies what contents should be included in the resulting package. The codes indicate which types of resources should be included, but note that\nthe set of possible resources is determined as all known (i.e. present on the server) dependencies and related artifacts. Possible\nvalues are:</p>\n<ul>\n<li>all (default) - all resource types</li>\n<li>artifact - the specified artifact</li>\n<li>canonical - canonical resources (i.e. resources with a defined url element or that can be canonical resources using the artifact-url extension)</li>\n<li>terminology - terminology resources (i.e. CodeSystem, ValueSet, NamingSystem, ConceptMap)</li>\n<li>conformance - conformance resources (i.e. StructureDefinition, StructureMap, SearchParameter, CompartmentDefinition)</li>\n<li>profiles - profile definitions (i.e. StructureDefinition resources that define profiles)</li>\n<li>extensions - extension definitions (i.e. StructureDefinition resources that define extensions)</li>\n<li>knowledge - knowledge artifacts (i.e. ActivityDefinition, Library, PlanDefinition, Measure, Questionnaire)</li>\n<li>tests - test cases and data (i.e. test cases as defined by the testing specification in this implementation guide)</li>\n<li>examples - example resources (i.e. resources identified as examples in the implementation guide)</li>\n</ul>\n</div></td></tr><tr><td>IN</td><td>artifactEndpointConfiguration</td><td/><td>0..*</td><td></td><td/><td><div><p>Configuration information to resolve canonical artifacts</p>\n<ul>\n<li><code>artifactRoute</code>: 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)</li>\n<li><code>endpointUri</code>: The URI of the endpoint, exclusive with the <code>endpoint</code> parameter</li>\n<li><code>endpoint</code>: An Endpoint resource describing the endpoint, exclusive with the <code>endpointUri</code> parameter</li>\n</ul>\n<p><strong>Processing semantics</strong>:</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 <code>artifactRoute</code> <em>starts with</em> canonical or artifact reference</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/></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/></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/></tr><tr><td>IN</td><td>terminologyEndpoint</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 terminology (i.e. valuesets, codesystems, naming systems, concept maps, and\nmembership testing) referenced by the Resource. If no terminology endpoint is\nsupplied, the evaluation will attempt to use the server on which the operation\nis being performed as the terminology server.</p>\n</div></td></tr><tr><td>OUT</td><td>return</td><td/><td>1..1</td><td><a href=\"http://hl7.org/fhir/R4/library.html\">Library</a></td><td/><td><div><p>The result of the requirements operation is a <em>module-definition</em> Library that\nreturns the computed effective requirements of the artifact.</p>\n</div></td></tr></table><div><p>The data requirements operation is used for dependency gathering, as a way to understand\nthe set of dependencies of a given artifact, as well as for data requirements determination,\nas a way to understand the complete set of data requirements for a given artifact, including\nterminology usage (code systems, value sets, and direct-reference codes), parameters, dependencies,\nand data requirements.</p>\n</div></div>"
  },
  "extension" : [
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg",
      "valueCode" : "cds"
    }
  ],
  "url" : "http://hl7.org/fhir/uv/crmi/OperationDefinition/crmi-profiled-operation-example",
  "version" : "1.0.0-ballot2",
  "name" : "CRMIDataRequirements",
  "title" : "CRMI Data Requirements",
  "status" : "draft",
  "kind" : "operation",
  "experimental" : false,
  "date" : "2023-03-12",
  "publisher" : "HL7 International / Clinical Decision Support",
  "contact" : [
    {
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://www.hl7.org/Special/committees/dss"
        }
      ]
    }
  ],
  "description" : "This operation definition is a copy of the CRMI Data Requirements operation but declaring conformance to the CRMI Artifact, Artifact Version Bindable, Artifact Endpoint Configurable, and Manifestable operation profiles.",
  "jurisdiction" : [
    {
      "coding" : [
        {
          "system" : "http://unstats.un.org/unsd/methods/m49/m49.htm",
          "code" : "001",
          "display" : "World"
        }
      ]
    }
  ],
  "code" : "data-requirements",
  "comment" : "The data requirements operation is used for dependency gathering, as a way to understand \nthe set of dependencies of a given artifact, as well as for data requirements determination, \nas a way to understand the complete set of data requirements for a given artifact, including \nterminology usage (code systems, value sets, and direct-reference codes), parameters, dependencies,\nand data requirements.",
  "resource" : [
    "ActivityDefinition",
    "CapabilityStatement",
    "ChargeItemDefinition",
    "CodeSystem",
    "CompartmentDefinition",
    "ConceptMap",
    "EffectEvidenceSynthesis",
    "EventDefinition",
    "Evidence",
    "EvidenceVariable",
    "ExampleScenario",
    "GraphDefinition",
    "ImplementationGuide",
    "Library",
    "Measure",
    "Medication",
    "MedicationKnowledge",
    "MessageDefinition",
    "NamingSystem",
    "OperationDefinition",
    "PlanDefinition",
    "Questionnaire",
    "ResearchDefinition",
    "ResearchElementDefinition",
    "RiskEvidenceSynthesis",
    "SearchParameter",
    "StructureDefinition",
    "StructureMap",
    "Substance",
    "TerminologyCapabilities",
    "TestScript",
    "ValueSet"
  ],
  "system" : false,
  "type" : true,
  "instance" : true,
  "parameter" : [
    {
      "name" : "id",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "The logical id of the canonical or artifact resource to analyze.",
      "type" : "string"
    },
    {
      "name" : "url",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "A canonical or artifact reference to a canonical resource.",
      "type" : "uri"
    },
    {
      "name" : "version",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "The version of the canonical or artifact resource to analyze",
      "type" : "string"
    },
    {
      "name" : "identifier",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "A business identifier of the canonical or artifact resource to be analyzed.",
      "type" : "string",
      "searchType" : "token"
    },
    {
      "name" : "expression",
      "use" : "in",
      "min" : 0,
      "max" : "*",
      "documentation" : "The name of a specific expression to be considered for analysis. If no\nexpressions are specified, the analysis is performed on the entire resource. If\nexpressions are specified, the analysis is performed only on the expressions\nspecified.",
      "type" : "string"
    },
    {
      "name" : "parameters",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Any input parameters for the artifact. If the artifact is a logic library, \nor references logic libraries, parameters defined in this input will be\nbound by name to parameters defined in the logic library (or referenced\nlibraries). If the logic library is a CQL library, parameter types are \nmapped to CQL as specified in the Using CQL with FHIR implementation guide. \nIf a parameter appears more than once in the input Parameters resource, \nit is represented with a List in the input CQL. If a parameter has parts, \nit is represented as a Tuple in the input CQL.",
      "type" : "Parameters"
    },
    {
      "name" : "artifactVersion",
      "use" : "in",
      "min" : 0,
      "max" : "*",
      "documentation" : "Specifies a version to use for a canonical or artifact resource if the artifact referencing \nthe resource does not already specify a version. The format is the same as a canonical URL:\n[url]|[version] - e.g. http://loinc.org|2.56 \n\nNote that this is a generalization of the `system-version` parameter to the $expand operation \nto apply to any canonical resource, including code systems.",
      "type" : "uri"
    },
    {
      "name" : "checkArtifactVersion",
      "use" : "in",
      "min" : 0,
      "max" : "*",
      "documentation" : "Edge Case: Specifies a version to use for a canonical or artifact resource. If the artifact referencing \nthe resource specifies a different version, an error is returned instead of the package. The\nformat is the same as a canonical URL: [url]|[version] - e.g. http://loinc.org|2.56 \n\nNote that this is a generalization of the `check-system-version` parameter to the $expand operation to \napply to any canonical resource, including code systems.",
      "type" : "uri"
    },
    {
      "name" : "forceArtifactVersion",
      "use" : "in",
      "min" : 0,
      "max" : "*",
      "documentation" : "Edge Case: Specifies a version to use for a canonical or artifact resource. This parameter overrides any\nspecified version in the artifact (and any artifacts it depends on). The\nformat is the same as a canonical URL: [system]|[version] - e.g.\nhttp://loinc.org|2.56. Note that this has obvious safety issues, in that it may\nresult in a value set expansion giving a different list of codes that is both\nwrong and unsafe, and implementers should only use this capability reluctantly.\n\nIt primarily exists to deal with situations where specifications have fallen\ninto decay as time passes. If the version of a canonical is overridden, the version used SHALL\nexplicitly be represented in the expansion parameters. \n\nNote that this is a generalization of the `force-system-version` parameter to the $expand operation \nto apply to any canonical resource, including code systems.",
      "type" : "uri"
    },
    {
      "name" : "manifest",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "Specifies an asset-collection library that defines version bindings for code\nsystems and other canonical resources referenced by the value set(s) being expanded\nand other canonical resources referenced by the artifact. When specified, code\nsystems and other canonical resources identified as `depends-on` related artifacts \nin the manifest library have the same meaning as specifying that code system or other\ncanonical version in the `system-version` parameter of an expand or the `canonicalVersion` \nparameter.",
      "type" : "canonical",
      "targetProfile" : [
        🔗 "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-manifestlibrary"
      ]
    },
    {
      "name" : "include",
      "use" : "in",
      "min" : 0,
      "max" : "*",
      "documentation" : "Specifies what contents should be included in the resulting package. The codes indicate which types of resources should be included, but note that\nthe set of possible resources is determined as all known (i.e. present on the server) dependencies and related artifacts. Possible\nvalues are:\n* all (default) - all resource types\n* artifact - the specified artifact\n* canonical - canonical resources (i.e. resources with a defined url element or that can be canonical resources using the artifact-url extension)\n* terminology - terminology resources (i.e. CodeSystem, ValueSet, NamingSystem, ConceptMap)\n* conformance - conformance resources (i.e. StructureDefinition, StructureMap, SearchParameter, CompartmentDefinition)\n* profiles - profile definitions (i.e. StructureDefinition resources that define profiles)\n* extensions - extension definitions (i.e. StructureDefinition resources that define extensions) \n* knowledge - knowledge artifacts (i.e. ActivityDefinition, Library, PlanDefinition, Measure, Questionnaire)\n* tests - test cases and data (i.e. test cases as defined by the testing specification in this implementation guide)\n* examples - example resources (i.e. resources identified as examples in the implementation guide)",
      "type" : "string"
    },
    {
      "name" : "artifactEndpointConfiguration",
      "use" : "in",
      "min" : 0,
      "max" : "*",
      "documentation" : "Configuration information to resolve canonical artifacts\n* `artifactRoute`: 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)\n* `endpointUri`: The URI of the endpoint, exclusive with the `endpoint` parameter\n* `endpoint`: An Endpoint resource describing the endpoint, exclusive with the `endpointUri` parameter\n\n**Processing 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 `artifactRoute` *starts with* canonical or artifact reference\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",
          "type" : "uri"
        },
        {
          "name" : "endpointUri",
          "use" : "in",
          "min" : 0,
          "max" : "1",
          "type" : "uri"
        },
        {
          "name" : "endpoint",
          "use" : "in",
          "min" : 0,
          "max" : "1",
          "type" : "Endpoint"
        }
      ]
    },
    {
      "name" : "terminologyEndpoint",
      "use" : "in",
      "min" : 0,
      "max" : "1",
      "documentation" : "An endpoint to use to access terminology (i.e. valuesets, codesystems, naming systems, concept maps, and\nmembership testing) referenced by the Resource. If no terminology endpoint is\nsupplied, the evaluation will attempt to use the server on which the operation\nis being performed as the terminology server.",
      "type" : "Endpoint"
    },
    {
      "name" : "return",
      "use" : "out",
      "min" : 1,
      "max" : "1",
      "documentation" : "The result of the requirements operation is a _module-definition_ Library that\nreturns the computed effective requirements of the artifact.",
      "type" : "Library"
    }
  ]
}