
001package org.hl7.fhir.r5.terminologies.validation; 002 003import java.util.ArrayList; 004import java.util.Collections; 005import java.util.List; 006 007import org.hl7.fhir.r5.model.OperationOutcome.IssueSeverity; 008import org.hl7.fhir.r5.model.OperationOutcome.OperationOutcomeIssueComponent; 009import org.hl7.fhir.r5.terminologies.utilities.TerminologyServiceErrorClass; 010import org.hl7.fhir.utilities.CommaSeparatedStringBuilder; 011import org.hl7.fhir.utilities.MarkedToMoveToAdjunctPackage; 012 013@MarkedToMoveToAdjunctPackage 014public class ValidationProcessInfo { 015 private TerminologyServiceErrorClass err; 016 private List<OperationOutcomeIssueComponent> issues = new ArrayList<>(); 017 018 public ValidationProcessInfo() { 019 } 020 021 public ValidationProcessInfo(List<OperationOutcomeIssueComponent> issues) { 022 this.issues = issues; 023 } 024 public TerminologyServiceErrorClass getErr() { 025 return err; 026 } 027 public void setErr(TerminologyServiceErrorClass err) { 028 this.err = err; 029 } 030 031 public List<OperationOutcomeIssueComponent> getIssues() { 032 return issues; 033 } 034 public void addIssue(List<OperationOutcomeIssueComponent> issues) { 035 this.issues.addAll(issues); 036 037 } 038 public boolean hasErrors() { 039 for (OperationOutcomeIssueComponent issue : issues) { 040 if (issue.getSeverity() == IssueSeverity.FATAL || issue.getSeverity() == IssueSeverity.ERROR) { 041 return true; 042 } 043 } 044 return false; 045 } 046 public String summary() { 047 List<String> msgs = new ArrayList<>(); 048 for (OperationOutcomeIssueComponent issue : issues) { 049 msgs.add(issue.getDetails().getText()); 050 } 051 Collections.sort(msgs); 052 return CommaSeparatedStringBuilder.join("; ", msgs); 053 } 054 public List<String> summaryList() { 055 List<String> msgs = new ArrayList<>(); 056 for (OperationOutcomeIssueComponent issue : issues) { 057 msgs.add(issue.getDetails().getText()); 058 } 059 Collections.sort(msgs); 060 return msgs; 061 } 062 063 public boolean hasMessage(String msg) { 064 for (OperationOutcomeIssueComponent iss : issues) { 065 if (msg.equals(iss.getDetails().getText())) { 066 return true; 067 } 068 } 069 return false; 070 } 071 072 public boolean hasNotFound(String system) { 073 for (OperationOutcomeIssueComponent iss : issues) { 074 if (iss.getDetails().hasCoding("http://hl7.org/fhir/tools/CodeSystem/tx-issue-type", "not-found") && 075 iss.getDetails().hasText() && iss.getDetails().getText().contains(system)) { 076 return true; 077 } 078 } 079 return false; 080 } 081}