HotBeverage FHIR Implementation Guide
1.4.2022 - release International flag

This page is part of the HotBeverage FHIR Implementation Guide (v1.4.2022: Release) based on FHIR R4. . For a full list of available versions, see the Directory of published versions

Resource Profile: The Hot Beverage to Brew

Official URL: http://fhir.org/guides/acme/HotBeverage/StructureDefinition/BrewedBeverage Version: 1.4.2022
Active as of 2022-03-29 Computable Name: BrewedBeverage

The parameters to be given to the device to make the requested Hot Beverage.

  • The Machine to make the beverage (optional)
  • The Beverage to be made (required)
  • The type of Milk to be included (optional)
  • The type of Syrup to be included (optional)
  • The type of Alcohol to be included (optional)
  • The type of Sweetener to be included (optional)
  • The type of Spice to be included (optional)
  • Is Coffee to be decaffeinated (shall be NoDecaf)

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

This structure is derived from Parameters

Summary

Mandatory: 4 elements (1 nested mandatory element)
Must-Support: 18 elements
Fixed Value: 9 elements

Slices

This structure defines the following Slices:

  • The element Parameters.parameter is sliced based on the value of value:name

This structure is derived from Parameters

NameFlagsCard.TypeDescription & Constraintsdoco
.. Parameters 0..*ParametersOperation Request or Response
... Slices for parameter 2..*BackboneElementOperation Parameter
Slice: Unordered, Open by value:name
.... parameter:device S0..1BackboneElementOperation Parameter
..... name 1..1stringMachine to make the beverage
Fixed Value: device
..... value[x] S0..1Reference(Device)If parameter is a data type
.... parameter:beverageType S1..1BackboneElementOperation Parameter
..... name 1..1stringBeverage to be made
Fixed Value: beverageType
..... value[x] S1..1codeIf parameter is a data type
Binding: Hot Beverages Value Set (example)
.... parameter:milkType S0..1BackboneElementOperation Parameter
..... name 1..1stringMilk to be included
Fixed Value: milkType
..... value[x] S0..1codeIf parameter is a data type
Binding: Milk Additive Value Set (example)
.... parameter:syrupType S0..*BackboneElementOperation Parameter
..... name 1..1stringSyrup to be included
Fixed Value: syrupType
..... value[x] S0..1codeIf parameter is a data type
Binding: Syrup Additive Value Set (example)
.... parameter:alcoholType S0..*BackboneElementOperation Parameter
..... name 1..1stringAlcohol to be included
Fixed Value: alcoholType
..... value[x] S0..1codeIf parameter is a data type
Binding: Alcohol Additive Value Set (example)
.... parameter:sweetenerType S0..*BackboneElementOperation Parameter
..... name 1..1stringSweetener to be included
Fixed Value: sweetenerType
..... value[x] S0..1codeIf parameter is a data type
Binding: Sweeteners Additive Value Set (example)
.... parameter:spiceType S0..*BackboneElementOperation Parameter
..... name 1..1stringSpice to be included
Fixed Value: spiceType
..... value[x] S0..1codeIf parameter is a data type
Binding: Spice Additive Value Set (example)
.... parameter:drinkSize S1..1BackboneElementOperation Parameter
..... name 1..1stringSize of Drink requested
Fixed Value: drinkSize
..... value[x] S1..1codeIf parameter is a data type
Binding: Size of Beverage to be Consumed (example)
.... parameter:decaffeinated S0..1BackboneElementOperation Parameter
..... name 1..1stringIs Coffee to be decaffeinated
Fixed Value: decaffeinated
..... value[x] S1..1codeIf parameter is a data type
Binding: Decaf is for the weak (required)

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Parameters 0..*ParametersOperation Request or Response
... id Σ0..1stringLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... Slices for parameter ΣI2..*BackboneElementOperation Parameter
Slice: Unordered, Open by value:name
.... parameter:All Slices Content/Rules for all slices
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringName from the definition
..... value[x] ΣI0..1If parameter is a data type
...... valueBase64Binarybase64Binary
...... valueBooleanboolean
...... valueCanonicalcanonical(Any)
...... valueCodecode
...... valueDatedate
...... valueDateTimedateTime
...... valueDecimaldecimal
...... valueIdid
...... valueInstantinstant
...... valueIntegerinteger
...... valueMarkdownmarkdown
...... valueOidoid
...... valuePositiveIntpositiveInt
...... valueStringstring
...... valueTimetime
...... valueUnsignedIntunsignedInt
...... valueUriuri
...... valueUrlurl
...... valueUuiduuid
...... valueAddressAddress
...... valueAgeAge
...... valueAnnotationAnnotation
...... valueAttachmentAttachment
...... valueCodeableConceptCodeableConcept
...... valueCodingCoding
...... valueContactPointContactPoint
...... valueCountCount
...... valueDistanceDistance
...... valueDurationDuration
...... valueHumanNameHumanName
...... valueIdentifierIdentifier
...... valueMoneyMoney
...... valuePeriodPeriod
...... valueQuantityQuantity
...... valueRangeRange
...... valueRatioRatio
...... valueReferenceReference(Any)
...... valueSampledDataSampledData
...... valueSignatureSignature
...... valueTimingTiming
...... valueContactDetailContactDetail
...... valueContributorContributor
...... valueDataRequirementDataRequirement
...... valueExpressionExpression
...... valueParameterDefinitionParameterDefinition
...... valueRelatedArtifactRelatedArtifact
...... valueTriggerDefinitionTriggerDefinition
...... valueUsageContextUsageContext
...... valueDosageDosage
...... valueMetaMeta
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter
.... parameter:device SΣI0..1BackboneElementOperation Parameter
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringMachine to make the beverage
Fixed Value: device
..... value[x] SΣI0..1Reference(Device)If parameter is a data type
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter
.... parameter:beverageType SΣI1..1BackboneElementOperation Parameter
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringBeverage to be made
Fixed Value: beverageType
..... value[x] SΣI1..1codeIf parameter is a data type
Binding: Hot Beverages Value Set (example)
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter
.... parameter:milkType SΣI0..1BackboneElementOperation Parameter
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringMilk to be included
Fixed Value: milkType
..... value[x] SΣI0..1codeIf parameter is a data type
Binding: Milk Additive Value Set (example)
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter
.... parameter:syrupType SΣI0..*BackboneElementOperation Parameter
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringSyrup to be included
Fixed Value: syrupType
..... value[x] SΣI0..1codeIf parameter is a data type
Binding: Syrup Additive Value Set (example)
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter
.... parameter:alcoholType SΣI0..*BackboneElementOperation Parameter
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringAlcohol to be included
Fixed Value: alcoholType
..... value[x] SΣI0..1codeIf parameter is a data type
Binding: Alcohol Additive Value Set (example)
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter
.... parameter:sweetenerType SΣI0..*BackboneElementOperation Parameter
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringSweetener to be included
Fixed Value: sweetenerType
..... value[x] SΣI0..1codeIf parameter is a data type
Binding: Sweeteners Additive Value Set (example)
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter
.... parameter:spiceType SΣI0..*BackboneElementOperation Parameter
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringSpice to be included
Fixed Value: spiceType
..... value[x] SΣI0..1codeIf parameter is a data type
Binding: Spice Additive Value Set (example)
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter
.... parameter:drinkSize SΣI1..1BackboneElementOperation Parameter
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringSize of Drink requested
Fixed Value: drinkSize
..... value[x] SΣI1..1codeIf parameter is a data type
Binding: Size of Beverage to be Consumed (example)
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter
.... parameter:decaffeinated SΣI0..1BackboneElementOperation Parameter
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringIs Coffee to be decaffeinated
Fixed Value: decaffeinated
..... value[x] SΣI1..1codeIf parameter is a data type
Binding: Decaf is for the weak (required)
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Parameters 0..*ParametersOperation Request or Response
... parameter:device ΣI0..1BackboneElementOperation Parameter
.... value[x] ΣI0..1Reference(Device)If parameter is a data type
... parameter:beverageType ΣI1..1BackboneElementOperation Parameter
.... value[x] ΣI1..1codeIf parameter is a data type
Binding: Hot Beverages Value Set (example)
... parameter:milkType ΣI0..1BackboneElementOperation Parameter
.... value[x] ΣI0..1codeIf parameter is a data type
Binding: Milk Additive Value Set (example)
.... value[x] ΣI0..1codeIf parameter is a data type
Binding: Syrup Additive Value Set (example)
... parameter:alcoholType ΣI0..*BackboneElementOperation Parameter
.... value[x] ΣI0..1codeIf parameter is a data type
Binding: Alcohol Additive Value Set (example)
... parameter:sweetenerType ΣI0..*BackboneElementOperation Parameter
.... value[x] ΣI0..1codeIf parameter is a data type
Binding: Sweeteners Additive Value Set (example)
... parameter:spiceType ΣI0..*BackboneElementOperation Parameter
.... value[x] ΣI0..1codeIf parameter is a data type
Binding: Spice Additive Value Set (example)
... parameter:drinkSize ΣI1..1BackboneElementOperation Parameter
.... value[x] ΣI1..1codeIf parameter is a data type
Binding: Size of Beverage to be Consumed (example)
... parameter:decaffeinated ΣI0..1BackboneElementOperation Parameter
.... value[x] ΣI1..1codeIf parameter is a data type
Binding: Decaf is for the weak (required)

