Skip to content

Commit 8740715

Browse files
AlexJSullyCopybara
andauthored
Implement All() (#14)
Implemented [All()](https://hl7.org/fhirpath/N1/#allcriteria-expression-boolean) method. GitOrigin-RevId: 2f02d84cf66a9454c7d4901ac26602029dc7ea04 --- In addition, this PR includes the following: - @YoungInHan `Join()` and `WithExperimentalFuncs` under `experimentalTable` Co-authored-by: Copybara <[email protected]>
1 parent 009a1a5 commit 8740715

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+1832
-88
lines changed

fhirpath/compopts/compopts.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ package compopts
99
import (
1010
"errors"
1111

12+
"github.com/verily-src/fhirpath-go/fhirpath/internal/funcs"
1213
"github.com/verily-src/fhirpath-go/fhirpath/internal/opts"
1314
"github.com/verily-src/fhirpath-go/fhirpath/internal/parser"
1415
)
@@ -53,3 +54,12 @@ func Permissive() opts.CompileOption {
5354
return nil
5455
})
5556
}
57+
58+
// WithExperimentalFuncs is an option that enables experimental functions not
59+
// in the N1 Normative specification.
60+
func WithExperimentalFuncs() opts.CompileOption {
61+
return opts.Transform(func(cfg *opts.CompileConfig) error {
62+
cfg.Table = funcs.AddExperimentalFuncs(cfg.Table)
63+
return nil
64+
})
65+
}

fhirpath/evalopts/evalopts.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import (
1111
"fmt"
1212
"time"
1313

14-
"github.com/verily-src/fhirpath-go/internal/fhir"
1514
"github.com/verily-src/fhirpath-go/fhirpath/internal/opts"
1615
"github.com/verily-src/fhirpath-go/fhirpath/system"
16+
"github.com/verily-src/fhirpath-go/internal/fhir"
1717
)
1818

