com.ibm.fhir.operation.term.TranslateOperation Maven / Gradle / Ivy
/*
* (C) Copyright IBM Corp. 2020, 2022
*
* SPDX-License-Identifier: Apache-2.0
*/
package com.ibm.fhir.operation.term;
import com.ibm.fhir.exception.FHIROperationException;
import com.ibm.fhir.model.resource.ConceptMap;
import com.ibm.fhir.model.resource.OperationDefinition;
import com.ibm.fhir.model.resource.Parameters;
import com.ibm.fhir.model.resource.Resource;
import com.ibm.fhir.model.type.CodeableConcept;
import com.ibm.fhir.model.type.Coding;
import com.ibm.fhir.model.type.Element;
import com.ibm.fhir.model.type.code.IssueType;
import com.ibm.fhir.registry.FHIRRegistry;
import com.ibm.fhir.search.util.SearchHelper;
import com.ibm.fhir.server.spi.operation.FHIROperationContext;
import com.ibm.fhir.server.spi.operation.FHIRResourceHelpers;
import com.ibm.fhir.term.service.TranslationOutcome;
import com.ibm.fhir.term.service.TranslationParameters;
import com.ibm.fhir.term.service.exception.FHIRTermServiceException;
public class TranslateOperation extends AbstractTermOperation {
@Override
protected OperationDefinition buildOperationDefinition() {
return FHIRRegistry.getInstance().getResource("http://hl7.org/fhir/OperationDefinition/ConceptMap-translate", OperationDefinition.class);
}
@Override
protected Parameters doInvoke(
FHIROperationContext operationContext,
Class extends Resource> resourceType,
String logicalId,
String versionId,
Parameters parameters,
FHIRResourceHelpers resourceHelper,
SearchHelper searchHelper) throws FHIROperationException {
try {
ConceptMap conceptMap = getResource(operationContext, logicalId, parameters, resourceHelper, ConceptMap.class);
Element codedElement = getCodedElement(parameters, "codeableConcept", "coding", "code");
TranslationOutcome outcome = codedElement.is(CodeableConcept.class) ?
service.translate(conceptMap, codedElement.as(CodeableConcept.class), TranslationParameters.from(parameters)) :
service.translate(conceptMap, codedElement.as(Coding.class), TranslationParameters.from(parameters));
return outcome.toParameters();
} catch (FHIROperationException e) {
throw e;
} catch (FHIRTermServiceException e) {
throw new FHIROperationException(e.getMessage(), e.getCause()).withIssue(e.getIssues());
} catch (UnsupportedOperationException e) {
throw buildExceptionWithIssue(e.getMessage(), IssueType.NOT_SUPPORTED, e);
} catch (Exception e) {
throw new FHIROperationException("An error occurred during the ConceptMap translate operation", e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy