FHIR CI-Build

This is the Continuous Integration Build of FHIR (will be incorrect/inconsistent at times).
See the Directory of published versions

Operationdefinition.shex

Responsible Owner: FHIR Infrastructure Work GroupStandards Status: InformativeCompartments: No defined compartments

Raw ShEx

ShEx statement for operationdefinition

PREFIX fhir: <http://hl7.org/fhir/> 
PREFIX fhirvs: <http://hl7.org/fhir/ValueSet/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 

# ShEx Version 2.2
IMPORT <Uri.shex>
IMPORT <Code.shex>
IMPORT <String.shex>
IMPORT <Coding.shex>
IMPORT <Boolean.shex>
IMPORT <DateTime.shex>
IMPORT <Markdown.shex>
IMPORT <Canonical.shex>
IMPORT <Identifier.shex>
IMPORT <UnsignedInt.shex>
IMPORT <UsageContext.shex>
IMPORT <ContactDetail.shex>
IMPORT <DomainResource.shex>
IMPORT <CodeableConcept.shex>
IMPORT <BackboneElement.shex>

start=@<OperationDefinition> AND {fhir:nodeRole [fhir:treeRoot]}

# Definition of an operation or a named query
<OperationDefinition> EXTENDS @<DomainResource> CLOSED {   
    a [fhir:OperationDefinition]?;fhir:nodeRole [fhir:treeRoot]?;

    fhir:url @<Uri>?;                       # Canonical identifier for this 
                                            # operation definition, represented 
                                            # as an absolute URI (globally 
                                            # unique) 
    fhir:identifier @<OneOrMore_Identifier>?;  # Additional identifier for the 
                                            # implementation guide (business 
                                            # identifier) 
    fhir:version @<String>?;                # Business version of the operation 
                                            # definition 
    fhir:versionAlgorithm @<String>  OR 
    			@<Coding>  ?;  # How to compare versions
    fhir:name @<String>;                    # Name for this operation definition 
                                            # (computer friendly) 
    fhir:title @<String>?;                  # Name for this operation definition 
                                            # (human friendly) 
    fhir:status @<Code> AND
    	{fhir:v @fhirvs:publication-status};  # draft | active | retired | unknown
    fhir:kind @<Code> AND
    	{fhir:v @fhirvs:operation-kind};  # operation | query
    fhir:experimental @<Boolean>?;          # For testing only - never for real 
                                            # usage 
    fhir:date @<DateTime>?;                 # Date last changed
    fhir:publisher @<String>?;              # Name of the publisher/steward 
                                            # (organization or individual) 
    fhir:contact @<OneOrMore_ContactDetail>?;  # Contact details for the publisher
    fhir:description @<Markdown>?;          # Natural language description of 
                                            # the operation definition 
    fhir:useContext @<OneOrMore_UsageContext>?;  # The context that the content is 
                                            # intended to support 
    fhir:jurisdiction @<OneOrMore_CodeableConcept>?;  # Jurisdiction of the authority that 
                                            # maintains the operation definition 
                                            # (if applicable) 
    fhir:purpose @<Markdown>?;              # Why this operation definition is 
                                            # defined 
    fhir:copyright @<Markdown>?;            # Notice about intellectual property 
                                            # ownership, can include 
                                            # restrictions on use 
    fhir:copyrightLabel @<String>?;         # Copyright holder and year(s)
    fhir:affectsState @<Boolean>?;          # Whether content is changed by the 
                                            # operation 
    fhir:synchronicity @<Code> AND
    	{fhir:v @fhirvs:synchronicity-control}?;  # synchronous | asynchronous | either
    fhir:code @<Code>;                      # Recommended name for operation in 
                                            # search url 
    fhir:comment @<Markdown>?;              # Additional information about use
    fhir:base @<Canonical>?;                # Marks this as a profile of the base
    fhir:resource @<OneOrMore_Code> AND
    	{fhir:v @fhirvs:version-independent-all-resource-types}?;  # Types this operation applies to
    fhir:system @<Boolean>;                 # Invoke at the system level?
    fhir:type @<Boolean>;                   # Invoke at the type level?
    fhir:instance @<Boolean>;               # Invoke on an instance?
    fhir:inputProfile @<Canonical>?;        # Validation information for in 
                                            # parameters 
    fhir:outputProfile @<Canonical>?;       # Validation information for out 
                                            # parameters 
    fhir:parameter @<OneOrMore_OperationDefinition.parameter>?;  # Parameters for the operation/query
    fhir:overload @<OneOrMore_OperationDefinition.overload>?;  # Define overloaded variants for 
                                            # when  generating code 
}  

