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