Skip to content

Commit

Permalink
MAT-6852 set active/inactive flag for code
Browse files Browse the repository at this point in the history
  • Loading branch information
adongare committed Apr 11, 2024
1 parent 95b3be2 commit feae596
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 11 deletions.
1 change: 1 addition & 0 deletions src/main/java/gov/cms/madie/terminology/dto/Code.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@ public class Code {
private String version;
private String codeSystem;
private String codeSystemOid;
private boolean active;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.parser.IParser;
import gov.cms.madie.models.cql.terminology.VsacCode;
import gov.cms.madie.models.mapping.CodeSystemEntry;
import gov.cms.madie.models.measure.ManifestExpansion;
import gov.cms.madie.terminology.dto.Code;
Expand All @@ -12,6 +13,7 @@
import gov.cms.madie.terminology.repositories.CodeSystemRepository;
import gov.cms.madie.terminology.util.TerminologyServiceUtil;
import gov.cms.madie.terminology.webclient.FhirTerminologyServiceWebClient;
import gov.cms.madie.terminology.webclient.TerminologyServiceWebClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
Expand All @@ -35,6 +37,7 @@ public class FhirTerminologyService {
private final FhirTerminologyServiceWebClient fhirTerminologyServiceWebClient;
private final MappingService mappingService;
private final CodeSystemRepository codeSystemRepository;
private final TerminologyServiceWebClient terminologyServiceWebClient;

@Cacheable("manifest-list")
public List<ManifestExpansion> getManifests(UmlsUser umlsUser) {
Expand Down Expand Up @@ -132,8 +135,8 @@ public List<CodeSystem> retrieveAllCodeSystems(UmlsUser umlsUser) {
return allCodeSystems;
}

public Code retrieveCode(String code, String codeSystemName, String version, String apiKey) {
if (StringUtils.isEmpty(code)
public Code retrieveCode(String codeName, String codeSystemName, String version, String apiKey) {
if (StringUtils.isEmpty(codeName)
|| StringUtils.isEmpty(codeSystemName)
|| StringUtils.isEmpty(version)) {
return null;
Expand All @@ -143,15 +146,25 @@ public Code retrieveCode(String code, String codeSystemName, String version, Str
if (codeSystem == null) {
return null;
}
String codeJson = fhirTerminologyServiceWebClient.getCodeResource(code, codeSystem, apiKey);
String codeJson = fhirTerminologyServiceWebClient.getCodeResource(codeName, codeSystem, apiKey);
Parameters parameters = fhirContext.newJsonParser().parseResource(Parameters.class, codeJson);
return Code.builder()
.name(code)
.codeSystem(codeSystemName)
.version(version)
.display(parameters.getParameter("display").getValue().toString())
.codeSystemOid(parameters.getParameter("Oid").getValue().toString())
.build();
Code code =
Code.builder()
.name(codeName)
.codeSystem(codeSystemName)
.version(version)
.display(parameters.getParameter("display").getValue().toString())
.codeSystemOid(parameters.getParameter("Oid").getValue().toString())
.build();
String codePath =
TerminologyServiceUtil.buildCodePath(
code.getCodeSystem(), code.getVersion(), code.getName());
// TODO: this is ridiculous
VsacCode svsCode = terminologyServiceWebClient.getCode(codePath, apiKey);
if (svsCode.getStatus().equalsIgnoreCase("ok")) {
code.setActive("Yes".equals(svsCode.getData().getResultSet().get(0).getActive()));
}
return code;
}

private void recursiveRetrieveCodeSystems(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import ca.uhn.fhir.context.FhirContext;
import com.okta.commons.lang.Collections;
import gov.cms.madie.models.cql.terminology.VsacCode;
import gov.cms.madie.models.mapping.CodeSystemEntry;
import gov.cms.madie.models.measure.ManifestExpansion;
import gov.cms.madie.terminology.dto.Code;
Expand All @@ -11,6 +12,7 @@
import gov.cms.madie.terminology.models.UmlsUser;
import gov.cms.madie.terminology.repositories.CodeSystemRepository;
import gov.cms.madie.terminology.webclient.FhirTerminologyServiceWebClient;
import gov.cms.madie.terminology.webclient.TerminologyServiceWebClient;
import org.apache.commons.io.FileUtils;
import org.hl7.fhir.r4.model.Bundle;
import org.hl7.fhir.r4.model.CodeSystem;
Expand Down Expand Up @@ -48,8 +50,10 @@ class FhirTerminologyServiceTest {
@Mock FhirTerminologyServiceWebClient fhirTerminologyServiceWebClient;
@Mock FhirContext fhirContext;
@Mock MappingService mappingService;
@InjectMocks FhirTerminologyService fhirTerminologyService;
@Mock CodeSystemRepository codeSystemRepository;
@Mock TerminologyServiceWebClient terminologyServiceWebClient;
@InjectMocks FhirTerminologyService fhirTerminologyService;

List<CodeSystemEntry> codeSystemEntries;
private UmlsUser umlsUser;
private static final String TEST_HARP_ID = "te$tHarpId";
Expand Down Expand Up @@ -407,12 +411,20 @@ void testRetrieveCodeSuccessfully() {
+ "}";

var codeSystem = gov.cms.madie.terminology.models.CodeSystem.builder().build();
var codeResultSet = new VsacCode.VsacDataResultSet();
codeResultSet.setActive("Yes");
var codeData = new VsacCode.VsacData();
codeData.setResultSet(List.of(codeResultSet));
VsacCode vsacCode = new VsacCode();
vsacCode.setStatus("ok");
vsacCode.setData(codeData);

when(codeSystemRepository.findByNameAndVersion(anyString(), anyString()))
.thenReturn(Optional.of(codeSystem));
when(fhirTerminologyServiceWebClient.getCodeResource(codeName, codeSystem, TEST_API_KEY))
.thenReturn(codeJson);
when(fhirContext.newJsonParser()).thenReturn(FhirContext.forR4().newJsonParser());
when(terminologyServiceWebClient.getCode(anyString(), anyString())).thenReturn(vsacCode);
Code code =
fhirTerminologyService.retrieveCode(codeName, codeSystemName, version, TEST_API_KEY);
assertThat(code.getName(), is(equalTo(codeName)));
Expand Down

0 comments on commit feae596

Please sign in to comment.