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;
}
}