001package org.hl7.fhir.r5.terminologies.expansion; 002 003import java.util.ArrayList; 004import java.util.List; 005 006import org.hl7.fhir.r5.model.ValueSet; 007import org.hl7.fhir.r5.terminologies.ValueSetUtilities; 008import org.hl7.fhir.r5.terminologies.utilities.TerminologyServiceErrorClass; 009 010/** 011 * Some value sets are just too big to expand. Instead of an expanded value set, 012 * you get back an interface that can test membership - usually on a server somewhere 013 * 014 * @author Grahame 015 */ 016public class ValueSetExpansionOutcome { 017 private ValueSet valueset; 018 private String error; 019 private TerminologyServiceErrorClass errorClass; 020 private String txLink; 021 private List<String> allErrors = new ArrayList<>(); 022 023 public ValueSetExpansionOutcome(ValueSet valueset) { 024 super(); 025 this.valueset = valueset; 026 this.error = null; 027 } 028 public ValueSetExpansionOutcome(ValueSet valueset, String error, TerminologyServiceErrorClass errorClass) { 029 super(); 030 this.valueset = valueset; 031 this.error = error; 032 this.errorClass = errorClass; 033 allErrors.add(error); 034 } 035 036 public ValueSetExpansionOutcome(String error, TerminologyServiceErrorClass errorClass) { 037 this.valueset = null; 038 this.error = error; 039 this.errorClass = errorClass; 040 allErrors.add(error); 041 } 042 public ValueSetExpansionOutcome(String error, TerminologyServiceErrorClass errorClass, List<String> errList) { 043 this.valueset = null; 044 this.error = error; 045 this.errorClass = errorClass; 046 this.allErrors.addAll(errList); 047 if (!allErrors.contains(error)) { 048 allErrors.add(error); 049 } 050 if (!errList.contains(error)) { 051 errList.add(error); 052 } 053 } 054 055 public ValueSet getValueset() { 056 return valueset; 057 } 058 public String getError() { 059 return error; 060 } 061 public TerminologyServiceErrorClass getErrorClass() { 062 return errorClass; 063 } 064 public String getTxLink() { 065 return txLink; 066 } 067 public ValueSetExpansionOutcome setTxLink(String txLink) { 068 this.txLink = txLink; 069 return this; 070 } 071 public List<String> getAllErrors() { 072 return allErrors; 073 } 074 075 public boolean isOk() { 076 return (allErrors.isEmpty() || (allErrors.size() == 1 && allErrors.get(0) == null)) && error == null; 077 } 078 public int count() { 079 if (valueset == null) { 080 return 0; 081 } 082 return ValueSetUtilities.countExpansion(valueset); 083 } 084}