Update the implementation of the `toString` fhirpath function to: (pending FHIR-48737) * not return the text 'null' when no primitive value exists (when extension only) * throw an error if more than 1 item is to be returned (doesn't support collections) * return an empty set when no primitive values exist (when extension only)
This commit is contained in:
parent
bcf2ee886a
commit
01af08030f
|
@ -4817,7 +4817,15 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcToString(ExecutionContext context, List<Base> focus, ExpressionNode exp) {
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
result.add(new StringType(convertToString(focus)).noExtensions());
|
||||
for (Base item : focus) {
|
||||
String value = convertToString(item);
|
||||
if (value != null)
|
||||
result.add(new StringType(value).noExtensions());
|
||||
}
|
||||
|
||||
if (result.size() > 1) {
|
||||
throw makeException(exp, I18nConstants.FHIRPATH_NO_COLLECTION, "toString", result.size());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -4820,7 +4820,15 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcToString(ExecutionContext context, List<Base> focus, ExpressionNode exp) {
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
result.add(new StringType(convertToString(focus)).noExtensions());
|
||||
for (Base item : focus) {
|
||||
String value = convertToString(item);
|
||||
if (value != null)
|
||||
result.add(new StringType(value).noExtensions());
|
||||
}
|
||||
|
||||
if (result.size() > 1) {
|
||||
throw makeException(exp, I18nConstants.FHIRPATH_NO_COLLECTION, "toString", result.size());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -336,4 +336,23 @@ public class FHIRPathTests {
|
|||
assertEquals(1, results.size());
|
||||
assertEquals("123", results.get(0).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEvaluate_ToStringOnDateValue() {
|
||||
Patient input = new Patient();
|
||||
var dtv = new DateType("2024");
|
||||
input.setBirthDateElement(dtv);
|
||||
List<Base> results = fp.evaluate(input, "Patient.birthDate.toString()");
|
||||
assertEquals(1, results.size());
|
||||
assertEquals("2024", results.get(0).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEvaluate_ToStringOnExtensionOnlyValue() {
|
||||
Patient input = new Patient();
|
||||
var dtv = new DateType();
|
||||
input.setBirthDateElement(dtv);
|
||||
List<Base> results = fp.evaluate(input, "Patient.birthDate.toString()");
|
||||
assertEquals(0, results.size());
|
||||
}
|
||||
}
|
|
@ -4929,7 +4929,15 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcToString(ExecutionContext context, List<Base> focus, ExpressionNode exp) {
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
result.add(new StringType(convertToString(focus)).noExtensions());
|
||||
for (Base item : focus) {
|
||||
String value = convertToString(item);
|
||||
if (value != null)
|
||||
result.add(new StringType(value).noExtensions());
|
||||
}
|
||||
|
||||
if (result.size() > 1) {
|
||||
throw makeException(exp, I18nConstants.FHIRPATH_NO_COLLECTION, "toString", result.size());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -337,4 +337,23 @@ public class FHIRPathTests {
|
|||
assertEquals(1, results.size());
|
||||
assertEquals("123", results.get(0).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEvaluate_ToStringOnDateValue() {
|
||||
Patient input = new Patient();
|
||||
var dtv = new DateType("2024");
|
||||
input.setBirthDateElement(dtv);
|
||||
List<Base> results = fp.evaluate(input, "Patient.birthDate.toString()");
|
||||
assertEquals(1, results.size());
|
||||
assertEquals("2024", results.get(0).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEvaluate_ToStringOnExtensionOnlyValue() {
|
||||
Patient input = new Patient();
|
||||
var dtv = new DateType();
|
||||
input.setBirthDateElement(dtv);
|
||||
List<Base> results = fp.evaluate(input, "Patient.birthDate.toString()");
|
||||
assertEquals(0, results.size());
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue