001/* 002 * #%L 003 * HAPI FHIR - Core Library 004 * %% 005 * Copyright (C) 2014 - 2023 Smile CDR, Inc. 006 * %% 007 * Licensed under the Apache License, Version 2.0 (the "License"); 008 * you may not use this file except in compliance with the License. 009 * You may obtain a copy of the License at 010 * 011 * http://www.apache.org/licenses/LICENSE-2.0 012 * 013 * Unless required by applicable law or agreed to in writing, software 014 * distributed under the License is distributed on an "AS IS" BASIS, 015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 016 * See the License for the specific language governing permissions and 017 * limitations under the License. 018 * #L% 019 */ 020package ca.uhn.fhir.rest.gclient; 021 022import org.hl7.fhir.instance.model.api.IBase; 023 024import org.hl7.fhir.instance.model.api.IBaseParameters; 025 026import ca.uhn.fhir.model.api.IQueryParameterType; 027 028public interface IOperationUntyped { 029 030 /** 031 * Use the given parameters resource as the input to the operation 032 * 033 * @param theParameters The parameters to use as input. May also be <code>null</code> if the operation 034 * does not require any input parameters. 035 */ 036 <T extends IBaseParameters> IOperationUntypedWithInputAndPartialOutput<T> withParameters(T theParameters); 037 038 /** 039 * The operation does not require any input parameters 040 * 041 * @param theOutputParameterType The type to use for the output parameters (this should be set to 042 * <code>Parameters.class</code> drawn from the version of the FHIR structures you are using) 043 */ 044 <T extends IBaseParameters> IOperationUntypedWithInput<T> withNoParameters(Class<T> theOutputParameterType); 045 046 /** 047 * Use chained method calls to construct a Parameters input. This form is a convenience 048 * in order to allow simple method chaining to be used to build up a parameters 049 * resource for the input of an operation without needing to manually construct one. 050 * <p> 051 * A sample invocation of this class could look like:<br/> 052 * <pre>Bundle bundle = client.operation() 053 * .onInstance(new IdType("Patient/A161443")) 054 * .named("everything") 055 * .withParameter(Parameters.class, "_count", new IntegerType(50)) 056 * .useHttpGet() 057 * .returnResourceType(Bundle.class) 058 * .execute(); 059 * </pre> 060 * </p> 061 * 062 * @param theParameterType The type to use for the output parameters (this should be set to 063 * <code>Parameters.class</code> drawn from the version of the FHIR structures you are using) 064 * @param theName The first parameter name 065 * @param theValue The first parameter value 066 */ 067 <T extends IBaseParameters> IOperationUntypedWithInputAndPartialOutput<T> withParameter(Class<T> theParameterType, String theName, IBase theValue); 068 069 /** 070 * Use chained method calls to construct a Parameters input. This form is a convenience 071 * in order to allow simple method chaining to be used to build up a parameters 072 * resource for the input of an operation without needing to manually construct one. 073 * 074 * @param theParameterType The type to use for the output parameters (this should be set to 075 * <code>Parameters.class</code> drawn from the version of the FHIR structures you are using) 076 * @param theName The first parameter name 077 * @param theValue The first parameter value 078 */ 079 <T extends IBaseParameters> IOperationUntypedWithInputAndPartialOutput<T> withSearchParameter(Class<T> theParameterType, String theName, IQueryParameterType theValue); 080 081}