# References to this parameter
<OperationDefinition.parameter.referencedFrom> EXTENDS @<BackboneElement> CLOSED {   
    fhir:source @<String>;                  # Referencing parameter
    fhir:sourceId @<String>?;               # Element id of reference
}  

# ValueSet details if this is coded
<OperationDefinition.parameter.binding> EXTENDS @<BackboneElement> CLOSED {   
    fhir:strength @<Code> AND
    	{fhir:v @fhirvs:binding-strength};  # required | extensible | preferred 
                                            # | example | descriptive 
    fhir:valueSet @<Canonical>;             # Source of value set
}  

# Define overloaded variants for when  generating code
<OperationDefinition.overload> EXTENDS @<BackboneElement> CLOSED {   
    fhir:parameterName @<OneOrMore_String>?;  # Name of parameter to include in 
                                            # overload 
    fhir:comment @<String>?;                # Comments to go on overload
}  

# Parts of a nested Parameter
<OperationDefinition.parameter.partnull> CLOSED {   
}  

# Parameters for the operation/query
<OperationDefinition.parameter> EXTENDS @<BackboneElement> CLOSED {   
    fhir:name @<Code>;                      # Name in Parameters.parameter.name 
                                            # or in URL 
    fhir:use @<Code> AND
    	{fhir:v @fhirvs:operation-parameter-use};  # in | out
    fhir:scope @<OneOrMore_Code> AND
    	{fhir:v @fhirvs:operation-parameter-scope}?;  # instance | type | system
    fhir:min @<UnsignedInt>;                # Minimum Cardinality
    fhir:max @<String>;                     # Maximum Cardinality (a number or *)
    fhir:documentation @<Markdown>?;        # Description of meaning/use
    fhir:type @<Code> AND
    	{fhir:v @fhirvs:fhir-types}?;  # What type this parameter has
    fhir:allowedType @<OneOrMore_Code> AND
    	{fhir:v @fhirvs:fhir-types}?;  # Allowed sub-type this parameter 
                                            # can have (if type is abstract) 
    fhir:targetProfile @<OneOrMore_Canonical>?;  # If type is Reference | canonical, 
                                            # allowed targets. If type is 
                                            # 'Resource', then this constrains 
                                            # the allowed resource types 
    fhir:searchType @<Code> AND
    	{fhir:v @fhirvs:search-param-type}?;  # number | date | string | token | 
                                            # reference | composite | quantity | 
                                            # uri | special | resource 
    fhir:binding @<OperationDefinition.parameter.binding>?;  # ValueSet details if this is coded
    fhir:referencedFrom @<OneOrMore_OperationDefinition.parameter.referencedFrom>?;  # References to this parameter
    fhir:part @<OneOrMore_OperationDefinition.parameter>?;  # Parts of a nested Parameter
}  

#---------------------- Cardinality Types (OneOrMore) -------------------
<OneOrMore_Identifier> CLOSED {
    rdf:first @<Identifier>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Identifier> 
}
<OneOrMore_ContactDetail> CLOSED {
    rdf:first @<ContactDetail>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_ContactDetail> 
}
<OneOrMore_UsageContext> CLOSED {
    rdf:first @<UsageContext>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_UsageContext> 
}
<OneOrMore_CodeableConcept> CLOSED {
    rdf:first @<CodeableConcept>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_CodeableConcept> 
}
<OneOrMore_Code> CLOSED {
    rdf:first @<Code>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Code> 
}
<OneOrMore_OperationDefinition.parameter> CLOSED {
    rdf:first @<OperationDefinition.parameter>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_OperationDefinition.parameter> 
}
<OneOrMore_OperationDefinition.overload> CLOSED {
    rdf:first @<OperationDefinition.overload>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_OperationDefinition.overload> 
}
<OneOrMore_String> CLOSED {
    rdf:first @<String>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_String> 
}
<OneOrMore_Canonical> CLOSED {
    rdf:first @<Canonical>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Canonical> 
}
<OneOrMore_OperationDefinition.parameter.referencedFrom> CLOSED {
    rdf:first @<OperationDefinition.parameter.referencedFrom>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_OperationDefinition.parameter.referencedFrom> 
}

#---------------------- Value Sets ------------------------

