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.ewv.service.impl;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.stereotype.Service;

import gov.va.med.domain.ewv.EwvClaims;
import gov.va.med.domain.ewv.EwvProcedureCodes;
import gov.va.med.ewv.codes.CodeBase;
import gov.va.med.ewv.codes.ProcedureCode;
import gov.va.med.ewv.codes.ProcedureCodesContainer;
import gov.va.med.ewv.service.IEwvProcedureCodesInfoService;
import org.apache.commons.lang.StringUtils;

@Service
public class EwvProcedureCodesInfoServiceImpl implements IEwvProcedureCodesInfoService {

public static final Logger logger = LogManager.getLogger(EwvProcedureCodesInfoServiceImpl.class);

@Override
public ProcedureCodesContainer populateProcedureCodesContainer(EwvClaims claimBean) {
logger.info("Invoked populateProcedureCodesContainer() for claim guid : "+claimBean.getGuid());
String inPrincipalProcedure = claimBean.getHccodesPrincipalProcedure();
String inDateOfProcedure = claimBean.getHccodesPrincipalProcDate();
Set<EwvProcedureCodes> codes = claimBean.getEwvProcedureCodeses();
ProcedureCodesContainer ret = null;

String principalProcedure = inPrincipalProcedure;
String dateOfProcedure = inDateOfProcedure;

if (codes != null) {
List<ProcedureCode> listOfProcedureCodes = createListOfProcedureCodes(inPrincipalProcedure,
inDateOfProcedure, codes);

ret = new ProcedureCodesContainer(principalProcedure, dateOfProcedure, listOfProcedureCodes);
}
logger.info("Exiting populateProcedureCodesContainer() for claim guid : "+claimBean.getGuid());
return ret;
}

@Override
public List<ProcedureCode> createListOfProcedureCodes(String principalProcedureCode, String principalProcedureDate,
Set<EwvProcedureCodes> codes) {
logger.info("Invoked createListOfProcedureCodes()");
List<ProcedureCode> returnList = new ArrayList<ProcedureCode>();
String principalCode = "";
// Add in the principal procedure
if (principalProcedureCode != null && !principalProcedureCode.isEmpty()) {
String code = principalProcedureCode.replaceAll("[^a-zA-Z0-9_-]", "");
principalCode = code;
ProcedureCode principalProcedureBean = new ProcedureCode(1L, code,
principalProcedureDate);
returnList.add(principalProcedureBean);
}

// Add in the codes from the list
for (EwvProcedureCodes codeBean : codes) {
String code = codeBean.getProcedureCode().replaceAll("[^a-zA-Z0-9_-]", "");
ProcedureCode bean = null;

// if there is no principal procedure code but other procedure code,
// Or principal procedure code does not match with the other procedure code then add them
if (StringUtils.isBlank(principalCode) || !principalCode.equals(code)) {
bean = new ProcedureCode(codeBean.getProcSeq().longValue(), code,
codeBean.getProcedureDate());
}

if(bean != null) {
returnList.add(bean);
}
}

Collections.sort(returnList);

// Experience shows that the diagnosis codes in the database include
// sequence numbers
// that sometimes start with 1, and sometimes with 2.
returnList = CodeBase.renumber(returnList);
logger.info("Exiting createListOfProcedureCodes()");
return returnList;
}

}