mirror of
https://github.com/hapifhir/org.hl7.fhir.core.git
synced 2025-02-09 06:14:45 +00:00
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) {
|
private List<Base> funcToString(ExecutionContext context, List<Base> focus, ExpressionNode exp) {
|
||||||
List<Base> result = new ArrayList<Base>();
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4820,7 +4820,15 @@ public class FHIRPathEngine {
|
|||||||
|
|
||||||
private List<Base> funcToString(ExecutionContext context, List<Base> focus, ExpressionNode exp) {
|
private List<Base> funcToString(ExecutionContext context, List<Base> focus, ExpressionNode exp) {
|
||||||
List<Base> result = new ArrayList<Base>();
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -336,4 +336,23 @@ public class FHIRPathTests {
|
|||||||
assertEquals(1, results.size());
|
assertEquals(1, results.size());
|
||||||
assertEquals("123", results.get(0).toString());
|
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) {
|
private List<Base> funcToString(ExecutionContext context, List<Base> focus, ExpressionNode exp) {
|
||||||
List<Base> result = new ArrayList<Base>();
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -337,4 +337,23 @@ public class FHIRPathTests {
|
|||||||
assertEquals(1, results.size());
|
assertEquals(1, results.size());
|
||||||
assertEquals("123", results.get(0).toString());
|
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…
x
Reference in New Issue
Block a user