# Indication of the degree of conformance expectations associated with a binding.
fhirvs:binding-strength ["required" "extensible" "preferred" "example" "descriptive"]

# All FHIR types
fhirvs:fhir-types ["Base" "Element" "BackboneElement" "DataType" "Address" "Annotation" "Attachment" "Availability" "BackboneType" "Dosage" "DosageCondition" "DosageDetails" "DosageSafety" "ElementDefinition" "MarketingStatus" "ProductShelfLife" "RelativeTime" "Timing" "CodeableConcept" "CodeableReference" "Coding" "ContactDetail" "ContactPoint" "DataRequirement" "Expression" "ExtendedContactDetail" "Extension" "HumanName" "Identifier" "Meta" "MonetaryComponent" "Money" "Narrative" "ParameterDefinition" "Period" "PrimitiveType" "base64Binary" "boolean" "date" "dateTime" "decimal" "instant" "integer" "positiveInt" "unsignedInt" "integer64" "string" "code" "id" "markdown" "time" "uri" "canonical" "oid" "url" "uuid" "Quantity" "Age" "Count" "Distance" "Duration" "Range" "Ratio" "RatioRange" "Reference" "RelatedArtifact" "SampledData" "Signature" "TriggerDefinition" "UsageContext" "VirtualServiceDetail" "xhtml" "Resource" "Binary" "Bundle" "DomainResource" "Account" "ActivityDefinition" "ActorDefinition" "AdministrableProductDefinition" "AdverseEvent" "AllergyIntolerance" "Appointment" "AppointmentResponse" "ArtifactAssessment" "AuditEvent" "Basic" "BiologicallyDerivedProduct" "BodyStructure" "CanonicalResource" "CapabilityStatement" "CarePlan" "CareTeam" "Claim" "ClaimResponse" "ClinicalUseDefinition" "CodeSystem" "Communication" "CommunicationRequest" "CompartmentDefinition" "Composition" "ConceptMap" "Condition" "Consent" "Contract" "Coverage" "CoverageEligibilityRequest" "CoverageEligibilityResponse" "DetectedIssue" "Device" "DeviceAlert" "DeviceAssociation" "DeviceDefinition" "DeviceMetric" "DeviceRequest" "DiagnosticReport" "DocumentReference" "Encounter" "Endpoint" "EnrollmentRequest" "EnrollmentResponse" "EpisodeOfCare" "EventDefinition" "Evidence" "EvidenceVariable" "ExampleScenario" "ExplanationOfBenefit" "FamilyMemberHistory" "Flag" "Goal" "Group" "GuidanceResponse" "HealthcareService" "ImagingSelection" "ImagingStudy" "Immunization" "ImplementationGuide" "Ingredient" "InsurancePlan" "InsuranceProduct" "Invoice" "Library" "List" "Location" "ManufacturedItemDefinition" "Measure" "MeasureReport" "Medication" "MedicationAdministration" "MedicationDispense" "MedicationRequest" "MedicationStatement" "MedicinalProductDefinition" "MessageDefinition" "MessageHeader" "MetadataResource" "NamingSystem" "NutritionIntake" "NutritionOrder" "NutritionProduct" "Observation" "ObservationDefinition" "OperationDefinition" "OperationOutcome" "Organization" "OrganizationAffiliation" "PackagedProductDefinition" "Patient" "PaymentNotice" "PaymentReconciliation" "Person" "PlanDefinition" "Practitioner" "PractitionerRole" "Procedure" "Provenance" "Questionnaire" "QuestionnaireResponse" "RegulatedAuthorization" "RelatedPerson" "RequestOrchestration" "Requirements" "ResearchStudy" "ResearchSubject" "RiskAssessment" "Schedule" "SearchParameter" "ServiceRequest" "Slot" "Specimen" "SpecimenDefinition" "StructureDefinition" "StructureMap" "Subscription" "SubscriptionStatus" "SubscriptionTopic" "Substance" "SubstanceDefinition" "Task" "TerminologyCapabilities" "ValueSet" "VisionPrescription" "Parameters"]

# Whether an operation is a normal operation or a query.
fhirvs:operation-kind ["operation" "query"]

# Indicates that a parameter applies when the operation is being invoked at the specified level
fhirvs:operation-parameter-scope ["instance" "type" "system"]

# Whether an operation parameter is an input or an output parameter.
fhirvs:operation-parameter-use ["in" "out"]

