Skip to content

Commit 5ba6ab1

Browse files
committed
Remove use of version specific model
1 parent c9452bc commit 5ba6ab1

File tree

1 file changed

+23
-7
lines changed

1 file changed

+23
-7
lines changed
Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,44 @@
11
package ca.uhn.fhir.jpa.starter.cdshooks;
22

3+
import ca.uhn.fhir.context.FhirVersionEnum;
34
import ca.uhn.fhir.rest.api.server.RequestDetails;
45
import ca.uhn.fhir.rest.api.server.cdshooks.CdsServiceRequestJson;
56
import ca.uhn.hapi.fhir.cdshooks.api.ICdsConfigService;
6-
import org.hl7.fhir.r4.model.BooleanType;
7-
import org.hl7.fhir.r4.model.Parameters;
7+
import org.hl7.fhir.instance.model.api.IBaseParameters;
8+
import org.hl7.fhir.instance.model.api.IPrimitiveType;
89
import org.opencds.cqf.fhir.api.Repository;
910
import org.opencds.cqf.fhir.cr.hapi.cdshooks.CdsCrService;
11+
import org.opencds.cqf.fhir.utility.adapter.IAdapterFactory;
1012

1113
import static org.opencds.cqf.fhir.utility.Constants.APPLY_PARAMETER_DATA;
12-
import static org.opencds.cqf.fhir.utility.r4.Parameters.part;
1314

1415
public class UpdatedCdsCrService extends CdsCrService {
16+
private final IAdapterFactory adapterFactory;
17+
1518
public UpdatedCdsCrService(
1619
RequestDetails theRequestDetails, Repository theRepository, ICdsConfigService theCdsConfigService) {
1720
super(theRequestDetails, theRepository, theCdsConfigService);
21+
adapterFactory = IAdapterFactory.forFhirContext(theRepository.fhirContext());
1822
}
1923

2024
@Override
21-
public Parameters encodeParams(CdsServiceRequestJson theJson) {
22-
var parameters = (Parameters) super.encodeParams(theJson);
25+
public IBaseParameters encodeParams(CdsServiceRequestJson theJson) {
26+
var parameters = adapterFactory.createParameters(super.encodeParams(theJson));
2327
if (parameters.hasParameter(APPLY_PARAMETER_DATA)) {
24-
parameters.addParameter(part("useServerData", new BooleanType(false)));
28+
parameters.addParameter(
29+
"useServerData",
30+
booleanTypeForVersion(parameters.fhirContext().getVersion().getVersion(), false));
2531
}
26-
return parameters;
32+
return (IBaseParameters) parameters.get();
33+
}
34+
35+
private IPrimitiveType<Boolean> booleanTypeForVersion(FhirVersionEnum fhirVersion, boolean value) {
36+
return switch (fhirVersion) {
37+
case DSTU2 -> new org.hl7.fhir.dstu2.model.BooleanType(value);
38+
case DSTU3 -> new org.hl7.fhir.dstu3.model.BooleanType(value);
39+
case R4 -> new org.hl7.fhir.r4.model.BooleanType(value);
40+
case R5 -> new org.hl7.fhir.r5.model.BooleanType(value);
41+
default -> throw new IllegalArgumentException("unknown or unsupported FHIR version");
42+
};
2743
}
2844
}

0 commit comments

Comments
 (0)