
001 002package ca.uhn.fhir.jpa.rp.r5; 003 004import java.util.*; 005 006import org.apache.commons.lang3.StringUtils; 007 008import ca.uhn.fhir.jpa.provider.r5.*; 009import ca.uhn.fhir.jpa.searchparam.SearchParameterMap; 010import ca.uhn.fhir.model.api.Include; 011import ca.uhn.fhir.model.api.annotation.*; 012import org.hl7.fhir.r5.model.*; 013import ca.uhn.fhir.rest.annotation.*; 014import ca.uhn.fhir.rest.param.*; 015import ca.uhn.fhir.rest.api.SortSpec; 016import ca.uhn.fhir.rest.api.SummaryEnum; 017import ca.uhn.fhir.rest.api.SearchTotalModeEnum; 018import ca.uhn.fhir.rest.api.SearchContainedModeEnum; 019 020public class LocationResourceProvider extends 021 JpaResourceProviderR5<Location> 022 { 023 024 @Override 025 public Class<Location> getResourceType() { 026 return Location.class; 027 } 028 029 @Search(allowUnknownParams=true) 030 public ca.uhn.fhir.rest.api.server.IBundleProvider search( 031 javax.servlet.http.HttpServletRequest theServletRequest, 032 javax.servlet.http.HttpServletResponse theServletResponse, 033 034 ca.uhn.fhir.rest.api.server.RequestDetails theRequestDetails, 035 036 @Description(shortDefinition="Search the contents of the resource's data using a filter") 037 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_FILTER) 038 StringAndListParam theFtFilter, 039 040 @Description(shortDefinition="Search the contents of the resource's data using a fulltext search") 041 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_CONTENT) 042 StringAndListParam theFtContent, 043 044 @Description(shortDefinition="Search the contents of the resource's narrative using a fulltext search") 045 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_TEXT) 046 StringAndListParam theFtText, 047 048 @Description(shortDefinition="Search for resources which have the given tag") 049 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_TAG) 050 TokenAndListParam theSearchForTag, 051 052 @Description(shortDefinition="Search for resources which have the given security labels") 053 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_SECURITY) 054 TokenAndListParam theSearchForSecurity, 055 056 @Description(shortDefinition="Search for resources which have the given profile") 057 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_PROFILE) 058 UriAndListParam theSearchForProfile, 059 060 @Description(shortDefinition="Search for resources which have the given source value (Resource.meta.source)") 061 @OptionalParam(name=ca.uhn.fhir.rest.api.Constants.PARAM_SOURCE) 062 UriAndListParam theSearchForSource, 063 064 @Description(shortDefinition="Return resources linked to by the given target") 065 @OptionalParam(name="_has") 066 HasAndListParam theHas, 067 068 069 070 @Description(shortDefinition="The ID of the resource") 071 @OptionalParam(name="_id") 072 TokenAndListParam the_id, 073 074 075 @Description(shortDefinition="Search on the narrative of the resource") 076 @OptionalParam(name="_text") 077 SpecialAndListParam the_text, 078 079 080 @Description(shortDefinition="A (part of the) address of the location") 081 @OptionalParam(name="address") 082 StringAndListParam theAddress, 083 084 085 @Description(shortDefinition="A city specified in an address") 086 @OptionalParam(name="address-city") 087 StringAndListParam theAddress_city, 088 089 090 @Description(shortDefinition="A country specified in an address") 091 @OptionalParam(name="address-country") 092 StringAndListParam theAddress_country, 093 094 095 @Description(shortDefinition="A postal code specified in an address") 096 @OptionalParam(name="address-postalcode") 097 StringAndListParam theAddress_postalcode, 098 099 100 @Description(shortDefinition="A state specified in an address") 101 @OptionalParam(name="address-state") 102 StringAndListParam theAddress_state, 103 104 105 @Description(shortDefinition="A use code specified in an address") 106 @OptionalParam(name="address-use") 107 TokenAndListParam theAddress_use, 108 109 110 @Description(shortDefinition="Technical endpoints providing access to services operated for the location") 111 @OptionalParam(name="endpoint", targetTypes={ } ) 112 ReferenceAndListParam theEndpoint, 113 114 115 @Description(shortDefinition="An identifier for the location") 116 @OptionalParam(name="identifier") 117 TokenAndListParam theIdentifier, 118 119 120 @Description(shortDefinition="A portion of the location's name or alias") 121 @OptionalParam(name="name") 122 StringAndListParam theName, 123 124 125 @Description(shortDefinition="Search for locations where the location.position is near to, or within a specified distance of, the provided coordinates expressed as [latitude]|[longitude]|[distance]|[units] (using the WGS84 datum, see notes).If the units are omitted, then kms should be assumed. If the distance is omitted, then the server can use its own discretion as to what distances should be considered near (and units are irrelevant)Servers may search using various techniques that might have differing accuracies, depending on implementation efficiency.") 126 @OptionalParam(name="near") 127 SpecialAndListParam theNear, 128 129 130 @Description(shortDefinition="Searches for locations (typically bed/room) that have an operational status (e.g. contaminated, housekeeping)") 131 @OptionalParam(name="operational-status") 132 TokenAndListParam theOperational_status, 133 134 135 @Description(shortDefinition="Searches for locations that are managed by the provided organization") 136 @OptionalParam(name="organization", targetTypes={ } ) 137 ReferenceAndListParam theOrganization, 138 139 140 @Description(shortDefinition="A location of which this location is a part") 141 @OptionalParam(name="partof", targetTypes={ } ) 142 ReferenceAndListParam thePartof, 143 144 145 @Description(shortDefinition="Searches for locations with a specific kind of status") 146 @OptionalParam(name="status") 147 TokenAndListParam theStatus, 148 149 150 @Description(shortDefinition="A code for the type of location") 151 @OptionalParam(name="type") 152 TokenAndListParam theType, 153 154 @RawParam 155 Map<String, List<String>> theAdditionalRawParams, 156 157 @Description(shortDefinition="Only return resources which were last updated as specified by the given range") 158 @OptionalParam(name="_lastUpdated") 159 DateRangeParam theLastUpdated, 160 161 @IncludeParam 162 Set<Include> theIncludes, 163 164 @IncludeParam(reverse=true) 165 Set<Include> theRevIncludes, 166 167 @Sort 168 SortSpec theSort, 169 170 @ca.uhn.fhir.rest.annotation.Count 171 Integer theCount, 172 173 @ca.uhn.fhir.rest.annotation.Offset 174 Integer theOffset, 175 176 SummaryEnum theSummaryMode, 177 178 SearchTotalModeEnum theSearchTotalMode, 179 180 SearchContainedModeEnum theSearchContainedMode 181 182 ) { 183 startRequest(theServletRequest); 184 try { 185 SearchParameterMap paramMap = new SearchParameterMap(); 186 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_FILTER, theFtFilter); 187 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_CONTENT, theFtContent); 188 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_TEXT, theFtText); 189 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_TAG, theSearchForTag); 190 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_SECURITY, theSearchForSecurity); 191 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_PROFILE, theSearchForProfile); 192 paramMap.add(ca.uhn.fhir.rest.api.Constants.PARAM_SOURCE, theSearchForSource); 193 paramMap.add("_has", theHas); 194 paramMap.add("_id", the_id); 195 paramMap.add("_text", the_text); 196 paramMap.add("address", theAddress); 197 paramMap.add("address-city", theAddress_city); 198 paramMap.add("address-country", theAddress_country); 199 paramMap.add("address-postalcode", theAddress_postalcode); 200 paramMap.add("address-state", theAddress_state); 201 paramMap.add("address-use", theAddress_use); 202 paramMap.add("endpoint", theEndpoint); 203 paramMap.add("identifier", theIdentifier); 204 paramMap.add("name", theName); 205 paramMap.add("near", theNear); 206 paramMap.add("operational-status", theOperational_status); 207 paramMap.add("organization", theOrganization); 208 paramMap.add("partof", thePartof); 209 paramMap.add("status", theStatus); 210 paramMap.add("type", theType); 211 paramMap.setRevIncludes(theRevIncludes); 212 paramMap.setLastUpdated(theLastUpdated); 213 paramMap.setIncludes(theIncludes); 214 paramMap.setSort(theSort); 215 paramMap.setCount(theCount); 216 paramMap.setOffset(theOffset); 217 paramMap.setSummaryMode(theSummaryMode); 218 paramMap.setSearchTotalMode(theSearchTotalMode); 219 paramMap.setSearchContainedMode(theSearchContainedMode); 220 221 getDao().translateRawParameters(theAdditionalRawParams, paramMap); 222 223 ca.uhn.fhir.rest.api.server.IBundleProvider retVal = getDao().search(paramMap, theRequestDetails, theServletResponse); 224 return retVal; 225 } finally { 226 endRequest(theServletRequest); 227 } 228 } 229 230}