doco Documentation for this format

This structure is derived from Parameters

Summary

Mandatory: 4 elements (1 nested mandatory element)
Must-Support: 18 elements
Fixed Value: 9 elements

Slices

This structure defines the following Slices:

  • The element Parameters.parameter is sliced based on the value of value:name

Differential View

This structure is derived from Parameters

NameFlagsCard.TypeDescription & Constraintsdoco
.. Parameters 0..*ParametersOperation Request or Response
... Slices for parameter 2..*BackboneElementOperation Parameter
Slice: Unordered, Open by value:name
.... parameter:device S0..1BackboneElementOperation Parameter
..... name 1..1stringMachine to make the beverage
Fixed Value: device
..... value[x] S0..1Reference(Device)If parameter is a data type
.... parameter:beverageType S1..1BackboneElementOperation Parameter
..... name 1..1stringBeverage to be made
Fixed Value: beverageType
..... value[x] S1..1codeIf parameter is a data type
Binding: Hot Beverages Value Set (example)
.... parameter:milkType S0..1BackboneElementOperation Parameter
..... name 1..1stringMilk to be included
Fixed Value: milkType
..... value[x] S0..1codeIf parameter is a data type
Binding: Milk Additive Value Set (example)
.... parameter:syrupType S0..*BackboneElementOperation Parameter
..... name 1..1stringSyrup to be included
Fixed Value: syrupType
..... value[x] S0..1codeIf parameter is a data type
Binding: Syrup Additive Value Set (example)
.... parameter:alcoholType S0..*BackboneElementOperation Parameter
..... name 1..1stringAlcohol to be included
Fixed Value: alcoholType
..... value[x] S0..1codeIf parameter is a data type
Binding: Alcohol Additive Value Set (example)
.... parameter:sweetenerType S0..*BackboneElementOperation Parameter
..... name 1..1stringSweetener to be included
Fixed Value: sweetenerType
..... value[x] S0..1codeIf parameter is a data type
Binding: Sweeteners Additive Value Set (example)
.... parameter:spiceType S0..*BackboneElementOperation Parameter
..... name 1..1stringSpice to be included
Fixed Value: spiceType
..... value[x] S0..1codeIf parameter is a data type
Binding: Spice Additive Value Set (example)
.... parameter:drinkSize S1..1BackboneElementOperation Parameter
..... name 1..1stringSize of Drink requested
Fixed Value: drinkSize
..... value[x] S1..1codeIf parameter is a data type
Binding: Size of Beverage to be Consumed (example)
.... parameter:decaffeinated S0..1BackboneElementOperation Parameter
..... name 1..1stringIs Coffee to be decaffeinated
Fixed Value: decaffeinated
..... value[x] S1..1codeIf parameter is a data type
Binding: Decaf is for the weak (required)

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Parameters 0..*ParametersOperation Request or Response
... id Σ0..1stringLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... Slices for parameter ΣI2..*BackboneElementOperation Parameter
Slice: Unordered, Open by value:name
.... parameter:All Slices Content/Rules for all slices
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringName from the definition
..... value[x] ΣI0..1If parameter is a data type
...... valueBase64Binarybase64Binary
...... valueBooleanboolean
...... valueCanonicalcanonical(Any)
...... valueCodecode
...... valueDatedate
...... valueDateTimedateTime
...... valueDecimaldecimal
...... valueIdid
...... valueInstantinstant
...... valueIntegerinteger
...... valueMarkdownmarkdown
...... valueOidoid
...... valuePositiveIntpositiveInt
...... valueStringstring
...... valueTimetime
...... valueUnsignedIntunsignedInt
...... valueUriuri
...... valueUrlurl
...... valueUuiduuid
...... valueAddressAddress
...... valueAgeAge
...... valueAnnotationAnnotation
...... valueAttachmentAttachment
...... valueCodeableConceptCodeableConcept
...... valueCodingCoding
...... valueContactPointContactPoint
...... valueCountCount
...... valueDistanceDistance
...... valueDurationDuration
...... valueHumanNameHumanName
...... valueIdentifierIdentifier
...... valueMoneyMoney
...... valuePeriodPeriod
...... valueQuantityQuantity
...... valueRangeRange
...... valueRatioRatio
...... valueReferenceReference(Any)
...... valueSampledDataSampledData
...... valueSignatureSignature
...... valueTimingTiming
...... valueContactDetailContactDetail
...... valueContributorContributor
...... valueDataRequirementDataRequirement
...... valueExpressionExpression
...... valueParameterDefinitionParameterDefinition
...... valueRelatedArtifactRelatedArtifact
...... valueTriggerDefinitionTriggerDefinition
...... valueUsageContextUsageContext
...... valueDosageDosage
...... valueMetaMeta
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter
.... parameter:device SΣI0..1BackboneElementOperation Parameter
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringMachine to make the beverage
Fixed Value: device
..... value[x] SΣI0..1Reference(Device)If parameter is a data type
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter
.... parameter:beverageType SΣI1..1BackboneElementOperation Parameter
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringBeverage to be made
Fixed Value: beverageType
..... value[x] SΣI1..1codeIf parameter is a data type
Binding: Hot Beverages Value Set (example)
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter
.... parameter:milkType SΣI0..1BackboneElementOperation Parameter
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringMilk to be included
Fixed Value: milkType
..... value[x] SΣI0..1codeIf parameter is a data type
Binding: Milk Additive Value Set (example)
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter
.... parameter:syrupType SΣI0..*BackboneElementOperation Parameter
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringSyrup to be included
Fixed Value: syrupType
..... value[x] SΣI0..1codeIf parameter is a data type
Binding: Syrup Additive Value Set (example)
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter
.... parameter:alcoholType SΣI0..*BackboneElementOperation Parameter
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringAlcohol to be included
Fixed Value: alcoholType
..... value[x] SΣI0..1codeIf parameter is a data type
Binding: Alcohol Additive Value Set (example)
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter
.... parameter:sweetenerType SΣI0..*BackboneElementOperation Parameter
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringSweetener to be included
Fixed Value: sweetenerType
..... value[x] SΣI0..1codeIf parameter is a data type
Binding: Sweeteners Additive Value Set (example)
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter
.... parameter:spiceType SΣI0..*BackboneElementOperation Parameter
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringSpice to be included
Fixed Value: spiceType
..... value[x] SΣI0..1codeIf parameter is a data type
Binding: Spice Additive Value Set (example)
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter
.... parameter:drinkSize SΣI1..1BackboneElementOperation Parameter
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringSize of Drink requested
Fixed Value: drinkSize
..... value[x] SΣI1..1codeIf parameter is a data type
Binding: Size of Beverage to be Consumed (example)
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter
.... parameter:decaffeinated SΣI0..1BackboneElementOperation Parameter
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored even if unrecognized
..... name Σ1..1stringIs Coffee to be decaffeinated
Fixed Value: decaffeinated
..... value[x] SΣI1..1codeIf parameter is a data type
Binding: Decaf is for the weak (required)
..... resource ΣI0..1ResourceIf parameter is a whole resource
..... part Σ0..*See parameter (Parameters)Named part of a multi-part parameter

doco Documentation for this format

 

Other representations of profile: CSV, Excel, Schematron

Terminology Bindings

PathConformanceValueSet
Parameters.languagepreferredCommonLanguages
Max Binding: AllLanguages
Parameters.parameter:beverageType.value[x]exampleHBBeverageVS
Parameters.parameter:milkType.value[x]exampleHBMilkVS
Parameters.parameter:syrupType.value[x]exampleHBSyrupVS
Parameters.parameter:alcoholType.value[x]exampleHBAlcoholVS
Parameters.parameter:sweetenerType.value[x]exampleHBSweetenersVS
Parameters.parameter:spiceType.value[x]exampleHBSpiceVS
Parameters.parameter:drinkSize.value[x]exampleHBDrinkSizeVS
Parameters.parameter:decaffeinated.value[x]requiredNoDecaf