001package ca.uhn.fhir.rest.gclient;
002
003/*
004 * #%L
005 * HAPI FHIR - Core Library
006 * %%
007 * Copyright (C) 2014 - 2016 University Health Network
008 * %%
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 * 
013 *      http://www.apache.org/licenses/LICENSE-2.0
014 * 
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 * #L%
021 */
022
023import ca.uhn.fhir.model.primitive.IdDt;
024import ca.uhn.fhir.rest.api.MethodOutcome;
025import ca.uhn.fhir.rest.api.PreferReturnEnum;
026import ca.uhn.fhir.rest.client.IGenericClient;
027
028public interface ICreateTyped extends IClientExecutable<ICreateTyped, MethodOutcome> {
029        
030        /**
031         * @since HAPI 0.9 / FHIR DSTU 2
032         */
033        ICreateWithQuery conditional();
034
035        /**
036         * Specifies that the create should be performed as a conditional create
037         * against a given search URL.
038         *
039         * @param theSearchUrl The search URL to use. The format of this URL should be of the form <code>[ResourceType]?[Parameters]</code>,
040         *                     for example: <code>Patient?name=Smith&amp;identifier=13.2.4.11.4%7C847366</code>
041         * @since HAPI 0.9 / FHIR DSTU 2
042         */
043        ICreateTyped conditionalByUrl(String theSearchUrl);
044
045        /**
046         * Add a <code>Prefer</code> header to the request, which requests that the server include 
047         * or suppress the resource body as a part of the result. If a resource is returned by the server
048         * it will be parsed an accessible to the client via {@link MethodOutcome#getResource()}
049         * 
050         * @since HAPI 1.1
051         */
052        ICreateTyped prefer(PreferReturnEnum theReturn);
053
054        /**
055         * If you want the explicitly state an ID for your created resource, put that ID here. You generally do not
056         * need to invoke this method, so that the server will assign the ID itself.
057         * 
058         * <p>
059         * Note that creating a resource by ID is no longer supported as of FHIR DSTU2. You should use the {@link IGenericClient#update()} operation
060         * to create-by-ID in DSTU2.
061         * </p>
062         */
063        ICreateTyped withId(IdDt theId);
064
065        /**
066         * If you want the explicitly state an ID for your created resource, put that ID here. You generally do not
067         * need to invoke this method, so that the server will assign the ID itself.
068         * 
069         * <p>
070         * Note that creating a resource by ID is no longer supported as of FHIR DSTU2. You should use the {@link IGenericClient#update()} operation
071         * to create-by-ID in DSTU2.
072         * </p>
073         */
074        ICreateTyped withId(String theId);
075
076}