Compare commits

...

8 Commits

Author SHA1 Message Date
Oliver Egger c2647dce86
Merge 2f165863e7 into e8a0bba072 2024-09-26 14:32:03 +02:00
markiantorno e8a0bba072 Updating version to: 6.3.30-SNAPSHOT and incrementing test cases dependency. 2024-09-26 12:30:18 +00:00
markiantorno 53ec745184 Release: v6.3.29
## Validator Changes

* remove spurious logging statement

## Other code changes

* no changes
***NO_CI***
2024-09-26 11:44:41 +00:00
Grahame Grieve 10921bef1f release notes 2024-09-26 07:11:28 -04:00
Grahame Grieve 7bd5d3b7ce Merge remote-tracking branch 'origin/master' 2024-09-26 07:08:52 -04:00
Grahame Grieve bd53f7c011 remove spurious logging statement 2024-09-26 07:08:47 -04:00
oliveregger 2f165863e7 fix test, revert var patch 2024-09-21 18:50:01 +02:00
oliveregger d69a8e3e43 FHIR-46548: where clause on alias #1748 2024-09-18 23:09:24 +02:00
15 changed files with 47 additions and 26 deletions

View File

@ -5,7 +5,7 @@
<parent>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>org.hl7.fhir.core</artifactId>
<version>6.3.29-SNAPSHOT</version>
<version>6.3.30-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>org.hl7.fhir.core</artifactId>
<version>6.3.29-SNAPSHOT</version>
<version>6.3.30-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>org.hl7.fhir.core</artifactId>
<version>6.3.29-SNAPSHOT</version>
<version>6.3.30-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>org.hl7.fhir.core</artifactId>
<version>6.3.29-SNAPSHOT</version>
<version>6.3.30-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>org.hl7.fhir.core</artifactId>
<version>6.3.29-SNAPSHOT</version>
<version>6.3.30-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>org.hl7.fhir.core</artifactId>
<version>6.3.29-SNAPSHOT</version>
<version>6.3.30-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>org.hl7.fhir.core</artifactId>
<version>6.3.29-SNAPSHOT</version>
<version>6.3.30-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

View File

@ -1331,7 +1331,7 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
issues.add(iss);
return new ValidationResult(IssueSeverity.FATAL, e.getMessage(), e.getError(), issues);
} catch (Exception e) {
e.printStackTrace();
// e.printStackTrace();
localError = e.getMessage();
}
}

View File

