@@ -33,21 +33,18 @@ internal static class CqlDateTimeMath
33
33
34
34
switch ( precision )
35
35
{
36
- case UCUMUnits . Year :
37
- throw new NotImplementedException ( ) ;
36
+ // https://cql.hl7.org/09-b-cqlreference.html#difference
37
+ // UCUM units not supported here
38
38
39
39
case "year" :
40
40
var yearDiff = ( secondDto . Year - firstDto . Year ) ;
41
41
return yearDiff ;
42
42
43
- case UCUMUnits . Month :
44
- throw new NotImplementedException ( ) ;
45
-
46
43
case "month" :
47
44
var monthDiff = ( 12 * ( secondDto . Year - firstDto . Year ) + secondDto . Month - firstDto . Month ) ;
48
45
return monthDiff ;
49
46
50
- case "week" or UCUMUnits . Week :
47
+ case "week" :
51
48
{
52
49
var span = secondDto . Subtract ( firstDto ) ;
53
50
var weeks = span . TotalDays / 7d ;
@@ -59,7 +56,7 @@ internal static class CqlDateTimeMath
59
56
else return asInt ;
60
57
}
61
58
62
- case "day" or UCUMUnits . Day :
59
+ case "day" :
63
60
{
64
61
var span = secondDto . Subtract ( firstDto ) ;
65
62
var asInt = ( int ) span . TotalDays ;
@@ -72,7 +69,7 @@ internal static class CqlDateTimeMath
72
69
else return asInt ;
73
70
}
74
71
75
- case "hour" or UCUMUnits . Hour :
72
+ case "hour" :
76
73
{
77
74
var span = secondDto . Subtract ( firstDto ) ;
78
75
var asInt = ( int ) span . TotalHours ;
@@ -85,7 +82,7 @@ internal static class CqlDateTimeMath
85
82
else return asInt ;
86
83
}
87
84
88
- case "minute" or UCUMUnits . Minute :
85
+ case "minute" :
89
86
{
90
87
var span = secondDto . Subtract ( firstDto ) ;
91
88
var asInt = ( int ) span . TotalMinutes ;
@@ -98,7 +95,7 @@ internal static class CqlDateTimeMath
98
95
else return asInt ;
99
96
}
100
97
101
- case "second" or UCUMUnits . Second :
98
+ case "second" :
102
99
{
103
100
var span = secondDto . Subtract ( firstDto ) ;
104
101
var asInt = ( int ) span . TotalSeconds ;
@@ -111,7 +108,7 @@ internal static class CqlDateTimeMath
111
108
else return asInt ;
112
109
}
113
110
114
- case "millisecond" or UCUMUnits . Millisecond :
111
+ case "millisecond" :
115
112
{
116
113
var span = secondDto . Subtract ( firstDto ) ;
117
114
var asInt = ( int ) span . TotalMilliseconds ;
@@ -136,8 +133,8 @@ internal static class CqlDateTimeMath
136
133
var calendar = new GregorianCalendar ( ) ;
137
134
switch ( precision )
138
135
{
139
- case UCUMUnits . Year :
140
- throw new NotImplementedException ( ) ;
136
+ // https://cql.hl7.org/09-b-cqlreference.html#difference
137
+ // UCUM units not supported here
141
138
142
139
case "year" :
143
140
var yearDiff = secondDto . Year - firstDto . Year ;
@@ -206,9 +203,6 @@ internal static class CqlDateTimeMath
206
203
yearDiff += 1 ;
207
204
return yearDiff ;
208
205
209
- case UCUMUnits . Month :
210
- throw new NotImplementedException ( ) ;
211
-
212
206
case "month" :
213
207
var monthDiff = ( 12 * ( secondDto . Year - firstDto . Year ) + secondDto . Month - firstDto . Month ) ;
214
208
if ( monthDiff > 0 && secondDto . Day < firstDto . Day )
@@ -217,13 +211,13 @@ internal static class CqlDateTimeMath
217
211
monthDiff += 1 ;
218
212
return monthDiff ;
219
213
220
- case "week" or UCUMUnits . Week : return ( int ) ( secondDto . Subtract ( firstDto ) . TotalDays / DaysPerWeekDouble ) ;
221
- case "day" or UCUMUnits . Day : return ( int ) secondDto . Subtract ( firstDto ) . TotalDays ;
222
- case "hour" or UCUMUnits . Hour : return ( int ) secondDto . Subtract ( firstDto ) . TotalHours ;
223
- case "minute" or UCUMUnits . Minute : return ( int ) secondDto . Subtract ( firstDto ) . TotalMinutes ;
224
- case "second" or UCUMUnits . Second : return ( int ) secondDto . Subtract ( firstDto ) . TotalSeconds ;
225
- case "millisecond" or UCUMUnits . Millisecond : return ( int ) secondDto . Subtract ( firstDto ) . TotalMilliseconds ;
226
- default : throw new ArgumentException ( $ "Unit '{ precision } ' is not supported.") ;
214
+ case "week" : return ( int ) ( secondDto . Subtract ( firstDto ) . TotalDays / DaysPerWeekDouble ) ;
215
+ case "day" : return ( int ) secondDto . Subtract ( firstDto ) . TotalDays ;
216
+ case "hour" : return ( int ) secondDto . Subtract ( firstDto ) . TotalHours ;
217
+ case "minute" : return ( int ) secondDto . Subtract ( firstDto ) . TotalMinutes ;
218
+ case "second" : return ( int ) secondDto . Subtract ( firstDto ) . TotalSeconds ;
219
+ case "millisecond" : return ( int ) secondDto . Subtract ( firstDto ) . TotalMilliseconds ;
220
+ default : throw new ArgumentException ( $ "Unit '{ precision } ' is not supported.") ;
227
221
}
228
222
}
229
223
0 commit comments