# The lifecycle status of an artifact.
fhirvs:publication-status ["draft" "active" "retired" "unknown"]

# Data types allowed to be used for search parameters.
fhirvs:search-param-type ["number" "date" "string" "token" "reference" "composite" "quantity" "uri" "special" "resource"]

# Indicates that an operation must always be handled as synchronous or asynchronous, or that the server must provide both, and clients can choose
fhirvs:synchronicity-control ["synchronous" "asynchronous" "either"]

# Current and past FHIR resource types (deleted or renamed), including abstract types
fhirvs:version-independent-all-resource-types ["Account" "ActivityDefinition" "ActorDefinition" "AdministrableProductDefinition" "AdverseEvent" "AllergyIntolerance" "Appointment" "AppointmentResponse" "ArtifactAssessment" "AuditEvent" "Basic" "Binary" "BiologicallyDerivedProduct" "BodyStructure" "Bundle" "CanonicalResource" "CapabilityStatement" "CarePlan" "CareTeam" "Claim" "ClaimResponse" "ClinicalUseDefinition" "CodeSystem" "Communication" "CommunicationRequest" "CompartmentDefinition" "Composition" "ConceptMap" "Condition" "Consent" "Contract" "Coverage" "CoverageEligibilityRequest" "CoverageEligibilityResponse" "DetectedIssue" "Device" "DeviceAlert" "DeviceAssociation" "DeviceDefinition" "DeviceMetric" "DeviceRequest" "DiagnosticReport" "DocumentReference" "DomainResource" "Encounter" "Endpoint" "EnrollmentRequest" "EnrollmentResponse" "EpisodeOfCare" "EventDefinition" "Evidence" "EvidenceVariable" "ExampleScenario" "ExplanationOfBenefit" "FamilyMemberHistory" "Flag" "Goal" "Group" "GuidanceResponse" "HealthcareService" "ImagingSelection" "ImagingStudy" "Immunization" "ImplementationGuide" "Ingredient" "InsurancePlan" "InsuranceProduct" "Invoice" "Library" "List" "Location" "ManufacturedItemDefinition" "Measure" "MeasureReport" "Medication" "MedicationAdministration" "MedicationDispense" "MedicationRequest" "MedicationStatement" "MedicinalProductDefinition" "MessageDefinition" "MessageHeader" "MetadataResource" "NamingSystem" "NutritionIntake" "NutritionOrder" "NutritionProduct" "Observation" "ObservationDefinition" "OperationDefinition" "OperationOutcome" "Organization" "OrganizationAffiliation" "PackagedProductDefinition" "Parameters" "Patient" "PaymentNotice" "PaymentReconciliation" "Person" "PlanDefinition" "Practitioner" "PractitionerRole" "Procedure" "Provenance" "Questionnaire" "QuestionnaireResponse" "RegulatedAuthorization" "RelatedPerson" "RequestOrchestration" "Requirements" "ResearchStudy" "ResearchSubject" "Resource" "RiskAssessment" "Schedule" "SearchParameter" "ServiceRequest" "Slot" "Specimen" "SpecimenDefinition" "StructureDefinition" "StructureMap" "Subscription" "SubscriptionStatus" "SubscriptionTopic" "Substance" "SubstanceDefinition" "Task" "TerminologyCapabilities" "ValueSet" "VisionPrescription" "BodySite" "CatalogEntry" "Conformance" "DataElement" "DeviceComponent" "DeviceUseRequest" "DeviceUseStatement" "DiagnosticOrder" "DocumentManifest" "EffectEvidenceSynthesis" "EligibilityRequest" "EligibilityResponse" "ExpansionProfile" "ImagingManifest" "ImagingObjectSelection" "Media" "MedicationOrder" "MedicationUsage" "MedicinalProduct" "MedicinalProductAuthorization" "MedicinalProductContraindication" "MedicinalProductIndication" "MedicinalProductIngredient" "MedicinalProductInteraction" "MedicinalProductManufactured" "MedicinalProductPackaged" "MedicinalProductPharmaceutical" "MedicinalProductUndesirableEffect" "Order" "OrderResponse" "ProcedureRequest" "ProcessRequest" "ProcessResponse" "ReferralRequest" "RequestGroup" "ResearchDefinition" "ResearchElementDefinition" "RiskEvidenceSynthesis" "Sequence" "ServiceDefinition" "SubstanceSpecification"]


Usage note: every effort has been made to ensure that the ShEx files are correct and useful, but they are not a normative part of the specification.