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 java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import gov.va.med.ars.dao.ars.IPayerInfoRepository;
import gov.va.med.ars.exceptions.GenericException;
import gov.va.med.ars.model.request.PayerInfoListRequest;
import gov.va.med.ars.model.request.PayerInfoRequest;
import gov.va.med.ars.model.response.PayerInfoResponse;
import gov.va.med.ars.service.IPayerInfoService;
import gov.va.med.domain.ars.PayerConfig;
@Service
public class PayerInfoServiceImpl implements IPayerInfoService {
@Autowired
IPayerInfoRepository payerInfoRepository;
private static final Logger logger = LogManager.getLogger(PayerInfoServiceImpl.class);
@Override
public List<PayerInfoResponse> getActivePayerInfo() {
List<PayerConfig> listOfPayers = payerInfoRepository.findByIsarchive('N');
List<PayerInfoResponse> payerInfoResponseList = mapPayersFromDBToReponse(listOfPayers);
return payerInfoResponseList;
}
@Override
public List<PayerInfoResponse> getAllPayerInfo() {
List<PayerConfig> listOfPayers = payerInfoRepository.findAll();
List<PayerInfoResponse> payerInfoResponseList = mapPayersFromDBToReponse(listOfPayers);
return payerInfoResponseList;
}
@Override
public List<String> checkSubmittedModificationsForDupes(PayerInfoListRequest payerInfoListRequest) {
List<String> returnList = new LinkedList<>();
if (payerInfoListRequest.getPayerInfoList() != null && !payerInfoListRequest.getPayerInfoList().isEmpty()) {
returnList.addAll(checkPayerInfo(payerInfoListRequest.getPayerInfoList()));
}
return returnList;
}
private List<PayerInfoResponse> mapPayersFromDBToReponse(List<PayerConfig> listOfPayers) {
logger.info("Size of Payer Config table records " + listOfPayers.size());
List<PayerInfoResponse> payerInfoResponseList = new ArrayList<>();
// Mapping the results
for (PayerConfig record : listOfPayers) {
PayerInfoResponse response = new PayerInfoResponse();
response.setPayerIndex(record.getPayerIndex());
response.setPayerIdentifier(record.getPayerIdentifier());
response.setPayerIdentifierDesc(record.getPayerIdentifierDesc());
response.setIsArchived('Y' == record.getIsarchive() ? true : false);
payerInfoResponseList.add(response);
}
return payerInfoResponseList;
}
private List<String> checkPayerInfo(List<?> listToCheck) {
List<String> errorList = new LinkedList<>();
for (Object object : listToCheck) {
PayerInfoRequest payerInfoObj = (PayerInfoRequest) object;
if (payerInfoObj != null
&& ((payerInfoObj.getPayerIndex() == null || StringUtils.isEmpty(payerInfoObj.getPayerIndex()))
|| !isNumber(payerInfoObj.getPayerIndex()))) {
PayerConfig lookedUpPayerInfo = payerInfoRepository
.findBypayerIdentifier(payerInfoObj.getPayerIdentifier());
if (lookedUpPayerInfo != null) {
logger.warn(
String.format("Found an already existing item for request: %s", payerInfoObj.toString()));
errorList.add(String.format("Duplicate Found: %s of type Payer Info ",
payerInfoObj.getPayerIdentifier()));
}
}
}
return errorList;
}
@Override
public boolean addOrModifyPayerInfo(PayerInfoListRequest payerInfoRequest) throws GenericException {
boolean response = false;
if (payerInfoRequest.getPayerInfoList() != null && !payerInfoRequest.getPayerInfoList().isEmpty()) {
response = savePayerInfo(payerInfoRequest.getPayerInfoList());
}
return response;
}
private boolean isNumber(String input) {
try {
Integer.parseInt(input);
} catch (NumberFormatException ex) {
return false;
}
return true;
}
private boolean savePayerInfo(List<PayerInfoRequest> listToMap) {
PayerConfig payerConfigResponse = null;
for (PayerInfoRequest payerInfoObj : listToMap) {
PayerConfig payerInfoDb = null;
PayerConfig payerInfo = new PayerConfig();
payerInfo.setPayerIdentifier(payerInfoObj.getPayerIdentifier());
payerInfo.setPayerIdentifierDesc(payerInfoObj.getPayerIdentifierDesc());
payerInfo.setDatemodified(new Date());
if (!payerInfoObj.isArchive()) {
payerInfo.setIsarchive('N');
} else {
payerInfo.setIsarchive('Y');
}
if ((payerInfoObj.getPayerIndex() != null || !StringUtils.isEmpty(payerInfoObj.getPayerIndex()))
&& isNumber(payerInfoObj.getPayerIndex())) {
logger.info("payerInfoObj.getPayerIndex() " + payerInfoObj.getPayerIndex());
payerInfoDb = payerInfoRepository.findBypayerIndex(Long.valueOf(payerInfoObj.getPayerIndex()));
}
if (payerInfoDb == null) {
payerInfo.setDatecreated(new Date());
payerConfigResponse = payerInfoRepository.saveAndFlush(payerInfo);
logger.info("payerConfig Add Record Response" + payerConfigResponse);
} else {
payerInfo.setDatecreated(payerInfoDb.getDatecreated());
payerInfo.setPayerIndex(payerInfoDb.getPayerIndex());
payerConfigResponse = payerInfoRepository.save(payerInfo);
logger.info("payerConfig Modify Record Response" + payerConfigResponse);
}
}
return payerConfigResponse != null;
}
}