Another way to access tabular data is to embed employ a lookup table structure in a package. This example takes various obstetric ultrasound measured parameters and looks up a calculated gestational age.
...
Then the table declaration:
--
...
Table
...
Declaration
Let
...
FLToGestationalAgeTable:
...
...
...
...
FLToGestationalAgeTableType
...
=
...
...
...
...
...
...
Sequence{
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
1.0,
...
AgeinWeeks
...
=
...
12.8},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
1.1,
...
AgeinWeeks
...
=
...
13.1},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
1.2,
...
AgeinWeeks
...
=
...
13.4},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
1.3,
...
AgeinWeeks
...
=
...
13.6},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
1.4,
...
AgeinWeeks
...
=
...
13.9},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
1.5,
...
AgeinWeeks
...
=
...
14.2},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
1.6,
...
AgeinWeeks
...
=
...
14.5},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
1.7,
...
AgeinWeeks
...
=
...
14.8},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
1.8,
...
AgeinWeeks
...
=
...
15.1},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
1.9,
...
AgeinWeeks
...
=
...
15.4},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
2.0,
...
AgeinWeeks
...
=
...
15.7},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
2.1,
...
AgeinWeeks
...
=
...
16.0},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
2.2,
...
AgeinWeeks
...
=
...
16.3},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
2.3,
...
AgeinWeeks
...
=
...
16.6},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
2.4,
...
AgeinWeeks
...
=
...
16.9},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
2.5,
...
AgeinWeeks
...
=
...
17.2},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
2.6,
...
AgeinWeeks
...
=
...
17.6},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
2.7,
...
AgeinWeeks
...
=
...
17.9},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
2.8,
...
AgeinWeeks
...
=
...
18.2},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
2.9,
...
AgeinWeeks
...
=
...
18.6},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
3.0,
...
AgeinWeeks
...
=
...
18.9},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
3.1,
...
AgeinWeeks
...
=
...
19.2},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
3.2,
...
AgeinWeeks
...
=
...
19.6},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
3.3,
...
AgeinWeeks
...
=
...
19.9},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
3.4,
...
AgeinWeeks
...
=
...
20.3},
...
...
...
...
...
...
FLToGestationalAgeMap{FLMeasurement
...
=
...
3.5,
...
AgeinWeeks
...
=
...
20.7}
...
...
...
...
...
...
...
}
And
...
finally
...
the
...
code.
...
In
...
this
...
example,
...
the
...
input
...
could
...
have
...
come
...
from
...
an
...
archetype
...
and
...
this
...
section
...
is
...
commented
...
out.
imports iso_21090_datatypes
/*
Let femurLength: Real = If template.Third_Trimester_Growth_Scan
.Findings
.Fetal_Biometry
.Femur_Length_FL
.Measurement
.oclIsDefined() then
template.Third_Trimester_Growth_Scan
.Findings
.Fetal_Biometry
.Femur_Length_FL
.Measurement
.value.oclAsType(PQ)
.value
else null
endif
*/
Let femurLength: PQ = PQ{value = 3.2, unit='cm'}
If (femurLength.value >= FLToGestationalAgeTable.first().FLMeasurement) and (femurLength.value <= FLToGestationalAgeTable.last().FLMeasurement) then
FLToGestationalAgeTable->select(o | femurLength.value >= o.FLMeasurement).last().AgeinWeeks.toChar()
else
''
endif
Here is how that looks in Result Explorer:
The result in the data explorer is this: