Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial expression x-fhir-query and revamp expressions #2045

Closed
wants to merge 11 commits into from
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.google.android.fhir.datacapture

import org.hl7.fhir.r4.model.Base
import org.hl7.fhir.r4.model.Expression

sealed class ContextVariable(
open val name: String
)

data class ContextVariableImmutable(
override val name: String,
val data: Base?
) : ContextVariable(name)

data class ContextVariableMutable(
override val name: String,
val expression: Expression,
var data: Base?
) : ContextVariable(name)

data class ContextVariableGroup(
override val name: String,
val expression: Expression,
var data: List<Base>
) : ContextVariable(name)

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,14 @@

package com.google.android.fhir.datacapture.extensions

import org.hl7.fhir.r4.model.CodeType
import org.hl7.fhir.r4.model.Expression

internal val Expression.isXFhirQuery: Boolean
get() = this.language == Expression.ExpressionLanguage.APPLICATION_XFHIRQUERY.toCode()

internal val Expression.isFhirPath: Boolean
get() = this.language == Expression.ExpressionLanguage.TEXT_FHIRPATH.toCode()

internal val fhirPathCode: CodeType
get() = CodeType(Expression.ExpressionLanguage.TEXT_FHIRPATH.toCode())
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.google.android.fhir.datacapture.extensions

import org.hl7.fhir.r4.model.Extension

internal val Extension.isRunOnceExpression: Boolean
get() = this.url == ITEM_INITIAL_EXPRESSION_URL || this.url == EXTENSION_ITEM_POPULATE_CONTEXT_URL
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,10 @@ internal const val EXTENSION_VARIABLE_URL = "http://hl7.org/fhir/StructureDefini
internal const val ITEM_INITIAL_EXPRESSION_URL: String =
"http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression"

internal const val EXTENSION_ITEM_POPULATE_CONTEXT_URL =
"http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-itemPopulationContext"


// ********************************************************************************************** //
// //
// Rendering extensions: item control, choice orientation, etc. //
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,18 @@ import org.hl7.fhir.r4.model.CodeType
import org.hl7.fhir.r4.model.Coding
import org.hl7.fhir.r4.model.DateTimeType
import org.hl7.fhir.r4.model.DateType
import org.hl7.fhir.r4.model.DecimalType
import org.hl7.fhir.r4.model.Enumerations.FHIRAllTypes
import org.hl7.fhir.r4.model.Expression
import org.hl7.fhir.r4.model.IdType
import org.hl7.fhir.r4.model.IntegerType
import org.hl7.fhir.r4.model.PrimitiveType
import org.hl7.fhir.r4.model.Quantity
import org.hl7.fhir.r4.model.Questionnaire
import org.hl7.fhir.r4.model.QuestionnaireResponse
import org.hl7.fhir.r4.model.Reference
import org.hl7.fhir.r4.model.StringType
import org.hl7.fhir.r4.model.TimeType
import org.hl7.fhir.r4.model.Type
import org.hl7.fhir.r4.model.UriType

Expand Down Expand Up @@ -137,3 +141,6 @@ fun Type.valueOrCalculateValue(): Type {
this
}
}

val Type.isNamedExpression: Boolean
get() = this.hasType(FHIRAllTypes.EXPRESSION.toCode()) && this.castToExpression(this).hasName()
Loading