/** * OIG exclusion screening. * * @param item the work item to abort * @param manager the work item manager */ public void executeWorkItem(WorkItem item, WorkItemManager manager) { log.log(Level.INFO, "Checking provider exclusion."); EnrollmentProcess processModel = (EnrollmentProcess) item.getParameter("model"); ProviderInformationType provider = XMLUtility.nsGetProvider(processModel); ScreeningResultsType screeningResults = XMLUtility.nsGetScreeningResults(processModel); ScreeningResultType screeningResultType = new ScreeningResultType(); screeningResults.getScreeningResult().add(screeningResultType); ExternalSourcesScreeningResultType results = null; try { OIGExclusionSearchClient client = new OIGExclusionSearchClient(); results = client.verify(XMLUtility.nsGetProvider(processModel)); VerificationStatusType verificationStatus = XMLUtility.nsGetVerificationStatus(processModel); if (!results.getSearchResults().getSearchResultItem().isEmpty()) { OIGExclusionServiceMatcher matcher = new OIGExclusionServiceMatcher(); MatchStatus status = matcher.match(provider, null, results); if (status == MatchStatus.EXACT_MATCH) { verificationStatus.setNonExclusion("N"); } else { verificationStatus.setNonExclusion("Y"); } } else { verificationStatus.setNonExclusion("Y"); } } catch (TransformerException e) { log.log(Level.ERROR, e); results = new ExternalSourcesScreeningResultType(); results.setStatus(XMLUtility.newStatus("ERROR")); } catch (JAXBException e) { log.log(Level.ERROR, e); results = new ExternalSourcesScreeningResultType(); results.setStatus(XMLUtility.newStatus("ERROR")); } catch (IOException e) { log.log(Level.ERROR, e); results = new ExternalSourcesScreeningResultType(); results.setStatus(XMLUtility.newStatus("ERROR")); } screeningResultType.setExclusionVerificationResult(results.getSearchResults()); screeningResultType.setScreeningType("EXCLUDED PROVIDERS"); screeningResultType.setStatus(XMLUtility.newStatus("SUCCESS")); item.getResults().put("model", processModel); manager.completeWorkItem(item.getId(), item.getResults()); }