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