Summary Table
Categories |
Total Count |
PII |
0 |
URL |
0 |
DNS |
0 |
EKL |
0 |
IP |
0 |
PORT |
0 |
VsID |
0 |
CF |
0 |
AI |
0 |
VPD |
0 |
PL |
0 |
Other |
0 |
File Content
package gov.va.med.ars.service.impl;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.when;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import gov.va.med.ars.dao.ars.HccsCdRepository;
import gov.va.med.ars.dao.ars.ILoincTypeLookupRespository;
import gov.va.med.ars.dao.ars.LoincCdRepository;
import gov.va.med.ars.dao.ars.LoincModCdRepository;
import gov.va.med.ars.exceptions.GenericException;
import gov.va.med.ars.model.request.CodeAndModifierRequest;
import gov.va.med.ars.model.request.GenericRequest;
import gov.va.med.ars.model.response.CodeAndModifierResponse;
import gov.va.med.ars.model.response.LoincCodeListResponse;
import gov.va.med.domain.ars.HccsCd;
import gov.va.med.domain.ars.LoincCd;
import gov.va.med.domain.ars.LoincModCd;
import gov.va.med.domain.ars.LoincTypeLookup;
@RunWith(MockitoJUnitRunner.class)
public class CodeAndModifierServiceImplTest {
private static final Logger logger = LogManager.getLogger(CodeAndModifierServiceImplTest.class);
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
@Mock
LoincCdRepository loincCdRepository;
@Mock
LoincModCdRepository loincModCdRepository;
@Mock
HccsCdRepository hccsCdRepository;
@Mock
ILoincTypeLookupRespository loincTypeLookupRepository;
@InjectMocks
CodeAndModifierServiceImpl codeAndModService;
@Test
public void testMockIsWorking() {
assertNotNull("CodeAndModifierServiceImpl Injection Failed", codeAndModService);
}
@SuppressWarnings("unchecked")
@Test
public void testGetCodeAndModifier_loinc_success() throws GenericException, Exception {
logger.info("codes to process");
String url = "/api/v1/populate/loinc";
List<String> codeActive = new ArrayList<>();
codeActive.add("Y");
codeActive.add("No");
LoincTypeLookup loincTypeLookupClaim = new LoincTypeLookup();
loincTypeLookupClaim.setId(1);
loincTypeLookupClaim.setDescription("claim level");
loincTypeLookupClaim.setIdCd("claim");
LoincCd loinc = new LoincCd();
loinc.setLoincId(999l);
loinc.setIsactive('Y');
loinc.setStcloincCd("loincCd");
loinc.setStcloincCdDesc("loincCd_desc");
loinc.setClaimLineBridge(loincTypeLookupClaim);
loinc.setStartdate(dateFormat.parse("04/17/2018"));
loinc.setEnddate(dateFormat.parse("04/17/2018"));
List<LoincCd> loincCdList = new ArrayList<>();
loincCdList.add(loinc);
CodeAndModifierResponse loincCode = new CodeAndModifierResponse();
loincCode.setCd(999l);
loincCode.setStcCd("loincCd");
loincCode.setStcCdDesc("loincCd_desc");
loincCode.setFlag(false);
loincCode.setStartDate("04/17/2018");
loincCode.setEndDate("04/17/2018");
loincCode.setLevel("claim");
List<CodeAndModifierResponse> codeAndModifierResponsesList = new ArrayList<>();
codeAndModifierResponsesList.add(loincCode);
when(loincCdRepository.findByisactiveInAndIsarchive(Matchers.anyList(), Matchers.eq('N')))
.thenReturn(loincCdList);
List<LoincCodeListResponse> codeAndModifier = (List<LoincCodeListResponse>) codeAndModService
.getCodeAndModifier(url, codeActive);
logger.info("code list" + codeAndModifier.get(0).toString());
assertEquals(1, codeAndModifier.size());
// assertEquals(codeAndModifierResponsesList,
// codeAndModifier.get(0).getClaimList());
assertEquals("loincCd", codeAndModifier.get(0).getClaimList().get(0).getStcCd());
}
@SuppressWarnings("unchecked")
@Test
public void testGetCodeAndModifier_loincMod_success() throws GenericException, Exception {
// arrange (service)
String url = "/api/v1/populate/loincmod";
List<String> codeActive = new ArrayList<>();
codeActive.add("Y");
codeActive.add("N");
LoincTypeLookup loincTypeLookupClaim = new LoincTypeLookup();
loincTypeLookupClaim.setId(1);
loincTypeLookupClaim.setDescription("claim level");
loincTypeLookupClaim.setIdCd("claim");
// arrange (repository)
LoincModCd loincMod = new LoincModCd();
loincMod.setLoincModId(888l);
loincMod.setIsactive('Y');
loincMod.setStcloincCdMod("loincCdMod");
loincMod.setStcloincCdModDesc("loincCdMod_desc");
loincMod.setStartdate(dateFormat.parse("04/17/2018"));
loincMod.setEnddate(dateFormat.parse("04/17/2018"));
List<LoincModCd> loincCdModList = new ArrayList<>();
loincCdModList.add(loincMod);
CodeAndModifierResponse loincCode = new CodeAndModifierResponse();
loincCode.setCd(888l);
loincCode.setStcCd("loincCdMod");
loincCode.setStcCdDesc("loincCdMod_desc");
loincCode.setFlag(false);
loincCode.setStartDate("04/17/2018");
loincCode.setEndDate("04/17/2018");
List<CodeAndModifierResponse> codeAndModifierResponsesList = new ArrayList<>();
codeAndModifierResponsesList.add(loincCode);
when(loincModCdRepository.findByisactiveInAndIsarchive(Matchers.anyList(), Matchers.eq('N')))
.thenReturn(loincCdModList);
// act (service)
List<CodeAndModifierResponse> codeAndModifier = (List<CodeAndModifierResponse>) codeAndModService
.getCodeAndModifier(url, codeActive);
assertEquals(1, codeAndModifier.size());
assertEquals("loincCdMod", codeAndModifier.get(0).getStcCd());
}
@SuppressWarnings("unchecked")
@Test
public void testGetCodeAndModifier_hccs_success() throws Exception {
// arrange (service)
String url = "/api/v1/populate/hccs";
List<String> codeActive = new ArrayList<>();
codeActive.add("Y");
codeActive.add("N");
// arrange (repository)
HccsCd hccsCd1 = new HccsCd();
hccsCd1.setHccsId(777l);
hccsCd1.setIsactive('Y');
hccsCd1.setStchccstatuscatCd("hccsCd");
hccsCd1.setStchccstatuscatCdDesc("hccsCd_desc");
hccsCd1.setStartdate(dateFormat.parse("04/17/2018"));
hccsCd1.setEnddate(dateFormat.parse("04/17/2018"));
List<HccsCd> hccsCdList = new ArrayList<>();
hccsCdList.add(hccsCd1);
CodeAndModifierResponse hccsCd = new CodeAndModifierResponse();
hccsCd.setCd(888l);
hccsCd.setStcCd("loincCdMod");
hccsCd.setStcCdDesc("loincCdMod_desc");
hccsCd.setFlag(false);
hccsCd.setStartDate("04/17/2018");
hccsCd.setEndDate("04/17/2018");
List<CodeAndModifierResponse> codeAndModifierResponsesList = new ArrayList<>();
codeAndModifierResponsesList.add(hccsCd);
when(hccsCdRepository.findByisactiveInAndIsarchive(Matchers.anyList(), Matchers.eq('N')))
.thenReturn(hccsCdList);
// act (service)
List<CodeAndModifierResponse> response = (List<CodeAndModifierResponse>) codeAndModService
.getCodeAndModifier(url, codeActive);
assertEquals(1, response.size());
assertEquals("hccsCd", response.get(0).getStcCd());
}
@SuppressWarnings({ "unchecked", "unused" })
@Test(expected = GenericException.class)
public void testGetCodeAndModifier_fail() throws GenericException {
String url = "/api/v1/populate/apples";
List<String> codeActive = new ArrayList<>();
codeActive.add("Y");
codeActive.add("N");
List<CodeAndModifierResponse> response = (List<CodeAndModifierResponse>) codeAndModService
.getCodeAndModifier(url, codeActive);
}
@Test
public void test_checkSubmittedModificationsForDupes() {
// arrange (service)
CodeAndModifierRequest loinc = new CodeAndModifierRequest();
loinc.setStcCd("loinc");
List<CodeAndModifierRequest> loincList = new ArrayList<>();
loincList.add(loinc);
CodeAndModifierRequest loincMod = new CodeAndModifierRequest();
loincMod.setStcCd("loincMod");
List<CodeAndModifierRequest> loincModList = new ArrayList<>();
loincModList.add(loincMod);
CodeAndModifierRequest hccsCd = new CodeAndModifierRequest();
hccsCd.setStcCd("hccs");
List<CodeAndModifierRequest> hccList = new ArrayList<>();
hccList.add(hccsCd);
GenericRequest request = new GenericRequest();
request.setLoincList(loincList);
request.setHccList(hccList);
request.setLoincModList(loincModList);
// arrange(repository)
LoincCd _loincCd = new LoincCd();
_loincCd.setLoincId(999l);
_loincCd.setStcloincCd("loincCd");
_loincCd.setStcloincCdDesc("loincCd_desc");
LoincModCd _loincModCd = new LoincModCd();
_loincModCd.setLoincModId(999l);
_loincModCd.setStcloincCdMod("loincModCd");
_loincModCd.setStcloincCdMod("loincModCd_desc");
HccsCd _hccsCd = new HccsCd();
_hccsCd.setHccsId(999l);
_hccsCd.setStchccstatuscatCd("hccsCd");
_hccsCd.setStchccstatuscatCdDesc("hccsCd_desc");
when(loincCdRepository.findOneByStcloincCd(Matchers.any(String.class))).thenReturn(_loincCd);
when(loincModCdRepository.findOneByStcloincCdMod(Matchers.any(String.class))).thenReturn(_loincModCd);
when(hccsCdRepository.findOneByStchccstatuscatCd(Matchers.any(String.class))).thenReturn(_hccsCd);
// act (repository)
List<String> duplicateErrorList = codeAndModService.checkSubmittedModificationsForDupes(request);
assertEquals(3, duplicateErrorList.size());
assertEquals("Duplicate Found: loincMod of type LOINC Modifier Code ", duplicateErrorList.get(0));
assertEquals("Duplicate Found: loinc of type LOINC Code ", duplicateErrorList.get(1));
assertEquals("Duplicate Found: hccs of type HCCS Code ", duplicateErrorList.get(2));
}
@Test
public void testAddOrModifyCodeAndModifier_loinc_success() throws Exception {
CodeAndModifierRequest loinc = new CodeAndModifierRequest();
loinc.setCd(130l);
loinc.setStcCd("2018");
loinc.setStcCdDesc("loinc");
loinc.setFlag(false);
loinc.setStartDate("04/17/2018");
loinc.setEndDate("04/17/2018");
loinc.setLevel("claim");
loinc.setArchive(false);
List<CodeAndModifierRequest> loincList = new ArrayList<>();
loincList.add(loinc);
LoincCd loinc1 = new LoincCd();
loinc1.setLoincId(loinc.getCd());
loinc1.setIsactive('N');
loinc1.setStcloincCd(loinc.getStcCd());
loinc1.setStcloincCdDesc(loinc.getStcCdDesc());
loinc1.setDatecreated(dateFormat.parse("04/17/2018"));
loinc1.setDatemodified(dateFormat.parse(loinc.getEndDate()));
loinc1.setIsarchive('Y');
CodeAndModifierRequest loincMod = new CodeAndModifierRequest();
loincMod.setCd(1000l);
loincMod.setStcCd("2018");
loincMod.setStcCdDesc("loincMod");
loincMod.setFlag(true);
loincMod.setStartDate("04/17/2018");
loincMod.setEndDate("04/17/2018");
loincMod.setLevel("line");
List<CodeAndModifierRequest> loincModList = new ArrayList<>();
loincModList.add(loincMod);
LoincModCd loincModCd = new LoincModCd();
loincModCd.setLoincModId(loincMod.getCd());
loincModCd.setIsactive('N');
loincModCd.setStcloincCdMod(loincMod.getStcCd());
loincModCd.setStcloincCdModDesc(loincMod.getStcCdDesc());
loincModCd.setDatecreated(dateFormat.parse("04/17/2018"));
loincModCd.setDatemodified(dateFormat.parse(loincMod.getEndDate()));
CodeAndModifierRequest hccsCd = new CodeAndModifierRequest();
hccsCd.setCd(1000l);
hccsCd.setStcCd("2018");
hccsCd.setStcCdDesc("hccs");
hccsCd.setFlag(false);
hccsCd.setStartDate("04/17/2018");
hccsCd.setEndDate("04/17/2018");
hccsCd.setLevel("claim");
List<CodeAndModifierRequest> hccList = new ArrayList<>();
hccList.add(hccsCd);
HccsCd hccs = new HccsCd();
hccs.setHccsId(loincMod.getCd());
hccs.setIsactive('N');
hccs.setStchccstatuscatCd(loincMod.getStcCd());
hccs.setStchccstatuscatCdDesc(loincMod.getStcCdDesc());
hccs.setDatecreated(dateFormat.parse("04/17/2018"));
hccs.setDatemodified(dateFormat.parse(loincMod.getEndDate()));
GenericRequest codeAndModifierRequest = new GenericRequest();
codeAndModifierRequest.setHccList(hccList);
codeAndModifierRequest.setLoincList(loincList);
codeAndModifierRequest.setLoincModList(loincModList);
LoincTypeLookup loincTypeLookupClaim = new LoincTypeLookup();
loincTypeLookupClaim.setId(1);
loincTypeLookupClaim.setDescription("claim level");
loincTypeLookupClaim.setIdCd("claim");
// loincTypeLookup.setLoincCds(loincCds);
LoincTypeLookup loincTypeLookupLine = new LoincTypeLookup();
loincTypeLookupLine.setId(2);
loincTypeLookupLine.setDescription("line level");
loincTypeLookupLine.setIdCd("line");
LoincTypeLookup loincTypeLookupClmLine = new LoincTypeLookup();
loincTypeLookupClmLine.setId(3);
loincTypeLookupClmLine.setDescription("claim and line level");
loincTypeLookupClmLine.setIdCd("both");
List<LoincTypeLookup> loincTypeRepoResults = new ArrayList<>();
loincTypeRepoResults.add(loincTypeLookupClaim);
loincTypeRepoResults.add(loincTypeLookupLine);
loincTypeRepoResults.add(loincTypeLookupClmLine);
when(loincTypeLookupRepository.findAll()).thenReturn(loincTypeRepoResults);
when(loincCdRepository.findBystcloincCd(loinc.getStcCd())).thenReturn(loinc1);
when(loincCdRepository.save(Matchers.any(LoincCd.class))).thenReturn(loinc1);
when(loincModCdRepository.findBystcloincCdMod(loincMod.getStcCd())).thenReturn(loincModCd);
when(loincModCdRepository.save(Matchers.any(LoincModCd.class))).thenReturn(loincModCd);
// here
when(hccsCdRepository.findBystchccstatuscatCd(hccsCd.getStcCd())).thenReturn(hccs);
when(hccsCdRepository.save(Matchers.any(HccsCd.class))).thenReturn(hccs);
boolean addOrModifyCodeAndModifier = codeAndModService.addOrModifyCodeAndModifier(codeAndModifierRequest);
System.out.println(codeAndModifierRequest);
assertEquals(false, addOrModifyCodeAndModifier);
}
@Test
public void getArchivedCodes() throws Exception {
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
CodeAndModifierRequest loinc = new CodeAndModifierRequest();
loinc.setCd(130l);
loinc.setStcCd("2018");
loinc.setStcCdDesc("aaa");
loinc.setFlag(false);
loinc.setStartDate("04/17/2018");
loinc.setEndDate("04/17/2018");
loinc.setLevel("claim");
loinc.setArchive(true);
List<CodeAndModifierRequest> loincList = new ArrayList<>();
loincList.add(loinc);
LoincCd loinc1 = new LoincCd();
loinc1.setLoincId(loinc.getCd());
loinc1.setIsactive('N');
loinc1.setStcloincCd(loinc.getStcCd());
loinc1.setStcloincCdDesc(loinc.getStcCdDesc());
loinc1.setDatecreated(dateFormat.parse("04/17/2018"));
loinc1.setDatemodified(dateFormat.parse(loinc.getEndDate()));
loinc1.setIsarchive('Y');
CodeAndModifierRequest loincMod = new CodeAndModifierRequest();
loincMod.setCd(1000l);
loincMod.setStcCd("2018");
loincMod.setStcCdDesc("aaa");
loincMod.setFlag(false);
loincMod.setStartDate("04/17/2018");
loincMod.setEndDate("04/17/2018");
loincMod.setLevel("line");
loincMod.setArchive(true);
List<CodeAndModifierRequest> loincModList = new ArrayList<>();
loincModList.add(loincMod);
LoincModCd loincModCd = new LoincModCd();
loincModCd.setLoincModId(loincMod.getCd());
loincModCd.setIsactive('N');
loincModCd.setStcloincCdMod(loincMod.getStcCd());
loincModCd.setStcloincCdModDesc(loincMod.getStcCdDesc());
loincModCd.setDatecreated(dateFormat.parse("04/17/2018"));
loincModCd.setDatemodified(dateFormat.parse(loincMod.getEndDate()));
loincModCd.setIsarchive('Y');
CodeAndModifierRequest hccsCd = new CodeAndModifierRequest();
hccsCd.setCd(1000l);
hccsCd.setStcCd("2018");
hccsCd.setStcCdDesc("aaa");
hccsCd.setFlag(false);
hccsCd.setStartDate("04/17/2018");
hccsCd.setEndDate("04/17/2018");
hccsCd.setLevel("claim");
hccsCd.setArchive(true);
List<CodeAndModifierRequest> hccList = new ArrayList<>();
hccList.add(hccsCd);
HccsCd hccs = new HccsCd();
hccs.setHccsId(hccsCd.getCd());
hccs.setIsactive('N');
hccs.setStchccstatuscatCd(hccsCd.getStcCd());
hccs.setStchccstatuscatCdDesc(hccsCd.getStcCdDesc());
hccs.setDatecreated(dateFormat.parse("04/17/2018"));
hccs.setDatemodified(dateFormat.parse(hccsCd.getEndDate()));
hccs.setIsarchive('Y');
GenericRequest codeAndModifierRequest = new GenericRequest();
codeAndModifierRequest.setHccList(hccList);
codeAndModifierRequest.setLoincList(loincList);
codeAndModifierRequest.setLoincModList(loincModList);
List<String> errorListLoinc = new LinkedList<>();
errorListLoinc.add(String.format("Duplicate Found: %s of type %s ", loinc.getStcCd(), "LOINC Modifier Code"));
errorListLoinc.add(String.format("Duplicate Found: %s of type %s ", loinc.getStcCd(), "LOINC Code"));
errorListLoinc.add(String.format("Duplicate Found: %s of type %s ", loinc.getStcCd(), "HCCS Code"));
List<String> returnList = new LinkedList<>();
returnList.addAll(errorListLoinc);
when(hccsCdRepository.findOneByStchccstatuscatCd(hccsCd.getStcCd())).thenReturn(hccs);
when(loincCdRepository.findOneByStcloincCd(loinc.getStcCd())).thenReturn(loinc1);
when(loincModCdRepository.findOneByStcloincCdMod(loincMod.getStcCd())).thenReturn(loincModCd);
List<String> archivedCodes = codeAndModService.getArchivedCodes(codeAndModifierRequest);
assertEquals(errorListLoinc, archivedCodes);
}
}