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.EwvDiagnosisCodes;
import gov.va.med.ewv.codes.CodeBase;
import gov.va.med.ewv.codes.DiagnosisCode;
import gov.va.med.ewv.codes.DiagnosisCodesContainer;
import gov.va.med.ewv.service.IEwvDiagnosisCodesInfoService;
import gov.va.med.ewv.util.EwvUtils;

@Service
public class EwvDiagnosisCodeInfoServiceImpl implements IEwvDiagnosisCodesInfoService {

public static final Logger logger = LogManager.getLogger(EwvDiagnosisCodeInfoServiceImpl.class);
@Override
public DiagnosisCodesContainer populateDiagnosisCodes(EwvClaims claim) {
logger.info("Invoked populateDiagnosisCodes() for claim guid "+claim.getGuid());
// Present on Admission notes has multiple versions
//Set<EwvDiagnosisCodes> diagnosisCodes = ewvDiagnosisCodesRepository.getDiagnosisCodesByClaimGuid(claim.getGuid());

String presentOnAdmissionNotesLong = EwvUtils.addLineBreaks(claim.getHccodesPoaNotes());
String presentOnAdmissionNotesShort = EwvUtils.shorten(presentOnAdmissionNotesLong, 10);
boolean usePresentOnAdmissionModalPanel = false;
if (presentOnAdmissionNotesShort.endsWith("...")) {
usePresentOnAdmissionModalPanel = true;
}

String principalDiagnosisMasterCode = claim.getHccodesPrincipalDiagnosis();
// Need to uncomment when the updated schema jar is added
// String principalDiagnosisPoa =
// claim.getHccodesPrincipalDiagnosisPoa();
String principalDiagnosisPoa = "";
String admittingDiagnosisMasterCode = claim.getHccodesAdmittingDiagnosis();
String reasonForVisitMasterCode = claim.getHccodesReasonForVists();
String eCodeMasterCode = claim.getHccodesECode();

// Phase 2 codes do not need to be split into four columnar lists.
List<DiagnosisCode> diagnosisCodesList = createListOfDxCodes(principalDiagnosisMasterCode,
principalDiagnosisPoa, claim.getEwvDiagnosisCodeses());

DiagnosisCodesContainer diagCodes = new DiagnosisCodesContainer(presentOnAdmissionNotesShort,
presentOnAdmissionNotesLong, usePresentOnAdmissionModalPanel, principalDiagnosisMasterCode,
principalDiagnosisPoa, admittingDiagnosisMasterCode, reasonForVisitMasterCode, eCodeMasterCode,
diagnosisCodesList);

logger.info("Exiting populateDiagnosisCodes() for claim guid "+claim.getGuid());
return diagCodes;
}

// This method, new to Phase II, adds in the Principal Diagnosis and does
// not split the codes into four lists, for four columns.
@Override
public List<DiagnosisCode> createListOfDxCodes(String principalDiagnosisMasterCode, String principalDiagnosisPoa,
Set<EwvDiagnosisCodes> codes) {
logger.info("Invoked createListOfDxCodes() ");
List<DiagnosisCode> returnList = new ArrayList<DiagnosisCode>();

// Add in the principal diagnosis

if ( principalDiagnosisMasterCode== null)
{
logger.info("principalDiagnosisMasterCode is null ");
}

if ( principalDiagnosisPoa == null)
{
logger.info("principalDiagnosisPoa is null ");
}

if( principalDiagnosisMasterCode != null)
{
String pdc = principalDiagnosisMasterCode.replaceAll("[^a-zA-Z0-9._-]", "");

returnList.add(new DiagnosisCode(1L, pdc.trim(), principalDiagnosisPoa));
}

logger.info("Going to loop through EwvDiagnosisCodes() ");

for (EwvDiagnosisCodes codeBean : codes) {
// Need to change back to Long
Long sequence = codeBean.getDiagSeq().longValue();
String diagnosisCode = codeBean.getDiagnosisCode().replaceAll("[^a-zA-Z0-9._-]", "");
returnList.add(new DiagnosisCode(sequence, diagnosisCode, codeBean.getPoaIndicator5010()));
}

logger.info("Sort DiagnosisCode List");
// sorting DX codes order by the diagnosis sequence which maintains the order of DX codes appear in the X12 document
Collections.sort(returnList);

logger.info("Exiting createListOfDxCodes() ");
return returnList;
}
}