1919
var (

fhirpath/fhirpath.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ package fhirpath
33
import (
44
"errors"
55

6-
"github.com/verily-src/fhirpath-go/internal/slices"
7-
"github.com/verily-src/fhirpath-go/internal/fhir"
86
"github.com/verily-src/fhirpath-go/fhirpath/evalopts"
97
"github.com/verily-src/fhirpath-go/fhirpath/internal/compile"
108
"github.com/verily-src/fhirpath-go/fhirpath/internal/expr"
119
"github.com/verily-src/fhirpath-go/fhirpath/internal/opts"
1210
"github.com/verily-src/fhirpath-go/fhirpath/internal/parser"
1311
"github.com/verily-src/fhirpath-go/fhirpath/system"
12+
"github.com/verily-src/fhirpath-go/internal/fhir"
13+
"github.com/verily-src/fhirpath-go/internal/slices"
1414
)
1515

1616
var (

fhirpath/fhirpath_expression_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ import (
55
"math"
66
"testing"
77

8-
"github.com/verily-src/fhirpath-go/internal/fhir"
98
"github.com/verily-src/fhirpath-go/fhirpath"
109
"github.com/verily-src/fhirpath-go/fhirpath/fhirpathtest"
1110
"github.com/verily-src/fhirpath-go/fhirpath/system"
11+
"github.com/verily-src/fhirpath-go/internal/fhir"
1212
)
1313

1414
func TestExpressionString(t *testing.T) {

fhirpath/fhirpath_test.go

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ import (
1818
"github.com/google/go-cmp/cmp"
1919
"github.com/google/go-cmp/cmp/cmpopts"
2020
"github.com/shopspring/decimal"
21-
"github.com/verily-src/fhirpath-go/internal/fhir"
22-
"github.com/verily-src/fhirpath-go/internal/element/extension"
23-
"github.com/verily-src/fhirpath-go/internal/element/reference"
24-
"github.com/verily-src/fhirpath-go/internal/fhirconv"
2521
"github.com/verily-src/fhirpath-go/fhirpath"
2622
"github.com/verily-src/fhirpath-go/fhirpath/compopts"
2723
"github.com/verily-src/fhirpath-go/fhirpath/evalopts"
2824
"github.com/verily-src/fhirpath-go/fhirpath/system"
25+
"github.com/verily-src/fhirpath-go/internal/element/extension"
26+
"github.com/verily-src/fhirpath-go/internal/element/reference"
27+
"github.com/verily-src/fhirpath-go/internal/fhir"
28+
"github.com/verily-src/fhirpath-go/internal/fhirconv"
2929
"google.golang.org/protobuf/testing/protocmp"
3030
)
3131

@@ -951,6 +951,20 @@ func TestFunctionInvocation_Evaluates(t *testing.T) {
951951
inputCollection: []fhir.Resource{patientChu},
952952
wantCollection: system.Collection{system.Boolean(false), system.Boolean(true)},
953953
},
954+
{
955+
name: "returns concatenated family name value with join()",
956+
inputPath: "name.family.value.join('-')",
957+
inputCollection: []fhir.Resource{patientChu},
958+
wantCollection: system.Collection{system.String("Chu-Chu")},
959+
compileOptions: []fhirpath.CompileOption{compopts.WithExperimentalFuncs()},
960+
},
961+
{
962+
name: "returns concatenated family name with join()",
963+
inputPath: "name.family.join('-')",
964+
inputCollection: []fhir.Resource{patientChu},
965+
wantCollection: system.Collection{system.String("Chu-Chu")},
966+
compileOptions: []fhirpath.CompileOption{compopts.WithExperimentalFuncs()},
967+
},
954968
}
955969

956970
testEvaluate(t, testCases)
@@ -1408,6 +1422,31 @@ func TestPolarityExpression(t *testing.T) {
14081422
testEvaluate(t, testCases)
14091423
}
14101424

1425+
func TestAll_Evaluates(t *testing.T) {
1426+
testCases := []evaluateTestCase{
1427+
{
1428+
name: "returns false if not all elements are integers",
1429+
inputPath: "Patient.name.given.all($this is Integer)",
1430+
inputCollection: []fhir.Resource{patientChu},
1431+
wantCollection: system.Collection{system.Boolean(false)},
1432+
},
1433+
{
1434+
name: "returns true if input is empty",
1435+
inputPath: "{}.all($this is Integer)",
1436+
inputCollection: []fhir.Resource{},
1437+
wantCollection: system.Collection{system.Boolean(true)},
1438+
},
1439+
{
1440+
name: "returns true if born during the 21st century",
1441+
inputPath: "Patient.birthDate.all($this >= @2000-01-01 and $this < @2100-01-01)",
1442+
inputCollection: []fhir.Resource{patientChu},
1443+
wantCollection: system.Collection{system.Boolean(true)},
1444+
},
1445+
}
1446+
1447+
testEvaluate(t, testCases)
1448+
}
1449+
14111450
func TestMustCompile_CompileError_Panics(t *testing.T) {
14121451
defer func() { _ = recover() }()
14131452

fhirpath/fhirpathtest/fhirpathtest_example_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import (
44
"errors"
55
"fmt"
66

7-
"github.com/verily-src/fhirpath-go/internal/fhir"
87
"github.com/verily-src/fhirpath-go/fhirpath/fhirpathtest"
98
"github.com/verily-src/fhirpath-go/fhirpath/system"
9+
"github.com/verily-src/fhirpath-go/internal/fhir"
1010
)
1111

1212
func ExampleError() {

fhirpath/fhirpathtest/fhirpathtest_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import (
55
"testing"
66

77
"github.com/google/go-cmp/cmp"
8+
"github.com/verily-src/fhirpath-go/fhirpath/fhirpathtest"
9+
"github.com/verily-src/fhirpath-go/fhirpath/system"
810
"github.com/verily-src/fhirpath-go/internal/fhir"
911
"github.com/verily-src/fhirpath-go/internal/fhirtest"
1012
"github.com/verily-src/fhirpath-go/internal/resource"
11-
"github.com/verily-src/fhirpath-go/fhirpath/fhirpathtest"
12-
"github.com/verily-src/fhirpath-go/fhirpath/system"
1313
"google.golang.org/protobuf/testing/protocmp"
1414
)
1515

fhirpath/internal/expr/expressions.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ import (
99
bcrpb "github.com/google/fhir/go/proto/google/fhir/proto/r4/core/resources/bundle_and_contained_resource_go_proto"
1010
"github.com/iancoleman/strcase"
1111
"github.com/shopspring/decimal"
12-
"github.com/verily-src/fhirpath-go/internal/slices"
13-
"github.com/verily-src/fhirpath-go/internal/fhir"
14-
"github.com/verily-src/fhirpath-go/internal/containedresource"
15-
"github.com/verily-src/fhirpath-go/internal/fhirconv"
1612
"github.com/verily-src/fhirpath-go/fhirpath/internal/reflection"
1713
"github.com/verily-src/fhirpath-go/fhirpath/system"
14+
"github.com/verily-src/fhirpath-go/internal/containedresource"
15+
"github.com/verily-src/fhirpath-go/internal/fhir"
16+
"github.com/verily-src/fhirpath-go/internal/fhirconv"
1817
"github.com/verily-src/fhirpath-go/internal/protofields"
18+
"github.com/verily-src/fhirpath-go/internal/slices"
1919
"google.golang.org/protobuf/proto"
2020
"google.golang.org/protobuf/reflect/protoreflect"
2121
"google.golang.org/protobuf/types/known/anypb"

fhirpath/internal/expr/expressions_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,16 @@ import (
1717
ppb "github.com/google/fhir/go/proto/google/fhir/proto/r4/core/resources/patient_go_proto"
1818
"github.com/google/go-cmp/cmp"
1919
"github.com/shopspring/decimal"
20-
"github.com/verily-src/fhirpath-go/internal/slices"
21-
"github.com/verily-src/fhirpath-go/internal/fhir"
22-
"github.com/verily-src/fhirpath-go/internal/bundle"
23-
"github.com/verily-src/fhirpath-go/internal/element/extension"
24-
"github.com/verily-src/fhirpath-go/internal/fhirconv"
2520
"github.com/verily-src/fhirpath-go/fhirpath"
2621
"github.com/verily-src/fhirpath-go/fhirpath/internal/expr"
2722
"github.com/verily-src/fhirpath-go/fhirpath/internal/expr/exprtest"
2823
"github.com/verily-src/fhirpath-go/fhirpath/internal/reflection"
2924
"github.com/verily-src/fhirpath-go/fhirpath/system"
25+
"github.com/verily-src/fhirpath-go/internal/bundle"
26+
"github.com/verily-src/fhirpath-go/internal/element/extension"
27+
"github.com/verily-src/fhirpath-go/internal/fhir"
28+
"github.com/verily-src/fhirpath-go/internal/fhirconv"
29+
"github.com/verily-src/fhirpath-go/internal/slices"
3030
"google.golang.org/protobuf/testing/protocmp"
3131
)
3232

fhirpath/internal/funcs/function_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ import (
77

88
ppb "github.com/google/fhir/go/proto/google/fhir/proto/r4/core/resources/patient_go_proto"
99
"github.com/google/go-cmp/cmp"
10-
"github.com/verily-src/fhirpath-go/internal/fhir"
1110
"github.com/verily-src/fhirpath-go/fhirpath/internal/expr"
1211
"github.com/verily-src/fhirpath-go/fhirpath/internal/expr/exprtest"
1312
"github.com/verily-src/fhirpath-go/fhirpath/internal/funcs"
1413
"github.com/verily-src/fhirpath-go/fhirpath/system"
14+
"github.com/verily-src/fhirpath-go/internal/fhir"
1515
)
1616

1717
func TestToFunction_EvaluatesCorrectly(t *testing.T) {

0 commit comments

Comments
 (0)