@ -1087,7 +1087,7 @@ public class StructureMapUtilities {
if (lexer.hasToken("log")) {
lexer.take();
ExpressionNode node = fpe.parse(lexer);
source.setUserData(MAP_WHERE_CHECK, node);
source.setUserData(MAP_WHERE_LOG, node);
source.setLogMessage(node.toString());
}
}
@ -1634,12 +1634,15 @@ public class StructureMapUtilities {
ExpressionNode expr = (ExpressionNode) src.getUserData(MAP_WHERE_EXPRESSION);
if (expr == null) {
expr = fpe.parse(src.getCondition());
// fpe.check(context.appInfo, ??, ??, expr)
src.setUserData(MAP_WHERE_EXPRESSION, expr);
}
List<Base> remove = new ArrayList<Base>();
for (Base item : items) {
if (!fpe.evaluateToBoolean(vars, null, null, item, expr)) {
Variables varsForSource = vars.copy();
if (src.hasVariable()) {
varsForSource.add(VariableMode.INPUT, src.getVariable(), item);
}
if (!fpe.evaluateToBoolean(varsForSource, null, null, item, expr)) {
log(indent + " condition [" + src.getCondition() + "] for " + item.toString() + " : false");
remove.add(item);
} else
@ -1652,12 +1655,14 @@ public class StructureMapUtilities {
ExpressionNode expr = (ExpressionNode) src.getUserData(MAP_WHERE_CHECK);
if (expr == null) {
expr = fpe.parse(src.getCheck());
// fpe.check(context.appInfo, ??, ??, expr)
src.setUserData(MAP_WHERE_CHECK, expr);
}
List<Base> remove = new ArrayList<Base>();
for (Base item : items) {
if (!fpe.evaluateToBoolean(vars, null, null, item, expr))
Variables varsForSource = vars.copy();
if (src.hasVariable()) {
varsForSource.add(VariableMode.INPUT, src.getVariable(), item);
}
if (!fpe.evaluateToBoolean(varsForSource, null, null, item, expr))
throw new FHIRException("Rule \"" + ruleId + "\": Check condition failed");
}
}
@ -1666,12 +1671,16 @@ public class StructureMapUtilities {
ExpressionNode expr = (ExpressionNode) src.getUserData(MAP_WHERE_LOG);
if (expr == null) {
expr = fpe.parse(src.getLogMessage());
// fpe.check(context.appInfo, ??, ??, expr)
src.setUserData(MAP_WHERE_LOG, expr);
}
CommaSeparatedStringBuilder b = new CommaSeparatedStringBuilder();
for (Base item : items)
b.appendIfNotNull(fpe.evaluateToString(vars, null, null, item, expr));
for (Base item : items) {
Variables varsForSource = vars.copy();
if (src.hasVariable()) {
varsForSource.add(VariableMode.INPUT, src.getVariable(), item);
}
b.appendIfNotNull(fpe.evaluateToString(varsForSource, null, null, item, expr));
}
if (b.length() > 0)
services.log(b.toString());
}
@ -2520,7 +2529,6 @@ public class StructureMapUtilities {
ExpressionNode expr = (ExpressionNode) tgt.getUserData(MAP_EXPRESSION);
if (expr == null) {
expr = fpe.parse(getParamString(vars, tgt.getParameter().get(tgt.getParameter().size() - 1)));
tgt.setUserData(MAP_WHERE_EXPRESSION, expr);
}
return fpe.check(vars, null, expr);
case TRANSLATE:

View File

@ -72,6 +72,19 @@ public class StructureMapUtilitiesTest implements ITransformerServices {
assertEquals("2023-09-20T13:19:13.502Z", fp.evaluateToString(target, "deceased"));
}
@Test
public void testWhereClause() throws IOException, FHIRException {
StructureMapUtilities scu = new StructureMapUtilities(context, this);
scu.setDebug(true);
String fileMap = TestingUtilities.loadTestResource("r5", "structure-mapping", "whereclause.map");
Element source = Manager.parseSingle(context, TestingUtilities.loadTestResourceStream("r4", "examples", "capabilitystatement-example.json"), FhirFormat.JSON);
StructureMap structureMap = scu.parse(fileMap, "whereclause");
Element target = Manager.build(context, scu.getTargetType(structureMap));
scu.transform(null, source, structureMap, target);
FHIRPathEngine fp = new FHIRPathEngine(context);
assertEquals("true", fp.evaluateToString(target, "rest.resource.interaction.where(code='create').exists()"));
}
private void assertSerializeDeserialize(StructureMap structureMap) {
Assertions.assertEquals("syntax", structureMap.getName());
Assertions.assertEquals("description", structureMap.getDescription());

View File

@ -5,7 +5,7 @@
<parent>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>org.hl7.fhir.core</artifactId>
<version>6.3.29-SNAPSHOT</version>
<version>6.3.30-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>org.hl7.fhir.core</artifactId>
<version>6.3.29-SNAPSHOT</version>
<version>6.3.30-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>org.hl7.fhir.core</artifactId>
<version>6.3.29-SNAPSHOT</version>
<version>6.3.30-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>org.hl7.fhir.core</artifactId>
<version>6.3.29-SNAPSHOT</version>
<version>6.3.30-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

View File

@ -14,7 +14,7 @@
HAPI FHIR
-->
<artifactId>org.hl7.fhir.core</artifactId>
<version>6.3.29-SNAPSHOT</version>
<version>6.3.30-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>