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