From 116a4a308814c9d23ff83e3b3f9e81e10f1f6150 Mon Sep 17 00:00:00 2001 From: Volker Schmidt Date: Wed, 21 Nov 2018 00:57:06 +0100 Subject: [PATCH] Added tests for the running application and bug fixes. --- app/pom.xml | 16 + .../main/java/org/dhis2/fhir/adapter/App.java | 4 +- .../org/dhis2/fhir/adapter/AppException.java | 5 + .../dhis2/fhir/adapter/setup/SetupResult.java | 67 + .../fhir/adapter/setup/SetupService.java | 10 +- app/src/main/resources/logback-spring.xml | 1 + .../dhis2/fhir/adapter/AbstractAppTest.java | 271 + .../dhis2/fhir/adapter/Dhis2SpringRunner.java | 82 + .../fhir/adapter/StaticResourcesAppTest.java | 54 + .../dhis2/fhir/adapter/TestConfiguration.java | 194 + .../JavaScriptGeneratorControllerAppTest.java | 54 + .../RemoteRestHookControllerAppTest.java | 79 + ...edEntityInstanceTransformationAppTest.java | 60 + ...edEntityInstanceTransformationAppTest.java | 106 + app/src/test/resources/data.sql | 468 + app/src/test/resources/logback-test.xml | 40 + .../dhis/test/default-org-unit-OU_1234.json | 1 + .../dhis/test/default-org-unit-empty.json | 1 + .../test/default-tei-15-create-response.json | 11 + .../dhis/test/default-tei-15-create.json | 7 + .../adapter/dhis/test/default-tei-15-get.json | 13 + .../dhis/test/default-tei-15-update.json | 9 + .../adapter/dhis/test/default-tei-empty.json | 2 + .../default-tracked-entity-attributes.json | 13 + .../test/default-tracked-entity-type.json | 25 + .../fhir/test/dstu3/get-organization-18.json | 18 + .../fhir/test/dstu3/get-organization-19.json | 18 + .../fhir/test/dstu3/get-patient-15.json | 107 + .../adapter/fhir/test/dstu3/metadata.json | 19388 ++++++++++++++++ .../fhir/test/dstu3/search-patient-15.json | 130 + app/src/test/resources/test.properties | 53 + .../lock/impl/EmbeddedLockContextImpl.java | 103 + .../lock/impl/EmbeddedLockManagerImpl.java | 111 + ...=> PostgreSqlAdvisoryLockContextImpl.java} | 6 +- ...=> PostgreSqlAdvisoryLockManagerImpl.java} | 8 +- .../TrackedEntityMetadataServiceImpl.java | 2 +- .../impl/TrackedEntityServiceImpl.java | 13 +- .../repository/AlreadyQueuedException.java | 44 + ...tomQueuedRemoteFhirResourceRepository.java | 5 +- ...edRemoteSubscriptionRequestRepository.java | 5 +- ...ueuedRemoteFhirResourceRepositoryImpl.java | 95 +- ...moteSubscriptionRequestRepositoryImpl.java | 95 +- .../repository/impl/SqlExceptionUtils.java | 75 + .../fhir/metadata/model/AbstractRule.java | 2 +- .../metadata/model/ExecutableScriptArg.java | 2 +- .../metadata/model/MappedTrackedEntity.java | 2 +- .../fhir/metadata/model/ScriptArg.java | 2 +- .../adapter/fhir/metadata/model/System.java | 4 +- .../metadata/model/VersionedBaseMetadata.java | 6 +- .../impl/RemoteRestHookProcessorImpl.java | 86 +- .../impl/AbstractFhirToDhisTransformer.java | 11 +- .../FhirToTrackedEntityTransformer.java | 11 +- fhir/src/test/resources/test.properties | 1 - pom.xml | 7 + 54 files changed, 21904 insertions(+), 99 deletions(-) create mode 100644 app/src/main/java/org/dhis2/fhir/adapter/setup/SetupResult.java create mode 100644 app/src/test/java/org/dhis2/fhir/adapter/AbstractAppTest.java create mode 100644 app/src/test/java/org/dhis2/fhir/adapter/Dhis2SpringRunner.java create mode 100644 app/src/test/java/org/dhis2/fhir/adapter/StaticResourcesAppTest.java create mode 100644 app/src/test/java/org/dhis2/fhir/adapter/TestConfiguration.java create mode 100644 app/src/test/java/org/dhis2/fhir/adapter/common/scriptabe/generator/JavaScriptGeneratorControllerAppTest.java create mode 100644 app/src/test/java/org/dhis2/fhir/adapter/fhir/remote/RemoteRestHookControllerAppTest.java create mode 100644 app/src/test/java/org/dhis2/fhir/adapter/fhir/transform/impl/trackedentity/AbstractTrackedEntityInstanceTransformationAppTest.java create mode 100644 app/src/test/java/org/dhis2/fhir/adapter/fhir/transform/impl/trackedentity/PatientToTrackedEntityInstanceTransformationAppTest.java create mode 100644 app/src/test/resources/data.sql create mode 100644 app/src/test/resources/logback-test.xml create mode 100644 app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-org-unit-OU_1234.json create mode 100644 app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-org-unit-empty.json create mode 100644 app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-15-create-response.json create mode 100644 app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-15-create.json create mode 100644 app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-15-get.json create mode 100644 app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-15-update.json create mode 100644 app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-empty.json create mode 100644 app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tracked-entity-attributes.json create mode 100644 app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tracked-entity-type.json create mode 100644 app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/get-organization-18.json create mode 100644 app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/get-organization-19.json create mode 100644 app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/get-patient-15.json create mode 100644 app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/metadata.json create mode 100644 app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/search-patient-15.json create mode 100644 app/src/test/resources/test.properties create mode 100644 common/src/main/java/org/dhis2/fhir/adapter/lock/impl/EmbeddedLockContextImpl.java create mode 100644 common/src/main/java/org/dhis2/fhir/adapter/lock/impl/EmbeddedLockManagerImpl.java rename common/src/main/java/org/dhis2/fhir/adapter/lock/impl/{LockContextImpl.java => PostgreSqlAdvisoryLockContextImpl.java} (96%) rename common/src/main/java/org/dhis2/fhir/adapter/lock/impl/{LockManagerImpl.java => PostgreSqlAdvisoryLockManagerImpl.java} (90%) create mode 100644 fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/AlreadyQueuedException.java create mode 100644 fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/impl/SqlExceptionUtils.java diff --git a/app/pom.xml b/app/pom.xml index 47a2b725..48b0fc4b 100644 --- a/app/pom.xml +++ b/app/pom.xml @@ -81,6 +81,22 @@ spring-boot-starter-tomcat provided + + + org.springframework.security + spring-security-test + test + + + com.h2database + h2 + test + + + com.github.tomakehurst + wiremock + test + diff --git a/app/src/main/java/org/dhis2/fhir/adapter/App.java b/app/src/main/java/org/dhis2/fhir/adapter/App.java index 1a0ebde6..0c30d481 100644 --- a/app/src/main/java/org/dhis2/fhir/adapter/App.java +++ b/app/src/main/java/org/dhis2/fhir/adapter/App.java @@ -58,6 +58,8 @@ public class App extends SpringBootServletInitializer public static final String DHIS2_HOME_PROP = "dhis2.home"; + public static final String RELATIVE_APPLICATION_PROPERTY_SOURCE = "services/fhir-adapter/application.yml"; + @Override protected SpringApplicationBuilder configure( SpringApplicationBuilder application ) { @@ -94,7 +96,7 @@ protected static void checkEnv() throws AppException throw new AppException( "DHIS2 home environment variable " + DHIS2_HOME_ENV + " has not been set." ); } - final File configFile = new File( home + "/services/fhir-adapter/application.yml" ); + final File configFile = new File( home + "/" + RELATIVE_APPLICATION_PROPERTY_SOURCE ); if ( !configFile.canRead() ) { throw new AppException( "Adapter configuration file does not exist or cannot be read: " + configFile.getAbsolutePath() ); diff --git a/app/src/main/java/org/dhis2/fhir/adapter/AppException.java b/app/src/main/java/org/dhis2/fhir/adapter/AppException.java index b6d4259d..eb600bef 100644 --- a/app/src/main/java/org/dhis2/fhir/adapter/AppException.java +++ b/app/src/main/java/org/dhis2/fhir/adapter/AppException.java @@ -41,4 +41,9 @@ public AppException( String message ) { super( message ); } + + public AppException( String message, Throwable cause ) + { + super( message, cause ); + } } diff --git a/app/src/main/java/org/dhis2/fhir/adapter/setup/SetupResult.java b/app/src/main/java/org/dhis2/fhir/adapter/setup/SetupResult.java new file mode 100644 index 00000000..298021e7 --- /dev/null +++ b/app/src/main/java/org/dhis2/fhir/adapter/setup/SetupResult.java @@ -0,0 +1,67 @@ +package org.dhis2.fhir.adapter.setup; + +/* + * Copyright (c) 2004-2018, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import org.dhis2.fhir.adapter.fhir.metadata.model.FhirResourceType; + +import javax.annotation.Nonnull; +import java.io.Serializable; +import java.util.Collections; +import java.util.Map; +import java.util.UUID; + +/** + * The result of the setup of the FHIR adapter. + */ +public class SetupResult implements Serializable +{ + private static final long serialVersionUID = -5493649240520618453L; + + private final UUID remoteSubscriptionId; + + private final Map remoteSubscriptionResourceIds; + + public SetupResult( @Nonnull UUID remoteSubscriptionId, @Nonnull Map remoteSubscriptionResourceIds ) + { + this.remoteSubscriptionId = remoteSubscriptionId; + this.remoteSubscriptionResourceIds = Collections.unmodifiableMap( remoteSubscriptionResourceIds ); + } + + @Nonnull + public UUID getRemoteSubscriptionId() + { + return remoteSubscriptionId; + } + + @Nonnull + public Map getRemoteSubscriptionResourceIds() + { + return remoteSubscriptionResourceIds; + } +} diff --git a/app/src/main/java/org/dhis2/fhir/adapter/setup/SetupService.java b/app/src/main/java/org/dhis2/fhir/adapter/setup/SetupService.java index ade6cf40..e7f63f0b 100644 --- a/app/src/main/java/org/dhis2/fhir/adapter/setup/SetupService.java +++ b/app/src/main/java/org/dhis2/fhir/adapter/setup/SetupService.java @@ -136,7 +136,7 @@ public boolean hasCompletedSetup() } @Transactional - public void apply( @Nonnull Setup setup ) + public SetupResult apply( @Nonnull Setup setup ) { final System organizationSystem = findOrCreateSystem( setup.getRemoteSubscriptionSetup().getSystemUriSetup().getOrganizationSystemUri(), @@ -145,12 +145,14 @@ public void apply( @Nonnull Setup setup ) setup.getRemoteSubscriptionSetup().getSystemUriSetup().getPatientSystemUri(), "Default DHIS2 Patients", "DEFAULT_DHIS2_PATIENT", "Default DHIS2 patient system URI." ); - createRemoteSubscription( setup.getRemoteSubscriptionSetup(), organizationSystem, patientSystem ); + final SetupResult setupResult = createRemoteSubscription( setup.getRemoteSubscriptionSetup(), organizationSystem, patientSystem ); createSystemCodes( setup.getOrganizationCodeSetup(), organizationSystem ); updateTrackedEntity( setup.getTrackedEntitySetup() ); + return setupResult; } - private void createRemoteSubscription( @Nonnull RemoteSubscriptionSetup setup, @Nonnull System organizationSystem, @Nonnull System patientSystem ) + @Nonnull + private SetupResult createRemoteSubscription( @Nonnull RemoteSubscriptionSetup setup, @Nonnull System organizationSystem, @Nonnull System patientSystem ) { final Set autoCreatedSubscriptionResources = new HashSet<>(); autoCreatedSubscriptionResources.add( FhirResourceType.PATIENT ); @@ -223,6 +225,8 @@ private void createRemoteSubscription( @Nonnull RemoteSubscriptionSetup setup, @ remoteSubscription.getSystems().add( subscriptionPatientSystem ); remoteSubscriptionRepository.saveAndFlush( remoteSubscription ); + return new SetupResult( remoteSubscription.getId(), remoteSubscription.getResources().stream() + .collect( Collectors.toMap( RemoteSubscriptionResource::getFhirResourceType, rsr -> rsr.getId() ) ) ); } private void createSystemCodes( @Nonnull OrganizationCodeSetup setup, @Nonnull System organizationSystem ) diff --git a/app/src/main/resources/logback-spring.xml b/app/src/main/resources/logback-spring.xml index 6d17170a..fde41679 100644 --- a/app/src/main/resources/logback-spring.xml +++ b/app/src/main/resources/logback-spring.xml @@ -40,6 +40,7 @@ + diff --git a/app/src/test/java/org/dhis2/fhir/adapter/AbstractAppTest.java b/app/src/test/java/org/dhis2/fhir/adapter/AbstractAppTest.java new file mode 100644 index 00000000..9bc5bc89 --- /dev/null +++ b/app/src/test/java/org/dhis2/fhir/adapter/AbstractAppTest.java @@ -0,0 +1,271 @@ +package org.dhis2.fhir.adapter; + +/* + * Copyright (c) 2004-2018, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import com.github.tomakehurst.wiremock.WireMockServer; +import com.github.tomakehurst.wiremock.client.WireMock; +import com.github.tomakehurst.wiremock.matching.UrlPattern; +import com.github.tomakehurst.wiremock.stubbing.StubMapping; +import org.apache.activemq.artemis.api.core.client.ClientMessage; +import org.apache.activemq.artemis.api.core.client.ClientRequestor; +import org.apache.activemq.artemis.api.core.client.ClientSession; +import org.apache.activemq.artemis.api.core.management.ManagementHelper; +import org.apache.activemq.artemis.jms.client.ActiveMQSession; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.dhis2.fhir.adapter.fhir.metadata.model.FhirResourceType; +import org.junit.Assert; +import org.junit.Before; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cache.Cache; +import org.springframework.cache.CacheManager; +import org.springframework.http.MediaType; +import org.springframework.jms.UncategorizedJmsException; +import org.springframework.jms.core.JmsTemplate; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.web.client.MockRestServiceServer; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.web.client.RestTemplate; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.nio.charset.StandardCharsets; +import java.util.Objects; + +import static com.github.tomakehurst.wiremock.client.WireMock.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +/** + * Abstract base class for application tests. All interfaces will be setup. + * + * @author volsch + */ +@RunWith( Dhis2SpringRunner.class ) +@SpringBootTest( classes = App.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT ) +@TestPropertySource( "classpath:test.properties" ) +@AutoConfigureMockMvc +public abstract class AbstractAppTest +{ + public static final MediaType FHIR_JSON_MEDIA_TYPE = MediaType.parseMediaType( "application/fhir+json;charset=UTF-8" ); + + public static final MediaType FHIR_XML_MEDIA_TYPE = MediaType.parseMediaType( "application/fhir+xml;charset=UTF-8" ); + + public static final long MAX_COMPLETED_POLL_TIME = 10 * 60_000; + + private static final String RESOURCE_DL_QUEUE_NAME = "jms.queue.remoteFhirResourceDlQueue"; + + /** + * The DHIS2 server that is accessed to retrieve metadata. + */ + protected MockRestServiceServer systemDhis2Server; + + /** + * The DHIS2 server that is accessed to retrieve non-metadata + * as user that is assigned to the remote subscription service. + */ + protected MockRestServiceServer userDhis2Server; + + @Value( "${dhis2.fhir-adapter.endpoint.url}" ) + protected String dhis2BaseUrl; + + @Value( "${dhis2.fhir-adapter.endpoint.api-version}" ) + protected String dhis2ApiVersion; + + @Autowired + @Qualifier( "fhirMockServer" ) + protected WireMockServer fhirMockServer; + + @Autowired + protected MockMvc mockMvc; + + @Autowired + protected TestConfiguration testConfiguration; + + /** + * The REST template that is used to connect to the DHIS2 metadata services. + */ + @Autowired + @Qualifier( "systemDhis2RestTemplate" ) + private RestTemplate systemDhis2RestTemplate; + + /** + * The REST template that is used to connect to the DHIS2 non-metadata services + * as user that is assigned to the remote subscription service. + */ + @Autowired + @Qualifier( "userDhis2RestTemplate" ) + private RestTemplate userDhis2RestTemplate; + + private StubMapping previousResourceSearchStubMapping; + + @Autowired + @Qualifier( "metadataCacheManager" ) + private CacheManager metadataCacheManager; + + @Autowired + @Qualifier( "dhisCacheManager" ) + private CacheManager dhisCacheManager; + + @Autowired + @Qualifier( "fhirCacheManager" ) + private CacheManager fhirCacheManager; + + @Autowired + @Qualifier( "webHookRequestQueueJmsTemplate" ) + private JmsTemplate webHookRequestQueueJmsTemplate; + + @Autowired + @Qualifier( "fhirResourceQueueJmsTemplate" ) + private JmsTemplate fhirResourceQueueJmsTemplate; + + private long resourceDlQueueCount; + + protected void notifyResource( @Nonnull FhirResourceType resourceType, @Nullable String resourceSearchResponse, + @Nullable String resourceId, @Nullable String resourceResponse ) throws Exception + { + if ( previousResourceSearchStubMapping != null ) + { + fhirMockServer.removeStub( previousResourceSearchStubMapping ); + previousResourceSearchStubMapping = null; + } + if ( StringUtils.isNotBlank( resourceSearchResponse ) ) + { + final UrlPattern urlPattern = urlMatching( TestConfiguration.BASE_DSTU3_CONTEXT + + "/" + resourceType.getResourceTypeName() + + "\\?_sort=_lastUpdated&_count=10000&_lastUpdated=ge[^&]+&_elements=meta\\%2[cC]id" ); + final StubMapping stubMapping = stubFor( WireMock.get( urlPattern ).willReturn( aResponse() + .withHeader( "Content-Type", "application/fhir+json" ) + .withBody( resourceSearchResponse ) ) ); + fhirMockServer.addStubMapping( stubMapping ); + previousResourceSearchStubMapping = stubMapping; + } + if ( StringUtils.isNotBlank( resourceId ) && StringUtils.isNotBlank( resourceResponse ) ) + { + final StubMapping stubMapping = stubFor( WireMock.get( urlEqualTo( TestConfiguration.BASE_DSTU3_CONTEXT + + "/" + resourceType.getResourceTypeName() + "/" + resourceId ) ).willReturn( aResponse() + .withHeader( "Content-Type", "application/fhir+json" ) + .withBody( resourceResponse ) ) ); + fhirMockServer.addStubMapping( stubMapping ); + } + + mockMvc.perform( post( "/remote-fhir-rest-hook/{subscriptionId}/{subscriptionResourceId}", + testConfiguration.getRemoteSubscriptionId(), testConfiguration.getRemoteSubscriptionResourceId( resourceType ) ) + .header( "Authorization", TestConfiguration.ADAPTER_AUTHORIZATION ) ) + .andExpect( status().isOk() ); + } + + protected void waitForEmptyResourceQueue() throws Exception + { + final long begin = System.currentTimeMillis(); + long messageCount; + do + { + messageCount = getQueueMessageCount( webHookRequestQueueJmsTemplate, null ) + + getQueueMessageCount( fhirResourceQueueJmsTemplate, null ); + if ( messageCount > 0 ) + { + if ( (System.currentTimeMillis() - begin) > MAX_COMPLETED_POLL_TIME ) + { + Assert.fail( "Waited more than " + MAX_COMPLETED_POLL_TIME + " ms, but there are still " + messageCount + " messages in the queues." ); + } + Thread.sleep( 100L ); + } + } + while ( messageCount > 0 ); + Assert.assertEquals( "Resource dead letter queue contains messages.", + resourceDlQueueCount, getQueueMessageCount( fhirResourceQueueJmsTemplate, RESOURCE_DL_QUEUE_NAME ) ); + } + + private long getQueueMessageCount( @Nonnull JmsTemplate jmsTemplate, @Nullable String queueName ) + { + return Objects.requireNonNull( jmsTemplate.execute( session -> { + try + { + final ClientSession clientSession = ((ActiveMQSession) session).getCoreSession(); + final ClientRequestor req = new ClientRequestor( clientSession, "activemq.management" ); + clientSession.start(); + try + { + final ClientMessage message = clientSession.createMessage( false ); + ManagementHelper.putAttribute( message, "queue." + + ((queueName == null) ? jmsTemplate.getDefaultDestinationName() : queueName), "messageCount" ); + final ClientMessage reply = req.request( message ); + return ((Number) ManagementHelper.getResult( reply )).longValue(); + } + finally + { + clientSession.stop(); + } + } + catch ( Exception e ) + { + throw new UncategorizedJmsException( e ); + } + } ) ); + } + + @Before + public void beforeAbstractAppTest() throws Exception + { + fhirMockServer.resetAll(); + previousResourceSearchStubMapping = null; + + systemDhis2Server = MockRestServiceServer.bindTo( systemDhis2RestTemplate ).ignoreExpectOrder( true ).build(); + userDhis2Server = MockRestServiceServer.bindTo( userDhis2RestTemplate ).build(); + + fhirMockServer.addStubMapping( + stubFor( WireMock.get( urlPathEqualTo( TestConfiguration.BASE_DSTU3_CONTEXT + "/metadata" ) ).willReturn( aResponse() + .withHeader( "Content-Type", "application/fhir+json" ) + .withBody( IOUtils.resourceToString( "/org/dhis2/fhir/adapter/fhir/test/dstu3/metadata.json", StandardCharsets.UTF_8 ) ) ) ) ); + + clearCache( metadataCacheManager ); + clearCache( dhisCacheManager ); + clearCache( fhirCacheManager ); + + resourceDlQueueCount = getQueueMessageCount( fhirResourceQueueJmsTemplate, RESOURCE_DL_QUEUE_NAME ); + } + + private void clearCache( @Nonnull CacheManager cacheManager ) + { + for ( String name : cacheManager.getCacheNames() ) + { + final Cache cache = cacheManager.getCache( name ); + if ( cache != null ) + { + cache.clear(); + } + } + } +} diff --git a/app/src/test/java/org/dhis2/fhir/adapter/Dhis2SpringRunner.java b/app/src/test/java/org/dhis2/fhir/adapter/Dhis2SpringRunner.java new file mode 100644 index 00000000..6b6449e5 --- /dev/null +++ b/app/src/test/java/org/dhis2/fhir/adapter/Dhis2SpringRunner.java @@ -0,0 +1,82 @@ +package org.dhis2.fhir.adapter; + +/* + * Copyright (c) 2004-2018, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import org.junit.runners.model.InitializationError; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +/** + * Test runner that prepares the test DHIS2 home directory for running tests. + * It must be avoided that the configuration in the real DHIS2 home directory + * will be used to run tests. + * + * @author volsch + */ +public final class Dhis2SpringRunner extends SpringJUnit4ClassRunner +{ + private static volatile boolean envInitialized = false; + + public Dhis2SpringRunner( Class clazz ) throws InitializationError + { + super( initEnv( clazz ) ); + } + + private static Class initEnv( Class clazz ) + { + if ( !envInitialized ) + { + synchronized ( Dhis2SpringRunner.class ) + { + if ( !envInitialized ) + { + try + { + final Path home = Files.createTempDirectory( "dfat" ); + final Path configPath = Paths.get( home.toAbsolutePath().toString(), App.RELATIVE_APPLICATION_PROPERTY_SOURCE ); + Files.createDirectories( configPath.getParent() ); + Files.createFile( configPath ); + configPath.toFile().deleteOnExit(); + System.setProperty( App.DHIS2_HOME_PROP, home.toAbsolutePath().toString() ); + } + catch ( IOException e ) + { + throw new AppException( "Could not create temporary configuration directory.", e ); + } + envInitialized = true; + } + } + } + return clazz; + } +} diff --git a/app/src/test/java/org/dhis2/fhir/adapter/StaticResourcesAppTest.java b/app/src/test/java/org/dhis2/fhir/adapter/StaticResourcesAppTest.java new file mode 100644 index 00000000..bd9377d6 --- /dev/null +++ b/app/src/test/java/org/dhis2/fhir/adapter/StaticResourcesAppTest.java @@ -0,0 +1,54 @@ +package org.dhis2.fhir.adapter; + +/* + * Copyright (c) 2004-2018, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import org.junit.Test; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +/** + * Tests that static resources are available. + * + * @author volsch + */ +public class StaticResourcesAppTest extends AbstractAppTest +{ + @Test + public void apiGuide() throws Exception + { + mockMvc.perform( get( "/docs/api-guide.html" ) ).andExpect( status().isOk() ); + } + + @Test + public void dhisMetadataPerson() throws Exception + { + mockMvc.perform( get( "/dhis/metadata/person-metadata.json" ) ).andExpect( status().isOk() ); + } +} diff --git a/app/src/test/java/org/dhis2/fhir/adapter/TestConfiguration.java b/app/src/test/java/org/dhis2/fhir/adapter/TestConfiguration.java new file mode 100644 index 00000000..2a49c821 --- /dev/null +++ b/app/src/test/java/org/dhis2/fhir/adapter/TestConfiguration.java @@ -0,0 +1,194 @@ +package org.dhis2.fhir.adapter; + +/* + * Copyright (c) 2004-2018, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import com.github.tomakehurst.wiremock.WireMockServer; +import org.dhis2.fhir.adapter.fhir.metadata.model.FhirResourceType; +import org.dhis2.fhir.adapter.fhir.metadata.model.SubscriptionType; +import org.dhis2.fhir.adapter.fhir.security.SystemAuthenticationToken; +import org.dhis2.fhir.adapter.lock.LockManager; +import org.dhis2.fhir.adapter.lock.impl.EmbeddedLockManagerImpl; +import org.dhis2.fhir.adapter.setup.Setup; +import org.dhis2.fhir.adapter.setup.SetupResult; +import org.dhis2.fhir.adapter.setup.SetupService; +import org.junit.Assert; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.security.core.context.SecurityContextHolder; + +import javax.annotation.Nonnull; +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; +import java.nio.charset.StandardCharsets; +import java.util.Base64; +import java.util.Map; +import java.util.UUID; + +import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; + +/** + * Configuration that must be executed before any test is run. It setups the + * database with a basic system setup. + * + * @author volsch + */ +@Configuration +@AutoConfigureAfter( HibernateJpaAutoConfiguration.class ) +public class TestConfiguration +{ + public static final String ADAPTER_AUTHORIZATION = "Bearer 836ef9274abc828728746"; + + public static final String DHIS2_USERNAME = "fhir_user"; + + public static final String DHIS2_PASSWORD = "fhir_user_123"; + + public static final String FHIR_SERVICE_HEADER_NAME = "Authorization"; + + public static final String FHIR_SERVICE_HEADER_VALUE = "Basic Zmhpcjp0ZXN0"; + + public static final String BASE_DSTU3_CONTEXT = "/baseDstu3"; + + @Value( "${dhis2.fhir-adapter.endpoint.system-authentication.username}" ) + private String dhis2SystemAuthenticationUsername; + + @Value( "${dhis2.fhir-adapter.endpoint.system-authentication.password}" ) + private String dhis2SystemAuthenticationPassword; + + @Autowired + private SetupService setupService; + + private WireMockServer fhirMockServer; + + private UUID remoteSubscriptionId; + + private Map remoteSubscriptionResourceIds; + + @Nonnull + public UUID getRemoteSubscriptionId() + { + return remoteSubscriptionId; + } + + @Nonnull + public UUID getRemoteSubscriptionResourceId( @Nonnull FhirResourceType resourceType ) + { + final UUID resourceId = remoteSubscriptionResourceIds.get( resourceType ); + Assert.assertNotNull( "Remote subscription resource for " + resourceType + " could not be found.", resourceId ); + return resourceId; + } + + @Nonnull + public String getDhis2SystemAuthorization() + { + return "Basic " + Base64.getEncoder().encodeToString( + (dhis2SystemAuthenticationUsername + ":" + dhis2SystemAuthenticationPassword).getBytes( StandardCharsets.UTF_8 ) ); + } + + @Nonnull + public String getDhis2UserAuthorization() + { + return "Basic " + Base64.getEncoder().encodeToString( + (DHIS2_USERNAME + ":" + DHIS2_PASSWORD).getBytes( StandardCharsets.UTF_8 ) ); + } + + @Nonnull + @Bean + protected WireMockServer fhirMockServer() + { + return fhirMockServer; + } + + @Nonnull + @Bean + @Primary + protected LockManager embeddedLockManager() + { + return new EmbeddedLockManagerImpl(); + } + + @PostConstruct + protected void postConstruct() + { + fhirMockServer = new WireMockServer( wireMockConfig().dynamicPort() ); + fhirMockServer.start(); + + final Setup setup = new Setup(); + + setup.getRemoteSubscriptionSetup().getAdapterSetup().setBaseUrl( "http://localhost:8081" ); + setup.getRemoteSubscriptionSetup().getAdapterSetup().setAuthorizationHeaderValue( ADAPTER_AUTHORIZATION ); + + setup.getRemoteSubscriptionSetup().getDhisSetup().setUsername( DHIS2_USERNAME ); + setup.getRemoteSubscriptionSetup().getDhisSetup().setPassword( DHIS2_PASSWORD ); + + setup.getRemoteSubscriptionSetup().getFhirSetup().setBaseUrl( fhirMockServer.baseUrl() + BASE_DSTU3_CONTEXT ); + setup.getRemoteSubscriptionSetup().getFhirSetup().setHeaderName( FHIR_SERVICE_HEADER_NAME ); + setup.getRemoteSubscriptionSetup().getFhirSetup().setHeaderValue( FHIR_SERVICE_HEADER_VALUE ); + setup.getRemoteSubscriptionSetup().getFhirSetup().setSubscriptionType( SubscriptionType.REST_HOOK ); + setup.getRemoteSubscriptionSetup().getFhirSetup().setSupportsRelatedPerson( true ); + + setup.getRemoteSubscriptionSetup().getSystemUriSetup().setOrganizationSystemUri( "http://example.sl/organizations" ); + setup.getRemoteSubscriptionSetup().getSystemUriSetup().setOrganizationCodePrefix( "OU_" ); + setup.getRemoteSubscriptionSetup().getSystemUriSetup().setPatientSystemUri( "http://example.sl/patients" ); + setup.getRemoteSubscriptionSetup().getSystemUriSetup().setPatientCodePrefix( "PT_" ); + + setup.getOrganizationCodeSetup().setFallback( true ); + setup.getOrganizationCodeSetup().setDefaultDhisCode( "OU_4567" ); + setup.getOrganizationCodeSetup().setMappings( "9876 OU_1234 \n 8765, OU_2345" ); + + final SetupResult setupResult; + SecurityContextHolder.getContext().setAuthentication( new SystemAuthenticationToken() ); + try + { + Assert.assertFalse( setupService.hasCompletedSetup() ); + setupResult = setupService.apply( setup ); + Assert.assertTrue( setupService.hasCompletedSetup() ); + } + finally + { + SecurityContextHolder.clearContext(); + } + + this.remoteSubscriptionId = setupResult.getRemoteSubscriptionId(); + this.remoteSubscriptionResourceIds = setupResult.getRemoteSubscriptionResourceIds(); + } + + @PreDestroy + protected void preDestroy() + { + if ( fhirMockServer != null ) + { + fhirMockServer.stop(); + } + } +} diff --git a/app/src/test/java/org/dhis2/fhir/adapter/common/scriptabe/generator/JavaScriptGeneratorControllerAppTest.java b/app/src/test/java/org/dhis2/fhir/adapter/common/scriptabe/generator/JavaScriptGeneratorControllerAppTest.java new file mode 100644 index 00000000..93c1ac87 --- /dev/null +++ b/app/src/test/java/org/dhis2/fhir/adapter/common/scriptabe/generator/JavaScriptGeneratorControllerAppTest.java @@ -0,0 +1,54 @@ +package org.dhis2.fhir.adapter.common.scriptabe.generator; + +/* + * Copyright (c) 2004-2018, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import org.dhis2.fhir.adapter.AbstractAppTest; +import org.hamcrest.Matchers; +import org.junit.Test; + +import static org.hamcrest.Matchers.containsString; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +/** + * Tests that the JavaScript generator controller provides the JavaScript. + * + * @author volsch + */ +public class JavaScriptGeneratorControllerAppTest extends AbstractAppTest +{ + @Test + public void scriptAvailable() throws Exception + { + mockMvc.perform( get( "/scripts/to-dhis2-all-mapping.js" ) ) + .andExpect( status().isOk() ).andExpect( header().string( "Content-Type", Matchers.containsString( "application/javascript" ) ) ) + .andExpect( content().string( containsString( "var trackedEntityInstance = new TrackedEntityInstance();" ) ) ) + .andExpect( content().string( containsString( "Copyright (c)" ) ) ); + } +} diff --git a/app/src/test/java/org/dhis2/fhir/adapter/fhir/remote/RemoteRestHookControllerAppTest.java b/app/src/test/java/org/dhis2/fhir/adapter/fhir/remote/RemoteRestHookControllerAppTest.java new file mode 100644 index 00000000..123fb91e --- /dev/null +++ b/app/src/test/java/org/dhis2/fhir/adapter/fhir/remote/RemoteRestHookControllerAppTest.java @@ -0,0 +1,79 @@ +package org.dhis2.fhir.adapter.fhir.remote; + +/* + * Copyright (c) 2004-2018, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import org.dhis2.fhir.adapter.AbstractAppTest; +import org.dhis2.fhir.adapter.fhir.metadata.model.FhirResourceType; +import org.junit.Test; + +import java.util.UUID; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +/** + * Basic tests of the end point that receives REST hook requests. + * + * @author volsch + */ +public class RemoteRestHookControllerAppTest extends AbstractAppTest +{ + @Test + public void authWithoutPayload() throws Exception + { + mockMvc.perform( post( "/remote-fhir-rest-hook/{subscriptionId}/{subscriptionResourceId}", + testConfiguration.getRemoteSubscriptionId(), testConfiguration.getRemoteSubscriptionResourceId( FhirResourceType.PATIENT ) ) ) + .andExpect( status().isUnauthorized() ); + } + + @Test + public void notFoundSubscriptionWithoutPayload() throws Exception + { + mockMvc.perform( post( "/remote-fhir-rest-hook/{subscriptionId}/{subscriptionResourceId}", + UUID.randomUUID().toString(), testConfiguration.getRemoteSubscriptionResourceId( FhirResourceType.PATIENT ) ) ) + .andExpect( status().isNotFound() ); + } + + @Test + public void notFoundSubscriptionResourceWithoutPayload() throws Exception + { + mockMvc.perform( post( "/remote-fhir-rest-hook/{subscriptionId}/{subscriptionResourceId}", + testConfiguration.getRemoteSubscriptionId(), UUID.randomUUID().toString() ) ) + .andExpect( status().isNotFound() ); + } + + @Test + public void authWithPayload() throws Exception + { + mockMvc.perform( put( "/remote-fhir-rest-hook/{subscriptionId}/{subscriptionResourceId}/Patient/1", + testConfiguration.getRemoteSubscriptionId(), testConfiguration.getRemoteSubscriptionResourceId( FhirResourceType.PATIENT ) ) + .contentType( FHIR_JSON_MEDIA_TYPE ).content( "{}" ) ) + .andExpect( status().isUnauthorized() ); + } +} diff --git a/app/src/test/java/org/dhis2/fhir/adapter/fhir/transform/impl/trackedentity/AbstractTrackedEntityInstanceTransformationAppTest.java b/app/src/test/java/org/dhis2/fhir/adapter/fhir/transform/impl/trackedentity/AbstractTrackedEntityInstanceTransformationAppTest.java new file mode 100644 index 00000000..e33fa993 --- /dev/null +++ b/app/src/test/java/org/dhis2/fhir/adapter/fhir/transform/impl/trackedentity/AbstractTrackedEntityInstanceTransformationAppTest.java @@ -0,0 +1,60 @@ +package org.dhis2.fhir.adapter.fhir.transform.impl.trackedentity; + +/* + * Copyright (c) 2004-2018, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import org.apache.commons.io.IOUtils; +import org.dhis2.fhir.adapter.AbstractAppTest; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.test.web.client.ExpectedCount; + +import java.nio.charset.StandardCharsets; + +import static org.springframework.test.web.client.match.MockRestRequestMatchers.*; +import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess; + +/** + * Abstract base class for tests that perform a transformation to a tracked entity + * instance. + * + * @author volsch + */ +public abstract class AbstractTrackedEntityInstanceTransformationAppTest extends AbstractAppTest +{ + protected void expectTrackedEntityMetadataRequests() throws Exception + { + systemDhis2Server.expect( ExpectedCount.once(), method( HttpMethod.GET ) ).andExpect( header( "Authorization", testConfiguration.getDhis2SystemAuthorization() ) ) + .andExpect( requestTo( dhis2BaseUrl + "/api/" + dhis2ApiVersion + "/trackedEntityAttributes.json?paging=false&fields=id,name,code,valueType,optionSetValue,optionSet%5Bid,name,options%5Bcode,name%5D%5D" ) ) + .andRespond( withSuccess( IOUtils.resourceToString( "/org/dhis2/fhir/adapter/dhis/test/default-tracked-entity-attributes.json", StandardCharsets.UTF_8 ), MediaType.APPLICATION_JSON ) ); + systemDhis2Server.expect( ExpectedCount.once(), method( HttpMethod.GET ) ).andExpect( header( "Authorization", testConfiguration.getDhis2SystemAuthorization() ) ) + .andExpect( requestTo( dhis2BaseUrl + "/api/" + dhis2ApiVersion + "/trackedEntityTypes.json?paging=false&filter=name:eq:Person&fields=id,name," + + "trackedEntityTypeAttributes%5Bid,name,valueType,mandatory,trackedEntityAttribute%5Bid,name,code,valueType,optionSetValue,optionSet%5Bid,name,options%5Bcode,name%5D%5D%5D%5D" ) ) + .andRespond( withSuccess( IOUtils.resourceToString( "/org/dhis2/fhir/adapter/dhis/test/default-tracked-entity-type.json", StandardCharsets.UTF_8 ), MediaType.APPLICATION_JSON ) ); + } +} diff --git a/app/src/test/java/org/dhis2/fhir/adapter/fhir/transform/impl/trackedentity/PatientToTrackedEntityInstanceTransformationAppTest.java b/app/src/test/java/org/dhis2/fhir/adapter/fhir/transform/impl/trackedentity/PatientToTrackedEntityInstanceTransformationAppTest.java new file mode 100644 index 00000000..ec572fc8 --- /dev/null +++ b/app/src/test/java/org/dhis2/fhir/adapter/fhir/transform/impl/trackedentity/PatientToTrackedEntityInstanceTransformationAppTest.java @@ -0,0 +1,106 @@ +package org.dhis2.fhir.adapter.fhir.transform.impl.trackedentity; + +/* + * Copyright (c) 2004-2018, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import com.github.tomakehurst.wiremock.client.WireMock; +import org.apache.commons.io.IOUtils; +import org.dhis2.fhir.adapter.TestConfiguration; +import org.dhis2.fhir.adapter.fhir.metadata.model.FhirResourceType; +import org.junit.Test; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.test.web.client.ExpectedCount; + +import java.nio.charset.StandardCharsets; + +import static com.github.tomakehurst.wiremock.client.WireMock.*; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.*; +import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess; + +/** + * Tests the transformation of a FHIR patient to a DHIS 2 Tracked Entity. + * + * @author volsch + */ +public class PatientToTrackedEntityInstanceTransformationAppTest + extends AbstractTrackedEntityInstanceTransformationAppTest +{ + @Test + public void createPatient() throws Exception + { + expectTrackedEntityMetadataRequests(); + fhirMockServer.addStubMapping( + stubFor( WireMock.get( urlPathEqualTo( TestConfiguration.BASE_DSTU3_CONTEXT + "/Organization/19" ) ).willReturn( aResponse() + .withHeader( "Content-Type", "application/fhir+json" ) + .withBody( IOUtils.resourceToString( "/org/dhis2/fhir/adapter/fhir/test/dstu3/get-organization-19.json", StandardCharsets.UTF_8 ) ) ) ) ); + systemDhis2Server.expect( ExpectedCount.once(), method( HttpMethod.GET ) ).andExpect( header( "Authorization", testConfiguration.getDhis2SystemAuthorization() ) ) + .andExpect( requestTo( dhis2BaseUrl + "/api/" + dhis2ApiVersion + "/organisationUnits.json?paging=false&fields=id,code&filter=code:eq:OU_U_7777" ) ) + .andRespond( withSuccess( IOUtils.resourceToString( "/org/dhis2/fhir/adapter/dhis/test/default-org-unit-empty.json", StandardCharsets.UTF_8 ), MediaType.APPLICATION_JSON ) ); + fhirMockServer.addStubMapping( + stubFor( WireMock.get( urlPathEqualTo( TestConfiguration.BASE_DSTU3_CONTEXT + "/Organization/18" ) ).willReturn( aResponse() + .withHeader( "Content-Type", "application/fhir+json" ) + .withBody( IOUtils.resourceToString( "/org/dhis2/fhir/adapter/fhir/test/dstu3/get-organization-18.json", StandardCharsets.UTF_8 ) ) ) ) ); + systemDhis2Server.expect( ExpectedCount.once(), method( HttpMethod.GET ) ).andExpect( header( "Authorization", testConfiguration.getDhis2SystemAuthorization() ) ) + .andExpect( requestTo( dhis2BaseUrl + "/api/" + dhis2ApiVersion + "/organisationUnits.json?paging=false&fields=id,code&filter=code:eq:OU_1234" ) ) + .andRespond( withSuccess( IOUtils.resourceToString( "/org/dhis2/fhir/adapter/dhis/test/default-org-unit-OU_1234.json", StandardCharsets.UTF_8 ), MediaType.APPLICATION_JSON ) ); + + userDhis2Server.expect( ExpectedCount.twice(), requestTo( dhis2BaseUrl + "/api/" + dhis2ApiVersion + "/trackedEntityInstances.json?trackedEntityType=MCPQUTHX1Ze&ouMode=ACCESSIBLE&filter=Ewi7FUfcHAD:EQ:PT_88589&pageSize=2&fields=" + + "trackedEntityInstance,trackedEntityType,orgUnit,coordinates,lastUpdated,attributes%5Battribute,value,lastUpdated,storedBy%5D" ) ) + .andExpect( method( HttpMethod.GET ) ).andExpect( header( "Authorization", testConfiguration.getDhis2UserAuthorization() ) ) + .andRespond( withSuccess( IOUtils.resourceToString( "/org/dhis2/fhir/adapter/dhis/test/default-tei-empty.json", StandardCharsets.UTF_8 ), MediaType.APPLICATION_JSON ) ); + userDhis2Server.expect( ExpectedCount.once(), requestTo( dhis2BaseUrl + "/api/" + dhis2ApiVersion + "/trackedEntityInstances.json?strategy=CREATE" ) ) + .andExpect( header( "Authorization", testConfiguration.getDhis2UserAuthorization() ) ).andExpect( method( HttpMethod.POST ) ) + .andExpect( content().contentTypeCompatibleWith( MediaType.APPLICATION_JSON ) ) + .andExpect( content().json( IOUtils.resourceToString( "/org/dhis2/fhir/adapter/dhis/test/default-tei-15-create.json", StandardCharsets.UTF_8 ) ) ) + .andRespond( withSuccess( IOUtils.resourceToString( "/org/dhis2/fhir/adapter/dhis/test/default-tei-15-create-response.json", StandardCharsets.UTF_8 ), MediaType.APPLICATION_JSON ) ); + + userDhis2Server.expect( ExpectedCount.once(), requestTo( dhis2BaseUrl + "/api/" + dhis2ApiVersion + "/trackedEntityInstances.json?trackedEntityType=MCPQUTHX1Ze&ouMode=ACCESSIBLE&filter=Ewi7FUfcHAD:EQ:PT_88589&pageSize=2&fields=" + + "trackedEntityInstance,trackedEntityType,orgUnit,coordinates,lastUpdated,attributes%5Battribute,value,lastUpdated,storedBy%5D" ) ) + .andExpect( method( HttpMethod.GET ) ).andExpect( header( "Authorization", testConfiguration.getDhis2UserAuthorization() ) ) + .andRespond( withSuccess( IOUtils.resourceToString( "/org/dhis2/fhir/adapter/dhis/test/default-tei-15-get.json", StandardCharsets.UTF_8 ), MediaType.APPLICATION_JSON ) ); + + systemDhis2Server.expect( ExpectedCount.once(), method( HttpMethod.GET ) ).andExpect( header( "Authorization", testConfiguration.getDhis2SystemAuthorization() ) ) + .andExpect( requestTo( dhis2BaseUrl + "/api/" + dhis2ApiVersion + "/organisationUnits/ldXIdLNUNEn.json&fields=id,code" ) ) + .andRespond( withSuccess( IOUtils.resourceToString( "/org/dhis2/fhir/adapter/dhis/test/default-org-unit-OU_1234.json", StandardCharsets.UTF_8 ), MediaType.APPLICATION_JSON ) ); + + userDhis2Server.expect( ExpectedCount.once(), requestTo( dhis2BaseUrl + "/api/" + dhis2ApiVersion + "/trackedEntityInstances/JeR2Ul4mZfx.json?mergeMode=MERGE" ) ) + .andExpect( header( "Authorization", testConfiguration.getDhis2UserAuthorization() ) ).andExpect( method( HttpMethod.PUT ) ) + .andExpect( content().contentTypeCompatibleWith( MediaType.APPLICATION_JSON ) ) + .andExpect( content().json( IOUtils.resourceToString( "/org/dhis2/fhir/adapter/dhis/test/default-tei-15-update.json", StandardCharsets.UTF_8 ) ) ) + .andRespond( withSuccess( IOUtils.resourceToString( "/org/dhis2/fhir/adapter/dhis/test/default-tei-15-create-response.json", StandardCharsets.UTF_8 ), MediaType.APPLICATION_JSON ) ); + + notifyResource( FhirResourceType.PATIENT, + IOUtils.resourceToString( "/org/dhis2/fhir/adapter/fhir/test/dstu3/search-patient-15.json", StandardCharsets.UTF_8 ), + "15", IOUtils.resourceToString( "/org/dhis2/fhir/adapter/fhir/test/dstu3/get-patient-15.json", StandardCharsets.UTF_8 ) ); + + waitForEmptyResourceQueue(); + userDhis2Server.verify(); + systemDhis2Server.verify(); + } +} diff --git a/app/src/test/resources/data.sql b/app/src/test/resources/data.sql new file mode 100644 index 00000000..042354fc --- /dev/null +++ b/app/src/test/resources/data.sql @@ -0,0 +1,468 @@ +-- +-- Copyright (c) 2004-2018, University of Oslo +-- All rights reserved. +-- +-- Redistribution and use in source and binary forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- Redistributions of source code must retain the above copyright notice, this +-- list of conditions and the following disclaimer. +-- +-- Redistributions in binary form must reproduce the above copyright notice, +-- this list of conditions and the following disclaimer in the documentation +-- and/or other materials provided with the distribution. +-- Neither the name of the HISP project nor the names of its contributors may +-- be used to endorse or promote products derived from this software without +-- specific prior written permission. +-- +-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +-- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +-- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +-- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +-- ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +-- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +-- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +-- ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +-- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-- + +-- Gender Constants (Adapter Gender Code to DHIS2 code as value) +INSERT INTO fhir_constant (id, version, category, name, code, data_type, value) +VALUES ('fa4a3a0eca4640e4b8323aec96bed55e', 0, 'GENDER', 'Gender Female', 'GENDER_FEMALE', 'STRING', 'Female'); +INSERT INTO fhir_constant (id, version, category, name, code, data_type, value) +VALUES ('1ded2081883643dda5e17cb9562c93ef', 0, 'GENDER', 'Gender Male', 'GENDER_MALE', 'STRING', 'Male'); + +INSERT INTO fhir_code_category (id, version, name, code, description) +VALUES ('9e1c64d882df40e5927ba34c115f14e9', 0, 'Organization Unit', 'ORGANIZATION_UNIT', 'Organization units that exists on DHIS2.'); +INSERT INTO fhir_code_category (id, version, name, code, description) +VALUES ('91065580f4fa4135969a498e9518c0c8', 0, 'Role Code', 'ROLE_CODE', 'Personal relationship role type.'); + +INSERT INTO fhir_system (id, version, name, code, system_uri, description) +VALUES ('3ffa1fe58ded4f18afa6d847d2b94217', 0, 'FHIR Role Code V2', 'SYSTEM_FHIR_ROLE_CODE_V2', 'http://hl7.org/fhir/v2/0131', +'FHIR personal relationship role type V2.'); +INSERT INTO fhir_system (id, version, name, code, system_uri, description) +VALUES ('64d3e785d6a54be59bc95ed9b938e2f6', 0, 'FHIR Role Code V3', 'SYSTEM_FHIR_ROLE_CODE_V3', 'http://hl7.org/fhir/v3/RoleCode', +'FHIR personal relationship role type V3.'); + +INSERT INTO fhir_code(id, version, code_category_id, name, code) VALUES ('aa36eeb633f14637936ac934abdaf83f', 0, '91065580f4fa4135969a498e9518c0c8', 'RC Contact Person', 'RC_CP'); +INSERT INTO fhir_code(id, version, code_category_id, name, code) VALUES ('774ee335a7034753b524da49e4f10454', 0, '91065580f4fa4135969a498e9518c0c8', 'RC Emergency Contact', 'RC_C'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('4611966d6eea4277bfcea515ac879ef7', 0, '91065580f4fa4135969a498e9518c0c8', 'RC family member', 'RC_FAMMEMB', 'A relationship between two people characterizing their "familial" relationship'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('8ac10593daeb4885ade6abbd89d1d089', 0, '91065580f4fa4135969a498e9518c0c8', 'RC child', 'RC_CHILD', 'The player of the role is a child of the scoping entity.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('e0cf031a971748c78f64dd21a2dea323', 0, '91065580f4fa4135969a498e9518c0c8', 'RC adopted child', 'RC_CHLDADOPT', 'The player of the role is a child taken into a family through legal means and raised by the scoping person (parent) as his or her own child.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('0836ecaa413f450f9222c648dfbe2768', 0, '91065580f4fa4135969a498e9518c0c8', 'RC adopted daughter', 'RC_DAUADOPT', 'The player of the role is a female child taken into a family through legal means and raised by the scoping person (parent) as his or her own child.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('2ea8b30db4684f03a3fb26cdc1531022', 0, '91065580f4fa4135969a498e9518c0c8', 'RC adopted son', 'RC_SONADOPT', 'The player of the role is a male child taken into a family through legal means and raised by the scoping person (parent) as his or her own child.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('27521b84cdb44ee0ae4eb2d6c982fbb0', 0, '91065580f4fa4135969a498e9518c0c8', 'RC foster child', 'RC_CHLDFOST', 'The player of the role is a child receiving parental care and nurture from the scoping person (parent) but not related to him or her through legal or blood ties.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('5b52db2e9b04464ea6d63b4e1bf8760e', 0, '91065580f4fa4135969a498e9518c0c8', 'RC foster daughter', 'RC_DAUFOST', 'The player of the role is a female child receiving parental care and nurture from the scoping person (parent) but not related to him or her through legal or blood ties.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('033f40ad54d549ad991b5d6f52e42dd8', 0, '91065580f4fa4135969a498e9518c0c8', 'RC foster son', 'RC_SONFOST', 'The player of the role is a male child receiving parental care and nurture from the scoping person (parent) but not related to him or her through legal or blood ties.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('26a2a3329b52426383fab4cf4e377487', 0, '91065580f4fa4135969a498e9518c0c8', 'RC daughter', 'RC_DAUC', 'Description: The player of the role is a female child (of any type) of scoping entity (parent)'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('2e16153899d349f1b83a1569d7652fc7', 0, '91065580f4fa4135969a498e9518c0c8', 'RC natural daughter', 'RC_DAU', 'The player of the role is a female offspring of the scoping entity (parent).'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('f8cf5e93551b4da5b4f1e6773807faaf', 0, '91065580f4fa4135969a498e9518c0c8', 'RC stepdaughter', 'RC_STPDAU', 'The player of the role is a daughter of the scoping person''s spouse by a previous union.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('f1891d46cd3644afa349b7f542bb4e41', 0, '91065580f4fa4135969a498e9518c0c8', 'RC natural child', 'RC_NCHILD', 'The player of the role is an offspring of the scoping entity as determined by birth.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('81f449f6b875403f96b17d5fe6b16152', 0, '91065580f4fa4135969a498e9518c0c8', 'RC natural son', 'RC_SON', 'The player of the role is a male offspring of the scoping entity (parent).'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('6b262cf27738463f8a7c6b8ef4502871', 0, '91065580f4fa4135969a498e9518c0c8', 'RC son', 'RC_SONC', 'Description: The player of the role is a male child (of any type) of scoping entity (parent)'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('127b6fec288746359ed7cd46c88f0193', 0, '91065580f4fa4135969a498e9518c0c8', 'RC stepson', 'RC_STPSON', 'The player of the role is a son of the scoping person''s spouse by a previous union.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('fe61a98b337a459faab6d8950f73c307', 0, '91065580f4fa4135969a498e9518c0c8', 'RC step child', 'RC_STPCHLD', 'The player of the role is a child of the scoping person''s spouse by a previous union.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('0337c32e01b24806a893fe8856b9f1b5', 0, '91065580f4fa4135969a498e9518c0c8', 'RC extended family member', 'RC_EXT', 'Description: A family member not having an immediate genetic or legal relationship e.g. Aunt, cousin, great grandparent, grandchild, grandparent, niece, nephew or uncle.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('89b92e8215da4d678f549ee311f52a2a', 0, '91065580f4fa4135969a498e9518c0c8', 'RC aunt', 'RC_AUNT', 'The player of the role is a sister of the scoping person''s mother or father.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('a047f7b38f44404484ad5d69ec14a5e4', 0, '91065580f4fa4135969a498e9518c0c8', 'RC maternal aunt', 'RC_MAUNT', 'Description:The player of the role is a biological sister of the scoping person''s biological mother.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('92b816810d2a45fbb06ebde340130a19', 0, '91065580f4fa4135969a498e9518c0c8', 'RC paternal aunt', 'RC_PAUNT', 'Description:The player of the role is a biological sister of the scoping person''s biological father.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('f88411a05dd643ccb992985be76c8908', 0, '91065580f4fa4135969a498e9518c0c8', 'RC cousin', 'RC_COUSN', 'The player of the role is a relative of the scoping person descended from a common ancestor, such as a grandparent, by two or more steps in a diverging line.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('ccba35d9678b49c08dc6aa5908bb373d', 0, '91065580f4fa4135969a498e9518c0c8', 'RC maternal cousin', 'RC_MCOUSN', 'Description:The player of the role is a biological relative of the scoping person descended from a common ancestor on the player''s mother''s side, such as a grandparent, by two or more steps in a diverging line.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('b41b75cce50b480aaefb46ccb036fa5c', 0, '91065580f4fa4135969a498e9518c0c8', 'RC paternal cousin', 'RC_PCOUSN', 'Description:The player of the role is a biological relative of the scoping person descended from a common ancestor on the player''s father''s side, such as a grandparent, by two or more steps in a diverging line.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('f2bc75a7c0c14ee0898ee632d9c11764', 0, '91065580f4fa4135969a498e9518c0c8', 'RC great grandparent', 'RC_GGRPRN', 'The player of the role is a parent of the scoping person''s grandparent.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('d5604d9916644fd599ad8cd093db8d02', 0, '91065580f4fa4135969a498e9518c0c8', 'RC great grandfather', 'RC_GGRFTH', 'The player of the role is the father of the scoping person''s grandparent.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('fbffd3e007a049a5a85846c0d5d3cfec', 0, '91065580f4fa4135969a498e9518c0c8', 'RC maternal greatgrandfather', 'RC_MGGRFTH', 'Description:The player of the role is the biological father of the scoping person''s biological mother''s parent.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('d98f538952404648955fdbc1f74affd8', 0, '91065580f4fa4135969a498e9518c0c8', 'RC paternal greatgrandfather', 'RC_PGGRFTH', 'Description:The player of the role is the biological father of the scoping person''s biological father''s parent.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('afdc0aa7a2fb48299c6ca248262087f5', 0, '91065580f4fa4135969a498e9518c0c8', 'RC great grandmother', 'RC_GGRMTH', 'The player of the role is the mother of the scoping person''s grandparent.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('574b70d75a8049d8bbb88857d4ba7546', 0, '91065580f4fa4135969a498e9518c0c8', 'RC maternal greatgrandmother', 'RC_MGGRMTH', 'Description:The player of the role is the biological mother of the scoping person''s biological mother''s parent.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('87635859f1b34d3dba8cff66f05d3a47', 0, '91065580f4fa4135969a498e9518c0c8', 'RC paternal greatgrandmother', 'RC_PGGRMTH', 'Description:The player of the role is the biological mother of the scoping person''s biological father''s parent.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('2ded7f929cf44a589cec3dd8a74ee011', 0, '91065580f4fa4135969a498e9518c0c8', 'RC maternal greatgrandparent', 'RC_MGGRPRN', 'Description:The player of the role is a biological parent of the scoping person''s biological mother''s parent.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('1cb4038422ff4c9e9ab4a733e867de6b', 0, '91065580f4fa4135969a498e9518c0c8', 'RC paternal greatgrandparent', 'RC_PGGRPRN', 'Description:The player of the role is a biological parent of the scoping person''s biological father''s parent.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('970efa0062b244d9b08d725910450f43', 0, '91065580f4fa4135969a498e9518c0c8', 'RC grandchild', 'RC_GRNDCHILD', 'The player of the role is a child of the scoping person''s son or daughter.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('5a47cf787a7449b1b549af72e442e01d', 0, '91065580f4fa4135969a498e9518c0c8', 'RC granddaughter', 'RC_GRNDDAU', 'The player of the role is a daughter of the scoping person''s son or daughter.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('10a8a5e979d54dcb857c3092cedd5591', 0, '91065580f4fa4135969a498e9518c0c8', 'RC grandson', 'RC_GRNDSON', 'The player of the role is a son of the scoping person''s son or daughter.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('6052f4db83544c78be2a15fd3c89a7bd', 0, '91065580f4fa4135969a498e9518c0c8', 'RC grandparent', 'RC_GRPRN', 'The player of the role is a parent of the scoping person''s mother or father.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('21d150c4930e442fb964b34ede4fb348', 0, '91065580f4fa4135969a498e9518c0c8', 'RC grandfather', 'RC_GRFTH', 'The player of the role is the father of the scoping person''s mother or father.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('f17753a8298d49b78e37ccfa15060157', 0, '91065580f4fa4135969a498e9518c0c8', 'RC maternal grandfather', 'RC_MGRFTH', 'Description:The player of the role is the biological father of the scoping person''s biological mother.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('3100a18c00a84aad926b6ebeaab4b4a1', 0, '91065580f4fa4135969a498e9518c0c8', 'RC paternal grandfather', 'RC_PGRFTH', 'Description:The player of the role is the biological father of the scoping person''s biological father.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('9d95989bd0714eb39ac6d3f691bafee1', 0, '91065580f4fa4135969a498e9518c0c8', 'RC grandmother', 'RC_GRMTH', 'The player of the role is the mother of the scoping person''s mother or father.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('ec36bc5cacf54ef1b6591ac78ee968da', 0, '91065580f4fa4135969a498e9518c0c8', 'RC maternal grandmother', 'RC_MGRMTH', 'Description:The player of the role is the biological mother of the scoping person''s biological mother.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('0bbece14c1884d5b91b08999291fefc7', 0, '91065580f4fa4135969a498e9518c0c8', 'RC paternal grandmother', 'RC_PGRMTH', 'Description:The player of the role is the biological mother of the scoping person''s biological father.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('e8e3924fc2e845a694003727b37d7f98', 0, '91065580f4fa4135969a498e9518c0c8', 'RC maternal grandparent', 'RC_MGRPRN', 'Description:The player of the role is the biological parent of the scoping person''s biological mother.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('3e3184f06e9047c2890bb8a284e000d5', 0, '91065580f4fa4135969a498e9518c0c8', 'RC paternal grandparent', 'RC_PGRPRN', 'Description:The player of the role is the biological parent of the scoping person''s biological father.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('5ea797ffca674ddbbaf208964ca26e34', 0, '91065580f4fa4135969a498e9518c0c8', 'RC inlaw', 'RC_INLAW', 'A relationship between an individual and a member of their spousal partner''s immediate family.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('1e6f1da915e84512b5026699b7ea7c34', 0, '91065580f4fa4135969a498e9518c0c8', 'RC childinlaw', 'RC_CHLDINLAW', 'The player of the role is the spouse of scoping person''s child.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('fcff1dc5b8604e8dbee1cfac40b33944', 0, '91065580f4fa4135969a498e9518c0c8', 'RC daughter inlaw', 'RC_DAUINLAW', 'The player of the role is the wife of scoping person''s son.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('a8c0f886aae3479e8aa3d8e37f31b9be', 0, '91065580f4fa4135969a498e9518c0c8', 'RC son inlaw', 'RC_SONINLAW', 'The player of the role is the husband of scoping person''s daughter.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('41d6001a9fc94337bbb6ce1ff284e115', 0, '91065580f4fa4135969a498e9518c0c8', 'RC parent inlaw', 'RC_PRNINLAW', 'The player of the role is the parent of scoping person''s husband or wife.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('140d489763554be8994706e0ca12b1ed', 0, '91065580f4fa4135969a498e9518c0c8', 'RC fatherinlaw', 'RC_FTHINLAW', 'The player of the role is the father of the scoping person''s husband or wife.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('d5c679c8292c4e7884a3fcccbf7b4251', 0, '91065580f4fa4135969a498e9518c0c8', 'RC motherinlaw', 'RC_MTHINLAW', 'The player of the role is the mother of the scoping person''s husband or wife.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('8f8c7f019cfa477ab6eefe595f8284cd', 0, '91065580f4fa4135969a498e9518c0c8', 'RC sibling inlaw', 'RC_SIBINLAW', 'The player of the role is: (1) a sibling of the scoping person''s spouse, or (2) the spouse of the scoping person''s sibling, or (3) the spouse of a sibling of the scoping person''s spouse.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('19d9601ffc9743029b338abd194b2b06', 0, '91065580f4fa4135969a498e9518c0c8', 'RC brotherinlaw', 'RC_BROINLAW', 'The player of the role is: (1) a brother of the scoping person''s spouse, or (2) the husband of the scoping person''s sister, or (3) the husband of a sister of the scoping person''s spouse.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('7612c8873ae64056800d3c9af1242e72', 0, '91065580f4fa4135969a498e9518c0c8', 'RC sisterinlaw', 'RC_SISINLAW', 'The player of the role is: (1) a sister of the scoping person''s spouse, or (2) the wife of the scoping person''s brother, or (3) the wife of a brother of the scoping person''s spouse.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('9162f3544fdc45ed808e41e9335ea325', 0, '91065580f4fa4135969a498e9518c0c8', 'RC niece/nephew', 'RC_NIENEPH', 'The player of the role is a child of scoping person''s brother or sister or of the brother or sister of the scoping person''s spouse.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('9324244d819941b19fb13bf3566d5d57', 0, '91065580f4fa4135969a498e9518c0c8', 'RC nephew', 'RC_NEPHEW', 'The player of the role is a son of the scoping person''s brother or sister or of the brother or sister of the scoping person''s spouse.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('02918b9251b64da091b0b52ddbb5e94f', 0, '91065580f4fa4135969a498e9518c0c8', 'RC niece', 'RC_NIECE', 'The player of the role is a daughter of the scoping person''s brother or sister or of the brother or sister of the scoping person''s spouse.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('dadccbc8dfb245728f19d07e325fcc7c', 0, '91065580f4fa4135969a498e9518c0c8', 'RC uncle', 'RC_UNCLE', 'The player of the role is a brother of the scoping person''s mother or father.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('d3a4de1f3d6d4ab3bff5795e7c20a075', 0, '91065580f4fa4135969a498e9518c0c8', 'RC maternal uncle', 'RC_MUNCLE', 'Description:The player of the role is a biological brother of the scoping person''s biological mother.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('2d0372991e3d42768d131ee73cb43479', 0, '91065580f4fa4135969a498e9518c0c8', 'RC paternal uncle', 'RC_PUNCLE', 'Description:The player of the role is a biological brother of the scoping person''s biological father.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('758fc29886b14ec0a46391034a0e35c9', 0, '91065580f4fa4135969a498e9518c0c8', 'RC parent', 'RC_PRN', 'The player of the role is one who begets, gives birth to, or nurtures and raises the scoping entity (child).'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('77bf1643335240b3ae63450b2baa37f6', 0, '91065580f4fa4135969a498e9518c0c8', 'RC adoptive parent', 'RC_ADOPTP', 'The player of the role (parent) has taken the scoper (child) into their family through legal means and raises them as his or her own child.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('a7925456430d4c2db3b27afbc3bbde0f', 0, '91065580f4fa4135969a498e9518c0c8', 'RC adoptive father', 'RC_ADOPTF', 'The player of the role (father) is a male who has taken the scoper (child) into their family through legal means and raises them as his own child.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('ddd1f6d3e36244cd98875f7d3daaa7dd', 0, '91065580f4fa4135969a498e9518c0c8', 'RC adoptive mother', 'RC_ADOPTM', 'The player of the role (father) is a female who has taken the scoper (child) into their family through legal means and raises them as her own child.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('5a395a3de1be4b88a91d99b1965cfb3b', 0, '91065580f4fa4135969a498e9518c0c8', 'RC father', 'RC_FTH', 'The player of the role is a male who begets or raises or nurtures the scoping entity (child).'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('7ba01ba354e040348ffdccee1454f9f1', 0, '91065580f4fa4135969a498e9518c0c8', 'RC foster father', 'RC_FTHFOST', 'The player of the role (parent) who is a male statecertified caregiver responsible for the scoper (child) who has been placed in the parent''s care. The placement of the child is usually arranged through the government or a socialservice agency, and temporary. The state, via a jurisdiction recognized child protection agency, stands as in loco parentis to the child, making all legal decisions while the foster parent is responsible for the daytoday care of the specified child.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('43cd042172e9449ca70afd50ffaea8c9', 0, '91065580f4fa4135969a498e9518c0c8', 'RC natural father', 'RC_NFTH', 'The player of the role is a male who begets the scoping entity (child).'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('cf62ae76136d41439a1782ec94d4e0bf', 0, '91065580f4fa4135969a498e9518c0c8', 'RC natural father of fetus', 'RC_NFTHF', 'Indicates the biologic male parent of a fetus.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('edb4819506444e15b4a76edfe3c8062c', 0, '91065580f4fa4135969a498e9518c0c8', 'RC stepfather', 'RC_STPFTH', 'The player of the role is the husband of scoping person''s mother and not the scoping person''s natural father.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('08f80790dda34ec1939c5884ac1a82d3', 0, '91065580f4fa4135969a498e9518c0c8', 'RC mother', 'RC_MTH', 'The player of the role is a female who conceives, gives birth to, or raises and nurtures the scoping entity (child).'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('fcc2d4cec44145429f70ba72f0a3a6df', 0, '91065580f4fa4135969a498e9518c0c8', 'RC gestational mother', 'RC_GESTM', 'The player is a female whose womb carries the fetus of the scoper. Generally used when the gestational mother and natural mother are not the same.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('0814206732b24b19a01c63f336e0726b', 0, '91065580f4fa4135969a498e9518c0c8', 'RC foster mother', 'RC_MTHFOST', 'The player of the role (parent) who is a female statecertified caregiver responsible for the scoper (child) who has been placed in the parent''s care. The placement of the child is usually arranged through the government or a socialservice agency, and temporary. The state, via a jurisdiction recognized child protection agency, stands as in loco parentis to the child, making all legal decisions while the foster parent is responsible for the daytoday care of the specified child.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('8df34897304846c58cadbd9b622b9bbb', 0, '91065580f4fa4135969a498e9518c0c8', 'RC natural mother', 'RC_NMTH', 'The player of the role is a female who conceives or gives birth to the scoping entity (child).'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('95f371738a3541489cdaa9781bd19f86', 0, '91065580f4fa4135969a498e9518c0c8', 'RC natural mother of fetus', 'RC_NMTHF', 'The player is the biologic female parent of the scoping fetus.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('cd3a2e6ff8044c89839ba42917122ec9', 0, '91065580f4fa4135969a498e9518c0c8', 'RC stepmother', 'RC_STPMTH', 'The player of the role is the wife of scoping person''s father and not the scoping person''s natural mother.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('81965cc5984e4c9691022ad03ffbcbef', 0, '91065580f4fa4135969a498e9518c0c8', 'RC natural parent', 'RC_NPRN', 'natural parent'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('e736e6edf23748ec91ca60840ea56d60', 0, '91065580f4fa4135969a498e9518c0c8', 'RC foster parent', 'RC_PRNFOST', 'The player of the role (parent) who is a statecertified caregiver responsible for the scoper (child) who has been placed in the parent''s care. The placement of the child is usually arranged through the government or a socialservice agency, and temporary. The state, via a jurisdiction recognized child protection agency, stands as in loco parentis to the child, making all legal decisions while the foster parent is responsible for the daytoday care of the specified child.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('8457ff348a3c4e8381b62991b2ca4aca', 0, '91065580f4fa4135969a498e9518c0c8', 'RC step parent', 'RC_STPPRN', 'The player of the role is the spouse of the scoping person''s parent and not the scoping person''s natural parent.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('315774e5a8814d09b21fb2640c9ac0e8', 0, '91065580f4fa4135969a498e9518c0c8', 'RC sibling', 'RC_SIB', 'The player of the role shares one or both parents in common with the scoping entity.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('98082eca40c54d159ed48ecd844e3ae7', 0, '91065580f4fa4135969a498e9518c0c8', 'RC brother', 'RC_BRO', 'The player of the role is a male sharing one or both parents in common with the scoping entity.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('48bcbb2b2b954266a756f277c81857eb', 0, '91065580f4fa4135969a498e9518c0c8', 'RC halfbrother', 'RC_HBRO', 'The player of the role is a male related to the scoping entity by sharing only one biological parent.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('f2be630f1d574ae0a094b4d4257c33f9', 0, '91065580f4fa4135969a498e9518c0c8', 'RC natural brother', 'RC_NBRO', 'The player of the role is a male having the same biological parents as the scoping entity.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('5181d4e68c984b439dfbfd79a2daac28', 0, '91065580f4fa4135969a498e9518c0c8', 'RC twin brother', 'RC_TWINBRO', 'The scoper was carried in the same womb as the male player and shares common biological parents.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('f24c3a34b07a4397ae2d44cef62e1a0a', 0, '91065580f4fa4135969a498e9518c0c8', 'RC fraternal twin brother', 'RC_FTWINBRO', 'The scoper was carried in the same womb as the male player and shares common biological parents but is the product of a distinct egg/sperm pair.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('39ab35761b7f423e89a175e52f7c9364', 0, '91065580f4fa4135969a498e9518c0c8', 'RC identical twin brother', 'RC_ITWINBRO', 'The male scoper is an offspring of the same eggsperm pair as the male player.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('0a56be2e819c4ff187bf0cafb9e217d0', 0, '91065580f4fa4135969a498e9518c0c8', 'RC stepbrother', 'RC_STPBRO', 'The player of the role is a son of the scoping person''s stepparent.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('5d52e4bd234743a18c61107a371163f4', 0, '91065580f4fa4135969a498e9518c0c8', 'RC halfsibling', 'RC_HSIB', 'The player of the role is related to the scoping entity by sharing only one biological parent.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('513ec433fb864c22a8d1c9b8244e69c2', 0, '91065580f4fa4135969a498e9518c0c8', 'RC halfsister', 'RC_HSIS', 'The player of the role is a female related to the scoping entity by sharing only one biological parent.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('f84fece85ee343c490854ff3c43235ee', 0, '91065580f4fa4135969a498e9518c0c8', 'RC natural sibling', 'RC_NSIB', 'The player of the role has both biological parents in common with the scoping entity.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('0c409220413e4125bf308b4f7d10ef0a', 0, '91065580f4fa4135969a498e9518c0c8', 'RC natural sister', 'RC_NSIS', 'The player of the role is a female having the same biological parents as the scoping entity.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('138fea243a1a4e8ea91bd4b61fbd2917', 0, '91065580f4fa4135969a498e9518c0c8', 'RC twin sister', 'RC_TWINSIS', 'The scoper was carried in the same womb as the female player and shares common biological parents.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('2f9e14ddd88e4522ad056230a49b05fb', 0, '91065580f4fa4135969a498e9518c0c8', 'RC fraternal twin sister', 'RC_FTWINSIS', 'The scoper was carried in the same womb as the female player and shares common biological parents but is the product of a distinct egg/sperm pair.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('a234790420e448adb957f14bf7c95cd4', 0, '91065580f4fa4135969a498e9518c0c8', 'RC identical twin sister', 'RC_ITWINSIS', 'The female scoper is an offspring of the same eggsperm pair as the female player.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('4754b7178d214d07957bbe834f4b0e8d', 0, '91065580f4fa4135969a498e9518c0c8', 'RC twin', 'RC_TWIN', 'The scoper and player were carried in the same womb and shared common biological parents.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('768a7c4c8cb9485182f8a104778eff0c', 0, '91065580f4fa4135969a498e9518c0c8', 'RC fraternal twin', 'RC_FTWIN', 'The scoper and player were carried in the same womb and share common biological parents but are the product of distinct egg/sperm pairs.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('18c47e4d1bf1404da99a356fe0a26610', 0, '91065580f4fa4135969a498e9518c0c8', 'RC identical twin', 'RC_ITWIN', 'The scoper and player are offspring of the same eggsperm pair.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('913bf93704fe4b67a00f6aeafe63c78a', 0, '91065580f4fa4135969a498e9518c0c8', 'RC sister', 'RC_SIS', 'The player of the role is a female sharing one or both parents in common with the scoping entity.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('11e11119083f4e7f8776713468113260', 0, '91065580f4fa4135969a498e9518c0c8', 'RC stepsister', 'RC_STPSIS', 'The player of the role is a daughter of the scoping person''s stepparent.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('b6ca53f429b442f4baa8e952b697d6f2', 0, '91065580f4fa4135969a498e9518c0c8', 'RC step sibling', 'RC_STPSIB', 'The player of the role is a child of the scoping person''s stepparent.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('6702e52be5694c848f2f9777c0f2276b', 0, '91065580f4fa4135969a498e9518c0c8', 'RC significant other', 'RC_SIGOTHR', 'A person who is important to one''s well being; especially a spouse or one in a similar relationship. (The player is the one who is important)'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('79531da0f1e6499ea5298868db390b97', 0, '91065580f4fa4135969a498e9518c0c8', 'RC domestic partner', 'RC_DOMPART', 'The player of the role cohabits with the scoping person but is not the scoping person''s spouse.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('dc5a3effd84243a6ae2c63df221bb60f', 0, '91065580f4fa4135969a498e9518c0c8', 'RC former spouse', 'RC_FMRSPS', 'Player of the role was previously joined to the scoping person in marriage and this marriage is now dissolved and inactive. Usage Note: This is significant to indicate as some jurisdictions have different legal requirements for former spouse to access the patient''s record, from a general friend.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('bb32e6c7667f4cf39347aa89781edc64', 0, '91065580f4fa4135969a498e9518c0c8', 'RC spouse', 'RC_SPS', 'The player of the role is a marriage partner of the scoping person.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('bc9352a363c04ba2ac5120c0cbca0ea8', 0, '91065580f4fa4135969a498e9518c0c8', 'RC husband', 'RC_HUSB', 'The player of the role is a man joined to a woman (scoping person) in marriage.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('b20f2abfe6a54030928f24a71f3629bf', 0, '91065580f4fa4135969a498e9518c0c8', 'RC wife', 'RC_WIFE', 'The player of the role is a woman joined to a man (scoping person) in marriage.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('a543dd562e52418ea1229372a2c26110', 0, '91065580f4fa4135969a498e9518c0c8', 'RC unrelated friend', 'RC_FRND', 'The player of the role is a person who is known, liked, and trusted by the scoping person.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('2f2d6977d35a451a9aa8f4aee841cbae', 0, '91065580f4fa4135969a498e9518c0c8', 'RC neighbor', 'RC_NBOR', 'The player of the role lives near or next to the scoping person.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('ad121009f80644a8921ccba728a81940', 0, '91065580f4fa4135969a498e9518c0c8', 'RC self', 'RC_ONESELF', 'The relationship that a person has with his or her self.'); +INSERT INTO fhir_code(id, version, code_category_id, name, code, description) VALUES ('935baf1211f442ba89b570d6acea6546', 0, '91065580f4fa4135969a498e9518c0c8', 'RC Roommate', 'RC_ROOM', 'One who shares living quarters with the subject.'); + +INSERT INTO fhir_system_code(id, version, system_id, system_code, code_id, system_code_value) VALUES ('4b1d6fa36c6e46439f6dde14e1c36fff', 0, '3ffa1fe58ded4f18afa6d847d2b94217', 'CP', 'aa36eeb633f14637936ac934abdaf83f', 'http://hl7.org/fhir/v2/0131|CP'); +INSERT INTO fhir_system_code(id, version, system_id, system_code, code_id, system_code_value) VALUES ('cdc6b6697c42460bad34aa65f8655145', 0, '3ffa1fe58ded4f18afa6d847d2b94217', 'C', '774ee335a7034753b524da49e4f10454', 'http://hl7.org/fhir/v2/0131|C'); +INSERT INTO fhir_system_code(id, version, system_id, system_code, code_id, system_code_value) VALUES ('14116083429a437c9023c0f4095679a6', 0, '64d3e785d6a54be59bc95ed9b938e2f6', 'PRN', '758fc29886b14ec0a46391034a0e35c9', 'http://hl7.org/fhir/v3/RoleCode|PRN'); +INSERT INTO fhir_system_code(id, version, system_id, system_code, code_id, system_code_value) VALUES ('41b1d0ae68b0433fa2a1f57bbce57802', 0, '64d3e785d6a54be59bc95ed9b938e2f6', 'ADOPTF', 'a7925456430d4c2db3b27afbc3bbde0f', 'http://hl7.org/fhir/v3/RoleCode|ADOPTF'); +INSERT INTO fhir_system_code(id, version, system_id, system_code, code_id, system_code_value) VALUES ('4491d5e330d540d3b63a4c4d6ada0045', 0, '64d3e785d6a54be59bc95ed9b938e2f6', 'ADOPTM', 'ddd1f6d3e36244cd98875f7d3daaa7dd', 'http://hl7.org/fhir/v3/RoleCode|ADOPTM'); +INSERT INTO fhir_system_code(id, version, system_id, system_code, code_id, system_code_value) VALUES ('7e5d84308ccb4a6d8e16a11a0c0d2f75', 0, '64d3e785d6a54be59bc95ed9b938e2f6', 'FTH', '5a395a3de1be4b88a91d99b1965cfb3b', 'http://hl7.org/fhir/v3/RoleCode|FTH'); +INSERT INTO fhir_system_code(id, version, system_id, system_code, code_id, system_code_value) VALUES ('0b2ca2b94edb4da69e34b783575eea0b', 0, '64d3e785d6a54be59bc95ed9b938e2f6', 'MTH', '08f80790dda34ec1939c5884ac1a82d3', 'http://hl7.org/fhir/v3/RoleCode|MTH'); + +-- Script that extracts Organisation Unit Reference from Patient +INSERT INTO fhir_script (id, version, name, code, description, script_type, return_type, input_type, output_type) +VALUES ('a250e109a13542b28bdb1c050c1d384c', 0, 'Org Unit Code from FHIR Resource', 'EXTRACT_FHIR_RESOURCE_DHIS_ORG_UNIT_CODE', +'Extracts the organization unit code reference from the input FHIR resource.', +'EVALUATE', 'ORG_UNIT_REF', NULL, NULL); +INSERT INTO fhir_script_variable (script_id, variable) VALUES ('a250e109a13542b28bdb1c050c1d384c', 'CONTEXT'); +INSERT INTO fhir_script_variable (script_id, variable) VALUES ('a250e109a13542b28bdb1c050c1d384c', 'INPUT'); +INSERT INTO fhir_script_source (id, version, script_id, source_text, source_type) VALUES ('7b94febabcf64635929a01311b25d975', 0, 'a250e109a13542b28bdb1c050c1d384c', +'var ref = null; +var organizationReference = null; +if (input.managingOrganization) +{ + organizationReference = input.managingOrganization; +} +if (((organizationReference == null) || organizationReference.isEmpty()) && args[''useLocations''] && input.location && !input.getLocation().isEmpty()) +{ + var location = referenceUtils.getResource(input.location, ''LOCATION''); + if ((location != null) && location.managingOrganization && !location.getManagingOrganization.isEmpty()) + { + organizationReference = location.managingOrganization; + } +} +if (organizationReference != null) +{ + var mappedCode = null; + var hierarchy = organizationUtils.findHierarchy(organizationReference); + if (hierarchy != null) + { + for (var i = 0; (mappedCode == null) && (i < hierarchy.size()); i++) + { + var code = identifierUtils.getResourceIdentifier(hierarchy.get(i), ''ORGANIZATION''); + if (code != null) + { + mappedCode = codeUtils.getMappedCode(code, ''ORGANIZATION''); + if ((mappedCode == null) && args[''useIdentifierCode'']) + { + mappedCode = organizationUtils.existsWithPrefix(code); + } + } + } + } + if (mappedCode == null) + { + mappedCode = args[''defaultCode'']; + } + if (mappedCode != null) + { + ref = context.createReference(mappedCode, ''CODE''); + } +} +if ((ref == null) && args[''useTei''] && (typeof trackedEntityInstance !== ''undefined'')) +{ + ref = context.createReference(trackedEntityInstance.organizationUnitId, ''ID''); +} +ref', 'JAVASCRIPT'); +INSERT INTO fhir_script_source_version (script_source_id, fhir_version) +VALUES ('7b94febabcf64635929a01311b25d975', 'DSTU3'); +INSERT INTO fhir_script_argument(id, version, script_id, name, data_type, mandatory, default_value, description) +VALUES ('c017573383fc4de29cd0a2ae6b92e991', 0, 'a250e109a13542b28bdb1c050c1d384c', +'useLocations', 'BOOLEAN', TRUE, 'true', +'Specifies if alternatively the managing organization of an included location should be used when the input itself does not contain a managing organization.'); +INSERT INTO fhir_script_argument(id, version, script_id, name, data_type, mandatory, default_value, description) +VALUES ('33e66e7a32cc4a2e8224519e790c8ad2', 0, 'a250e109a13542b28bdb1c050c1d384c', +'useIdentifierCode', 'BOOLEAN', TRUE, 'true', +'Specifies if the identifier code itself with the default code prefix for organizations should be used as fallback when no code mapping for the identifier code exists.'); +INSERT INTO fhir_script_argument(id, version, script_id, name, data_type, mandatory, default_value, description) +VALUES ('2db146ac189548e09d24e81c7f8a7033', 0, 'a250e109a13542b28bdb1c050c1d384c', +'defaultCode', 'CODE', FALSE, null, +'Specifies the default DHIS2 organization unit code that should be used when no other matching DHIS2 organization unit cannot be found.'); +INSERT INTO fhir_script_argument(id, version, script_id, name, data_type, mandatory, default_value, description) +VALUES ('ef387255d1df48a3955d2300bedf1f99', 0, 'a250e109a13542b28bdb1c050c1d384c', +'useTei', 'BOOLEAN', TRUE, 'true', +'Specifies if the organization unit of the tracked entity instance (if any) should be used as last fallback when no other organization unit can be found.'); +INSERT INTO fhir_executable_script (id, version, script_id, name, code, description) +VALUES ('25a97bb47b394ed48677db4bcaa28ccf', 0, 'a250e109a13542b28bdb1c050c1d384c', 'Org Unit Code from FHIR Resource', 'EXTRACT_FHIR_RESOURCE_DHIS_ORG_UNIT_CODE', +'Extracts the organization unit code reference from the input FHIR resource.'); +INSERT INTO fhir_executable_script_argument(id, executable_script_id, script_argument_id, override_value) +VALUES ('9de91cc0979b43b099d5fc3ee76fd74d', '25a97bb47b394ed48677db4bcaa28ccf', '33e66e7a32cc4a2e8224519e790c8ad2', 'true'); +INSERT INTO fhir_executable_script_argument(id, executable_script_id, script_argument_id, override_value) +VALUES ('b19e4cc20ded4410b5d85e971e48fd93', '25a97bb47b394ed48677db4bcaa28ccf', '2db146ac189548e09d24e81c7f8a7033', NULL); + +-- Script that transforms a Related Person to contact details of a Person +INSERT INTO fhir_script (id, version, name, code, description, script_type, return_type, input_type, output_type) +VALUES ('05fb37c27e6845c0bfe786999492e202', 0, 'Transforms FHIR Related Person to DHIS Person', 'TRANSFORM_FHIR_RELATED_PERSON_DHIS_PERSON', +'Transforms FHIR Related Person to DHIS Person.', 'TRANSFORM_TO_DHIS', 'BOOLEAN', 'FHIR_RELATED_PERSON', +'DHIS_TRACKED_ENTITY_INSTANCE'); +INSERT INTO fhir_script_variable (script_id, variable) VALUES ('05fb37c27e6845c0bfe786999492e202', 'CONTEXT'); +INSERT INTO fhir_script_variable (script_id, variable) VALUES ('05fb37c27e6845c0bfe786999492e202', 'INPUT'); +INSERT INTO fhir_script_variable (script_id, variable) VALUES ('05fb37c27e6845c0bfe786999492e202', 'OUTPUT'); +INSERT INTO fhir_script_argument(id, version, script_id, name, data_type, mandatory, default_value, description) +VALUES ('4476320e3efa40cca2b267c9b1255ce6', 0, '05fb37c27e6845c0bfe786999492e202', +'personFirstNameAttribute', 'TRACKED_ENTITY_ATTRIBUTE_REF', FALSE, 'ID:ftFBu8mHZ4H', +'The reference of the tracked entity attribute that contains the first name of the related Person.'); +INSERT INTO fhir_script_argument(id, version, script_id, name, data_type, mandatory, default_value, description) +VALUES ('46936186a2df4f3d9d8f8adb7b3028cd', 0, '05fb37c27e6845c0bfe786999492e202', +'personLastNameAttribute', 'TRACKED_ENTITY_ATTRIBUTE_REF', FALSE, 'ID:EpbquVl5OD6', +'The reference of the tracked entity attribute that contains the last name of the related Person.'); +INSERT INTO fhir_script_argument(id, version, script_id, name, data_type, mandatory, default_value, description) +VALUES ('a8a6a2d51bef4497a0f485727a79be0e', 0, '05fb37c27e6845c0bfe786999492e202', +'personPhoneAttribute', 'TRACKED_ENTITY_ATTRIBUTE_REF', FALSE, 'ID:pjexi5YaAPa', +'The reference of the tracked entity attribute that contains the phone number of the related Person.'); +INSERT INTO fhir_script_argument(id, version, script_id, name, data_type, array_value, mandatory, default_value, description) +VALUES ('198df286b613479a8b4d3cb9961105e1', 0, '05fb37c27e6845c0bfe786999492e202', +'relationshipTypeCodes', 'CODE', TRUE, TRUE, 'RC_C|RC_CP|RC_PRN|RC_ADOPTM|RC_ADOPTF|RC_MTH|RC_FTH', +'Codes of patient relationship types in their preferred order.'); +INSERT INTO fhir_script_argument(id, version, script_id, name, data_type, mandatory, default_value, description) +VALUES ('bee0e77cd2a54950ae2e2e399c1c3629', 0, '05fb37c27e6845c0bfe786999492e202', +'preferredGender', 'GENDER', FALSE, 'FEMALE', +'The preferred gender of the person (e.g. female in case of a mother).'); +INSERT INTO fhir_script_source (id, version, script_id, source_text, source_type) VALUES ('0cb05413c78a4b2797fca73c3cb9c430', 0, '05fb37c27e6845c0bfe786999492e202', +'function getMatchingRelatedPerson(relatedPersons, relationshipTypeCodes, preferredGender) +{ + var groupedSystemCodeValues = codeUtils.getSystemCodeValuesByMappingCodes(relationshipTypeCodes); + for (var j = 0; j < relationshipTypeCodes.length; j++ ) + { + var systemCodeValues = groupedSystemCodeValues[relationshipTypeCodes[j]]; + if (systemCodeValues != null) + { + var matchingRelatedPerson = null; + for (var k = 0; k < relatedPersons.length; k++) + { + if (codeUtils.containsAnyCode(relatedPersons[k].getRelationship(), systemCodeValues)) + { + if (preferredGender == null) + { + return relatedPersons[k]; + } + if ((relatedPersons[k].getGender() != null) && (relatedPersons[k].getGender().name() === preferredGender)) + { + return relatedPersons[k]; + } + if (matchingRelatedPerson == null) + { + matchingRelatedPerson = relatedPersons[k]; + } + } + } + if (matchingRelatedPerson != null) + { + return matchingRelatedPerson; + } + } + } + return null; +} +var patient = referenceUtils.getResource(input.patient, ''PATIENT'', true); +if ((patient != null) && patient.hasLink()) +{ + var relatedPersons = []; + for (var i = 0; i < patient.getLink().size(); i++) + { + var link = patient.getLink().get(i); + if (!link.isEmpty() && !link.getOther().isEmpty()) + { + var relatedPerson = referenceUtils.getResource(link.getOther(), ''RELATED_PERSON''); + if ((relatedPerson != null) && (!relatedPerson.hasActive() || relatedPerson.getActive()) && dateTimeUtils.isValidNow(relatedPerson.getPeriod())) + { + relatedPersons.push(relatedPerson); + } + } + } + if (relatedPersons.length > 0) + { + var matchingRelatedPerson = getMatchingRelatedPerson(relatedPersons, args[''relationshipTypeCodes''], args[''preferredGender'']); + if (matchingRelatedPerson != null) + { + var lastName = humanNameUtils.getPrimaryName(matchingRelatedPerson.name).family; + if ((lastName != null) || args[''resetDhisValue'']) + { + output.setOptionalValue( args[''personLastNameAttribute''], lastName, context.getFhirRequest().getLastUpdated() ); + } + var firstName = humanNameUtils.getSingleGiven(humanNameUtils.getPrimaryName(matchingRelatedPerson.name)); + if ((firstName != null) || args[''resetDhisValue'']) + { + output.setOptionalValue( args[''personFirstNameAttribute''], firstName, context.getFhirRequest().getLastUpdated() ); + } + var phone = contactPointUtils.getPhoneContactPointValue(matchingRelatedPerson.telecom); + if ((phone != null) || args[''resetDhisValue'']) + { + output.setOptionalValue( args[''personPhoneAttribute''], phone, context.getFhirRequest().getLastUpdated() ); + } + } + } +} +true', 'JAVASCRIPT'); +INSERT INTO fhir_script_source_version (script_source_id, fhir_version) +VALUES ('0cb05413c78a4b2797fca73c3cb9c430', 'DSTU3'); +INSERT INTO fhir_executable_script (id, version, script_id, name, code, description) +VALUES ('c6b2d08d3a73434ea5afee0ff13549a1', 0, '05fb37c27e6845c0bfe786999492e202', +'Transforms FHIR Related Person to DHIS Person', 'TRANSFORM_FHIR_RELATED_PERSON_DHIS_PERSON', +'Transforms FHIR Related Person to DHIS Person.'); + +-- Script that extracts GEO location from an Address +INSERT INTO fhir_script (id, version, name, code, description, script_type, return_type, input_type, output_type) +VALUES ('2263b2969d964698bc1d17930005eef3', 0, 'GEO Location from Patient', 'EXTRACT_ADDRESS_GEO_LOCATION', +'Extracts the GEO location form an address that is included in the input.', +'EVALUATE', 'LOCATION', NULL, NULL); +INSERT INTO fhir_script_variable (script_id, variable) VALUES ('2263b2969d964698bc1d17930005eef3', 'CONTEXT'); +INSERT INTO fhir_script_variable (script_id, variable) VALUES ('2263b2969d964698bc1d17930005eef3', 'INPUT'); +INSERT INTO fhir_script_source (id, version, script_id, source_text, source_type) VALUES ('039ac2e650f24e4a9e4adc0515560273', 0, '2263b2969d964698bc1d17930005eef3', +'var location = null; +if (input.address) +{ + location = geoUtils.getLocation(addressUtils.getPrimaryAddress(input.address)); +} +location', 'JAVASCRIPT'); +INSERT INTO fhir_script_source_version (script_source_id, fhir_version) +VALUES ('039ac2e650f24e4a9e4adc0515560273', 'DSTU3'); +INSERT INTO fhir_executable_script (id, version, script_id, name, code, description) +VALUES ('ef90531f443848bd83b36370dd65875a', 0, '2263b2969d964698bc1d17930005eef3', 'GEO Location from Address', 'EXTRACT_ADDRESS_GEO_LOCATION', +'Extracts the GEO location form an address that is included in the input.'); + +-- Script that performs the lookup of TEI FHIR Resource (Patient) from FHIR Related Person +INSERT INTO fhir_script (id, version, name, code, description, script_type, return_type, input_type, output_type) +VALUES ('0cf409009de3468cbfd0fa2a4703fb66', 0, 'Related Person TEI Lookup', 'RELATED_PERSON_TEI_LOOKUP', 'Lookup of the Tracked Entity Instance FHIR Resource from FHIR Related Person.', 'EVALUATE', 'FHIR_RESOURCE', 'FHIR_RELATED_PERSON', NULL); +INSERT INTO fhir_script_variable (script_id, variable) VALUES ('0cf409009de3468cbfd0fa2a4703fb66', 'CONTEXT'); +INSERT INTO fhir_script_variable (script_id, variable) VALUES ('0cf409009de3468cbfd0fa2a4703fb66', 'INPUT'); +INSERT INTO fhir_script_source (id,version,script_id,source_text,source_type) +VALUES ('1f94dda828ec480f8c6bd8d734612414', 0, '0cf409009de3468cbfd0fa2a4703fb66', 'referenceUtils.getResource(input.patient, ''PATIENT'')', 'JAVASCRIPT'); +INSERT INTO fhir_script_source_version (script_source_id,fhir_version) +VALUES ('1f94dda828ec480f8c6bd8d734612414', 'DSTU3'); +INSERT INTO fhir_executable_script (id, version, script_id, name, code, description) +VALUES ('26e8880864ee446980837962b74ac48a', 0, '0cf409009de3468cbfd0fa2a4703fb66', +'Related Person TEI Lookup', 'RELATED_PERSON_TEI_LOOKUP', 'Lookup of the Tracked Entity Instance FHIR Resource from FHIR Related Person.'); + +-- Script that transforms Patient to Person +INSERT INTO fhir_script (id, version, name, code, description, script_type, return_type, input_type, output_type) +VALUES ('ea8879435e944e319441c7661fe1063e', 0, 'Transforms FHIR Patient to DHIS Person', 'TRANSFORM_FHIR_PATIENT_DHIS_PERSON', 'Transforms FHIR Patient to DHIS Person.', 'TRANSFORM_TO_DHIS', 'BOOLEAN', 'FHIR_PATIENT', 'DHIS_TRACKED_ENTITY_INSTANCE'); +INSERT INTO fhir_script_variable (script_id, variable) VALUES ('ea8879435e944e319441c7661fe1063e', 'CONTEXT'); +INSERT INTO fhir_script_variable (script_id, variable) VALUES ('ea8879435e944e319441c7661fe1063e', 'INPUT'); +INSERT INTO fhir_script_variable (script_id, variable) VALUES ('ea8879435e944e319441c7661fe1063e', 'OUTPUT'); +INSERT INTO fhir_script_argument(id, version, script_id, name, data_type, mandatory, default_value, description) +VALUES ('276b26f2ba0141e689c6b1100580b1f3', 0, 'ea8879435e944e319441c7661fe1063e', +'uniqueIdAttribute', 'TRACKED_ENTITY_ATTRIBUTE_REF', FALSE, 'ID:KSr2yTdu1AI', +'The reference of the tracked entity attribute that contains a unique ID and should be set to the identifier that is used by FHIR.'); +INSERT INTO fhir_script_argument(id, version, script_id, name, data_type, mandatory, default_value, description) +VALUES ('0a7c26cb7bd343949d47a610ac231f8a', 0, 'ea8879435e944e319441c7661fe1063e', +'lastNameAttribute', 'TRACKED_ENTITY_ATTRIBUTE_REF', TRUE, 'ID:aW66s2QSosT', +'The reference of the tracked entity attribute that contains the last name of the Person.'); +INSERT INTO fhir_script_argument(id, version, script_id, name, data_type, mandatory, default_value, description) +VALUES ('b41dd571a1294fa6a80735ea5663e8e3', 0, 'ea8879435e944e319441c7661fe1063e', +'firstNameAttribute', 'TRACKED_ENTITY_ATTRIBUTE_REF', TRUE, 'ID:TfdH5KvFmMy', +'The reference of the tracked entity attribute that contains the first name of the Person.'); +INSERT INTO fhir_script_argument(id, version, script_id, name, data_type, mandatory, default_value, description) +VALUES ('9c62145d55a64e3fbfb8df81ae43146a', 0, 'ea8879435e944e319441c7661fe1063e', +'resetDhisValue', 'BOOLEAN', TRUE, 'false', 'Specifies if existing values in DHIS can be reset by null values (except first and last name).'); +INSERT INTO fhir_script_argument(id, version, script_id, name, data_type, mandatory, default_value, description) +VALUES ('90b3c11038e44291934ce2569e8af1ba', 0, 'ea8879435e944e319441c7661fe1063e', +'birthDateAttribute', 'TRACKED_ENTITY_ATTRIBUTE_REF', FALSE, 'ID:BiTsLcJQ95V', +'The reference of the tracked entity attribute that contains the birth date of the Person.'); +INSERT INTO fhir_script_argument(id, version, script_id, name, data_type, mandatory, default_value, description) +VALUES ('8e3efdc76ce44899bb20faed7d5e3279', 0, 'ea8879435e944e319441c7661fe1063e', +'genderAttribute', 'TRACKED_ENTITY_ATTRIBUTE_REF', FALSE, 'ID:CklPZdOd6H1', +'The reference of the tracked entity attribute that contains the gender of the Person.'); +INSERT INTO fhir_script_argument(id, version, script_id, name, data_type, mandatory, default_value, description) +VALUES ('ae13ceca86d74f608d5425587d53a5bd', 0, 'ea8879435e944e319441c7661fe1063e', +'addressTextAttribute', 'TRACKED_ENTITY_ATTRIBUTE_REF', FALSE, 'ID:Y0i71Y6CVdy', +'The reference of the tracked entity attribute that contains as most as possible from the address of the Person.'); +INSERT INTO fhir_script_source (id, version, script_id, source_text, source_type) VALUES ('b2cfaf306ede41f2bd6c448e76c429a1', 0, 'ea8879435e944e319441c7661fe1063e', +'output.setOptionalValue(args[''uniqueIdAttribute''], output.getIdentifier()); +output.setValue(args[''lastNameAttribute''], humanNameUtils.getPrimaryName(input.name).family, context.getFhirRequest().getLastUpdated()); +output.setValue(args[''firstNameAttribute''], humanNameUtils.getSingleGiven(humanNameUtils.getPrimaryName(input.name)), context.getFhirRequest().getLastUpdated()); +var birthDate = dateTimeUtils.getPreciseDate(input.birthDateElement); +if ((birthDate != null) || args[''resetDhisValue'']) +{ + output.setOptionalValue(args[''birthDateAttribute''], birthDate, context.getFhirRequest().getLastUpdated()); +} +if ((input.gender != null) || args[''resetDhisValue'']) +{ + output.setOptionalValue(args[''genderAttribute''], input.gender, context.getFhirRequest().getLastUpdated()); +} +var addressText = addressUtils.getConstructedText(addressUtils.getPrimaryAddress(input.address)); +if ((addressText != null) || args[''resetDhisValue'']) +{ + output.setOptionalValue(args[''addressTextAttribute''], addressText, context.getFhirRequest().getLastUpdated()); +} +true', 'JAVASCRIPT'); +INSERT INTO fhir_script_source_version (script_source_id, fhir_version) +VALUES ('b2cfaf306ede41f2bd6c448e76c429a1', 'DSTU3'); +INSERT INTO fhir_executable_script (id, version, script_id, name, code, description) +VALUES ('72451c8f7492470790b8a3e0796de19e', 0, 'ea8879435e944e319441c7661fe1063e', +'Transforms FHIR Patient to DHIS Person', 'TRANSFORM_FHIR_PATIENT_DHIS_PERSON', 'Transforms FHIR Patient to DHIS Person.'); + +-- Tracked Entity Person +INSERT INTO fhir_tracked_entity(id, version, name, description, tracked_entity_ref, tracked_entity_identifier_ref) +VALUES ('4203754d21774a4486aa2de31ee4c8ee', 0, 'Person', 'Tracked entity for a patient.', 'NAME:Person', 'ID:Ewi7FUfcHAD'); + +-- Rule FHIR Patient to tracked entity type Person +INSERT INTO fhir_rule (id, version, name, description, enabled, evaluation_order, fhir_resource_type, dhis_resource_type, transform_in_script_id) +VALUES ('5f9ebdc9852e4c8387ca795946aabc35', 0, 'FHIR Patient to Person', NULL, TRUE, 0, 'PATIENT', 'TRACKED_ENTITY', '72451c8f7492470790b8a3e0796de19e'); +INSERT INTO fhir_tracked_entity_rule (id, tracked_entity_id, org_lookup_script_id, loc_lookup_script_id) +VALUES ('5f9ebdc9852e4c8387ca795946aabc35', '4203754d21774a4486aa2de31ee4c8ee', '25a97bb47b394ed48677db4bcaa28ccf', 'ef90531f443848bd83b36370dd65875a'); + +-- Rule FHIR Related Person to tracked entity type Person +INSERT INTO fhir_rule (id, version, name, description, enabled, evaluation_order, fhir_resource_type, dhis_resource_type, transform_in_script_id, contained_allowed) +VALUES ('52227dd9c79c478b92af9aa1f33c76fd', 0, 'FHIR Related Person to Person', NULL, TRUE, 0, 'RELATED_PERSON', 'TRACKED_ENTITY', 'c6b2d08d3a73434ea5afee0ff13549a1', TRUE); +INSERT INTO fhir_tracked_entity_rule (id, tracked_entity_id, tei_lookup_script_id) +VALUES ('52227dd9c79c478b92af9aa1f33c76fd', '4203754d21774a4486aa2de31ee4c8ee', '26e8880864ee446980837962b74ac48a'); + +UPDATE fhir_system_code sc SET system_code_value = (SELECT system_uri FROM fhir_system s WHERE s.id=sc.system_id) || '|' || system_code; +ALTER TABLE fhir_system_code ALTER COLUMN system_code_value SET NOT NULL; +CREATE INDEX fhir_system_code_i3 ON fhir_system_code (system_code_value); diff --git a/app/src/test/resources/logback-test.xml b/app/src/test/resources/logback-test.xml new file mode 100644 index 00000000..a1235f90 --- /dev/null +++ b/app/src/test/resources/logback-test.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + diff --git a/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-org-unit-OU_1234.json b/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-org-unit-OU_1234.json new file mode 100644 index 00000000..645ca578 --- /dev/null +++ b/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-org-unit-OU_1234.json @@ -0,0 +1 @@ +{ "organisationUnits": [ { "code": "OU_4567", "id": "ldXIdLNUNEn" } ] } diff --git a/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-org-unit-empty.json b/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-org-unit-empty.json new file mode 100644 index 00000000..ee02038b --- /dev/null +++ b/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-org-unit-empty.json @@ -0,0 +1 @@ +{ "organisationUnits": [ ] } \ No newline at end of file diff --git a/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-15-create-response.json b/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-15-create-response.json new file mode 100644 index 00000000..1d917784 --- /dev/null +++ b/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-15-create-response.json @@ -0,0 +1,11 @@ +{ + "status": "OK", + "response": { + "importSummaries": [ + { + "status": "SUCCESS", + "reference": "JeR2Ul4mZfx" + } + ] + } +} diff --git a/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-15-create.json b/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-15-create.json new file mode 100644 index 00000000..ce2f9502 --- /dev/null +++ b/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-15-create.json @@ -0,0 +1,7 @@ +{ + "coordinates": "[-13.262743,8.4665341]", "attributes": [ + { "value": "PT_88589", "attribute": "KSr2yTdu1AI" }, { "value": "PT_88589", "attribute": "Ewi7FUfcHAD" }, { "value": "Joe Alan Scott", "attribute": "TfdH5KvFmMy" }, { "value": "West", "attribute": "aW66s2QSosT" }, + { "value": "MALE", "attribute": "CklPZdOd6H1" }, { "value": null, "attribute": "VCtm2pySeEV" }, { "value": "2018-11-11", "attribute": "BiTsLcJQ95V" }, { "value": null, "attribute": "pjexi5YaAPa" }, { "value": null, "attribute": "ftFBu8mHZ4H" }, + { "value": null, "attribute": "EpbquVl5OD6" }, { "value": null, "attribute": "cGs3k0IhQmQ" }, { "value": "Water Road 675 / Apartment 62 / Freetown", "attribute": "Y0i71Y6CVdy" } +], "trackedEntityType": "MCPQUTHX1Ze", "orgUnit": "ldXIdLNUNEn" +} diff --git a/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-15-get.json b/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-15-get.json new file mode 100644 index 00000000..6c8455e2 --- /dev/null +++ b/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-15-get.json @@ -0,0 +1,13 @@ +{ + "trackedEntityInstances": [ + { + "lastUpdated": "2018-11-19T21:39:53.396", "trackedEntityType": "MCPQUTHX1Ze", "orgUnit": "ldXIdLNUNEn", "trackedEntityInstance": "JeR2Ul4mZfx", "coordinates": "[-13.262743,8.4665341]", "attributes": [ + { "lastUpdated": "2018-11-19T21:38:41.565", "storedBy": "admin", "attribute": "BiTsLcJQ95V", "value": "2018-11-11" }, + { "lastUpdated": "2018-11-19T21:38:41.561", "storedBy": "admin", "attribute": "KSr2yTdu1AI", "value": "81589" }, + { "lastUpdated": "2018-11-19T21:38:41.563", "storedBy": "admin", "attribute": "TfdH5KvFmMy", "value": "Joe Alan Scott" }, { "lastUpdated": "2018-11-19T21:38:41.564", "storedBy": "admin", "attribute": "CklPZdOd6H1", "value": "MALE" }, + { "lastUpdated": "2018-11-19T21:38:41.567", "storedBy": "admin", "attribute": "Y0i71Y6CVdy", "value": "Water Road 675 / Apartment 62 / Freetown" }, + { "lastUpdated": "2018-11-19T21:38:41.564", "storedBy": "admin", "attribute": "aW66s2QSosT", "value": "West" }, { "lastUpdated": "2018-11-19T21:38:41.562", "storedBy": "admin", "attribute": "Ewi7FUfcHAD", "value": "81589" } + ] + } + ] +} diff --git a/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-15-update.json b/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-15-update.json new file mode 100644 index 00000000..1f89585d --- /dev/null +++ b/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-15-update.json @@ -0,0 +1,9 @@ +{ + "coordinates": "[-13.262743,8.4665341]", "attributes": [ + { "value": "2018-11-11", "lastUpdated": "2018-11-19T21:38:41.565+01:00", "attribute": "BiTsLcJQ95V" }, { "value": "81589", "lastUpdated": "2018-11-19T21:38:41.561+01:00", "attribute": "KSr2yTdu1AI" }, + { "value": "Joe Alan Scott", "lastUpdated": "2018-11-19T21:38:41.563+01:00", "attribute": "TfdH5KvFmMy" }, { "value": "MALE", "lastUpdated": "2018-11-19T21:38:41.564+01:00", "attribute": "CklPZdOd6H1" }, + { "value": "Water Road 675 / Apartment 62 / Freetown", "lastUpdated": "2018-11-19T21:38:41.567+01:00", "attribute": "Y0i71Y6CVdy" }, { "value": "West", "lastUpdated": "2018-11-19T21:38:41.564+01:00", "attribute": "aW66s2QSosT" }, + { "value": "81589", "lastUpdated": "2018-11-19T21:38:41.562+01:00", "attribute": "Ewi7FUfcHAD" }, { "value": "West", "attribute": "EpbquVl5OD6" }, { "value": "Elizabeth", "attribute": "ftFBu8mHZ4H" }, + { "value": "(723) 456-7890.10", "attribute": "pjexi5YaAPa" } +], "trackedEntityInstance": "JeR2Ul4mZfx", "trackedEntityType": "MCPQUTHX1Ze", "orgUnit": "ldXIdLNUNEn" +} \ No newline at end of file diff --git a/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-empty.json b/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-empty.json new file mode 100644 index 00000000..516a933a --- /dev/null +++ b/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tei-empty.json @@ -0,0 +1,2 @@ +{ "trackedEntityInstances": [ ] } + diff --git a/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tracked-entity-attributes.json b/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tracked-entity-attributes.json new file mode 100644 index 00000000..c9f7501b --- /dev/null +++ b/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tracked-entity-attributes.json @@ -0,0 +1,13 @@ +{ + "trackedEntityAttributes": [ + { "name": "Address", "id": "VCtm2pySeEV", "valueType": "TEXT", "optionSetValue": false }, { "name": "Date of birth", "id": "BiTsLcJQ95V", "valueType": "DATE", "optionSetValue": false }, + { "name": "First Name", "id": "TfdH5KvFmMy", "valueType": "TEXT", "optionSetValue": false }, + { "name": "Gender", "id": "CklPZdOd6H1", "valueType": "TEXT", "optionSetValue": true, "optionSet": { "name": "Sex", "id": "hiQ3QFheQ3O", "options": [ { "code": "MALE", "name": "Male" }, { "code": "FEMALE", "name": "Female" } ] } }, + { "name": "Last Name", "id": "aW66s2QSosT", "valueType": "TEXT", "optionSetValue": false }, { "name": "Mother/Caregiver's contact number", "id": "pjexi5YaAPa", "valueType": "PHONE_NUMBER", "optionSetValue": false }, + { "name": "Mother/Caregiver's first name", "id": "ftFBu8mHZ4H", "valueType": "TEXT", "optionSetValue": false }, { "name": "Mother/Caregiver's last name", "id": "EpbquVl5OD6", "valueType": "TEXT", "optionSetValue": false }, + { "name": "Patient ID", "id": "Ewi7FUfcHAD", "valueType": "TEXT", "optionSetValue": false }, { + "name": "Place of Birth", "id": "cGs3k0IhQmQ", "valueType": "TEXT", "optionSetValue": true, + "optionSet": { "name": "Place of birth", "id": "OhW3bWNSTum", "options": [ { "code": "Home", "name": "Home" }, { "code": "Health Facility", "name": "Health Facility" } ] } + }, { "code": "UID", "name": "Unique ID", "id": "KSr2yTdu1AI", "valueType": "TEXT", "optionSetValue": false }, { "name": "Village Name", "id": "Y0i71Y6CVdy", "valueType": "TEXT", "optionSetValue": false } + ] +} diff --git a/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tracked-entity-type.json b/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tracked-entity-type.json new file mode 100644 index 00000000..c63bdaf7 --- /dev/null +++ b/app/src/test/resources/org/dhis2/fhir/adapter/dhis/test/default-tracked-entity-type.json @@ -0,0 +1,25 @@ +{ + "trackedEntityTypes": [ + { + "name": "Person", "id": "MCPQUTHX1Ze", "trackedEntityTypeAttributes": [ + { "name": "Person Unique ID", "id": "yFfy1y9vvZ3", "valueType": "TEXT", "mandatory": false, "trackedEntityAttribute": { "code": "UID", "name": "Unique ID", "id": "KSr2yTdu1AI", "valueType": "TEXT", "optionSetValue": false } }, + { "name": "Person Patient ID", "id": "eUP78IY4rUF", "valueType": "TEXT", "trackedEntityAttribute": { "name": "Patient ID", "id": "Ewi7FUfcHAD", "valueType": "TEXT", "optionSetValue": false } }, + { "name": "Person First Name", "id": "XznTxIRztFR", "valueType": "TEXT", "trackedEntityAttribute": { "name": "First Name", "id": "TfdH5KvFmMy", "valueType": "TEXT", "optionSetValue": false } }, + { "name": "Person Last Name", "id": "aobAjew2sJt", "valueType": "TEXT", "trackedEntityAttribute": { "name": "Last Name", "id": "aW66s2QSosT", "valueType": "TEXT", "optionSetValue": false } }, { + "name": "Person Gender", "id": "D011up7xrF1", "valueType": "TEXT", "trackedEntityAttribute": { + "name": "Gender", "id": "CklPZdOd6H1", "valueType": "TEXT", "optionSetValue": true, "optionSet": { "name": "Sex", "id": "hiQ3QFheQ3O", "options": [ { "code": "MALE", "name": "Male" }, { "code": "FEMALE", "name": "Female" } ] } + } + }, { "name": "Person Address", "id": "jJ2oQoLfhIk", "valueType": "TEXT", "trackedEntityAttribute": { "name": "Address", "id": "VCtm2pySeEV", "valueType": "TEXT", "optionSetValue": false } }, + { "name": "Person Date of birth", "id": "XFb3vyDs2s7", "valueType": "DATE", "trackedEntityAttribute": { "name": "Date of birth", "id": "BiTsLcJQ95V", "valueType": "DATE", "optionSetValue": false } }, { + "name": "Person Mother/Caregiver's contact number", "id": "rMQzVjyuncw", "valueType": "PHONE_NUMBER", "trackedEntityAttribute": { "name": "Mother/Caregiver's contact number", "id": "pjexi5YaAPa", "valueType": "PHONE_NUMBER", "optionSetValue": false } + }, { "name": "Person Mother/Caregiver's first name", "id": "RVGHeup1pH0", "valueType": "TEXT", "trackedEntityAttribute": { "name": "Mother/Caregiver's first name", "id": "ftFBu8mHZ4H", "valueType": "TEXT", "optionSetValue": false } }, + { "name": "Person Mother/Caregiver's last name", "id": "PRx59M55Y1O", "valueType": "TEXT", "trackedEntityAttribute": { "name": "Mother/Caregiver's last name", "id": "EpbquVl5OD6", "valueType": "TEXT", "optionSetValue": false } }, { + "name": "Person Place of Birth", "id": "FYTF1Qb8E96", "valueType": "TEXT", "trackedEntityAttribute": { + "name": "Place of Birth", "id": "cGs3k0IhQmQ", "valueType": "TEXT", "optionSetValue": true, + "optionSet": { "name": "Place of birth", "id": "OhW3bWNSTum", "options": [ { "code": "Home", "name": "Home" }, { "code": "Health Facility", "name": "Health Facility" } ] } + } + }, { "name": "Person Village Name", "id": "Af9IjCc1SFK", "valueType": "TEXT", "trackedEntityAttribute": { "name": "Village Name", "id": "Y0i71Y6CVdy", "valueType": "TEXT", "optionSetValue": false } } + ] + } + ] +} diff --git a/app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/get-organization-18.json b/app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/get-organization-18.json new file mode 100644 index 00000000..805062be --- /dev/null +++ b/app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/get-organization-18.json @@ -0,0 +1,18 @@ +{ + "resourceType": "Organization", + "id": "18", + "meta": { + "versionId": "7", + "lastUpdated": "2018-11-21T10:55:42.191+01:00" + }, + "identifier": [ + { + "system": "http://example.sl/organizations", + "value": "9876" + } + ], + "name": "Registration Unit", + "partOf": { + "reference": "Organization/18" + } +} diff --git a/app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/get-organization-19.json b/app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/get-organization-19.json new file mode 100644 index 00000000..728eb08f --- /dev/null +++ b/app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/get-organization-19.json @@ -0,0 +1,18 @@ +{ + "resourceType": "Organization", + "id": "19", + "meta": { + "versionId": "9", + "lastUpdated": "2018-11-21T10:55:42.191+01:00" + }, + "identifier": [ + { + "system": "http://example.sl/organizations", + "value": "U_7777" + } + ], + "name": "Registration Unit", + "partOf": { + "reference": "Organization/18" + } +} diff --git a/app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/get-patient-15.json b/app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/get-patient-15.json new file mode 100644 index 00000000..60ee5124 --- /dev/null +++ b/app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/get-patient-15.json @@ -0,0 +1,107 @@ +{ + "resourceType": "Patient", + "id": "15", + "meta": { + "versionId": "6", + "lastUpdated": "2018-11-19T21:41:14.493+01:00" + }, + "text": { + "status": "generated", + "div": "
Joe Alan Scott WEST
Identifier88589
AddressWater Road 675
Apartment 62
Freetown Sierra Leone
Date of birth11 November 2018
" + }, + "contained": [ + { + "resourceType": "RelatedPerson", + "id": "1", + "active": true, + "patient": { + "reference": "Patient/15" + }, + "relationship": { + "coding": [ + { + "system": "http://hl7.org/fhir/v3/RoleCode", + "code": "MTH" + } + ] + }, + "name": [ + { + "family": "West", + "given": [ + "Elizabeth" + ] + } + ], + "telecom": [ + { + "system": "phone", + "value": "(123) 456-7890.10", + "use": "old", + "rank": 1 + }, + { + "system": "phone", + "value": "(723) 456-7890.10", + "use": "home", + "rank": 2 + } + ], + "gender": "female" + } + ], + "identifier": [ + { + "system": "http://example.sl/patients", + "value": "88589" + } + ], + "name": [ + { + "family": "West", + "given": [ + "Joe", + "Alan", + "Scott" + ] + } + ], + "gender": "male", + "birthDate": "2018-11-11", + "address": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/geolocation", + "extension": [ + { + "url": "latitude", + "valueDecimal": 8.4665341 + }, + { + "url": "longitude", + "valueDecimal": -13.262743 + } + ] + } + ], + "line": [ + "Water Road 675", + "Apartment 62" + ], + "city": "Freetown", + "country": "Sierra Leone" + } + ], + "managingOrganization": { + "reference": "Organization/19" + }, + "link": [ + { + "other": { + "reference": "#1" + }, + "type": "seealso" + } + ] +} diff --git a/app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/metadata.json b/app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/metadata.json new file mode 100644 index 00000000..a50f5858 --- /dev/null +++ b/app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/metadata.json @@ -0,0 +1,19388 @@ +{ + "resourceType": "CapabilityStatement", + "status": "active", + "date": "2018-11-21T17:52:50+01:00", + "publisher": "Not provided", + "kind": "instance", + "software": { + "name": "HAPI FHIR Server", + "version": "3.6.0" + }, + "implementation": { + "description": "Example Server", + "url": "http://localhost:8082/hapi-fhir-jpaserver-example/baseDstu3" + }, + "fhirVersion": "3.0.1", + "acceptUnknown": "extensions", + "format": [ + "application/fhir+xml", + "application/fhir+json" + ], + "rest": [ + { + "mode": "server", + "resource": [ + { + "type": "Account", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Account" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Account:owner", + "Account:patient", + "Account:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "owner", + "type": "reference", + "documentation": "Who is responsible?" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Account number" + }, + { + "name": "period", + "type": "date", + "documentation": "Transaction window" + }, + { + "name": "balance", + "type": "quantity", + "documentation": "How much is in account?" + }, + { + "name": "patient", + "type": "reference", + "documentation": "What is account tied to?" + }, + { + "name": "subject", + "type": "reference", + "documentation": "What is account tied to?" + }, + { + "name": "name", + "type": "string", + "documentation": "Human-readable label" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "type", + "type": "token", + "documentation": "E.g. patient, expense, depreciation" + }, + { + "name": "status", + "type": "token", + "documentation": "active | inactive | entered-in-error" + } + ] + }, + { + "type": "ActivityDefinition", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ActivityDefinition" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "ActivityDefinition:composed-of", + "ActivityDefinition:depends-on", + "ActivityDefinition:derived-from", + "ActivityDefinition:predecessor", + "ActivityDefinition:successor" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The activity definition publication date" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifier for the activity definition" + }, + { + "name": "successor", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the activity definition" + }, + { + "name": "derived-from", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the activity definition" + }, + { + "name": "predecessor", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "composed-of", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "title", + "type": "string", + "documentation": "The human-friendly name of the activity definition" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the activity definition" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the activity definition" + }, + { + "name": "depends-on", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "effective", + "type": "date", + "documentation": "The time during which the activity definition is intended to be in use" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the activity definition" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the activity definition" + }, + { + "name": "topic", + "type": "token", + "documentation": "Topics associated with the module" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the activity definition" + } + ] + }, + { + "type": "AdverseEvent", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/AdverseEvent" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "AdverseEvent:location", + "AdverseEvent:reaction", + "AdverseEvent:recorder", + "AdverseEvent:study", + "AdverseEvent:subject", + "AdverseEvent:substance" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "When the event occurred" + }, + { + "name": "recorder", + "type": "reference", + "documentation": "Who recorded the adverse event" + }, + { + "name": "study", + "type": "reference", + "documentation": "AdverseEvent.study" + }, + { + "name": "reaction", + "type": "reference", + "documentation": "Adverse Reaction Events linked to exposure to substance" + }, + { + "name": "seriousness", + "type": "token", + "documentation": "Mild | Moderate | Severe" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Subject or group impacted by event" + }, + { + "name": "substance", + "type": "reference", + "documentation": "Refers to the specific entity that caused the adverse event" + }, + { + "name": "location", + "type": "reference", + "documentation": "Location where adverse event occurred" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "category", + "type": "token", + "documentation": "AE | PAE \rAn adverse event is an event that caused harm to a patient, an adverse reaction is a something that is a subject-specific event that is a result of an exposure to a medication, food, device or environmental substance, a potential adverse event is something that occurred and that could have caused harm to a patient but did not" + }, + { + "name": "type", + "type": "token", + "documentation": "actual | potential" + } + ] + }, + { + "type": "AllergyIntolerance", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/AllergyIntolerance" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "AllergyIntolerance:asserter", + "AllergyIntolerance:patient", + "AllergyIntolerance:recorder" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "Date record was believed accurate" + }, + { + "name": "severity", + "type": "token", + "documentation": "mild | moderate | severe (of event as a whole)" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External ids for this item" + }, + { + "name": "manifestation", + "type": "token", + "documentation": "Clinical symptoms/signs associated with the Event" + }, + { + "name": "recorder", + "type": "reference", + "documentation": "Who recorded the sensitivity" + }, + { + "name": "code", + "type": "token", + "documentation": "Code that identifies the allergy or intolerance" + }, + { + "name": "verification-status", + "type": "token", + "documentation": "unconfirmed | confirmed | refuted | entered-in-error" + }, + { + "name": "criticality", + "type": "token", + "documentation": "low | high | unable-to-assess" + }, + { + "name": "clinical-status", + "type": "token", + "documentation": "active | inactive | resolved" + }, + { + "name": "onset", + "type": "date", + "documentation": "Date(/time) when manifestations showed" + }, + { + "name": "type", + "type": "token", + "documentation": "allergy | intolerance - Underlying mechanism (if known)" + }, + { + "name": "asserter", + "type": "reference", + "documentation": "Source of the information about the allergy" + }, + { + "name": "route", + "type": "token", + "documentation": "How the subject was exposed to the substance" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Who the sensitivity is for" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "category", + "type": "token", + "documentation": "food | medication | environment | biologic" + }, + { + "name": "last-date", + "type": "date", + "documentation": "Date(/time) of last known occurrence of a reaction" + } + ] + }, + { + "type": "Appointment", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Appointment" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Appointment:actor", + "Appointment:incomingreferral", + "Appointment:location", + "Appointment:patient", + "Appointment:practitioner" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "Appointment date/time." + }, + { + "name": "identifier", + "type": "token", + "documentation": "An Identifier of the Appointment" + }, + { + "name": "incomingreferral", + "type": "reference", + "documentation": "The ReferralRequest provided as information to allocate to the Encounter" + }, + { + "name": "practitioner", + "type": "reference", + "documentation": "One of the individuals of the appointment is this practitioner" + }, + { + "name": "appointment-type", + "type": "token", + "documentation": "The style of appointment or patient that has been booked in the slot (not service type)" + }, + { + "name": "part-status", + "type": "token", + "documentation": "The Participation status of the subject, or other participant on the appointment. Can be used to locate participants that have not responded to meeting requests." + }, + { + "name": "service-type", + "type": "token", + "documentation": "The specific service that is to be performed during this appointment" + }, + { + "name": "actor", + "type": "reference", + "documentation": "Any one of the individuals participating in the appointment" + }, + { + "name": "patient", + "type": "reference", + "documentation": "One of the individuals of the appointment is this patient" + }, + { + "name": "location", + "type": "reference", + "documentation": "This location is listed in the participants of the appointment" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "The overall status of the appointment" + } + ] + }, + { + "type": "AppointmentResponse", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/AppointmentResponse" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "AppointmentResponse:actor", + "AppointmentResponse:appointment", + "AppointmentResponse:location", + "AppointmentResponse:patient", + "AppointmentResponse:practitioner" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "actor", + "type": "reference", + "documentation": "The Person, Location/HealthcareService or Device that this appointment response replies for" + }, + { + "name": "identifier", + "type": "token", + "documentation": "An Identifier in this appointment response" + }, + { + "name": "practitioner", + "type": "reference", + "documentation": "This Response is for this Practitioner" + }, + { + "name": "part-status", + "type": "token", + "documentation": "The participants acceptance status for this appointment" + }, + { + "name": "patient", + "type": "reference", + "documentation": "This Response is for this Patient" + }, + { + "name": "appointment", + "type": "reference", + "documentation": "The appointment that the response is attached to" + }, + { + "name": "location", + "type": "reference", + "documentation": "This Response is for this Location" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + } + ] + }, + { + "type": "AuditEvent", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/AuditEvent" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "AuditEvent:agent", + "AuditEvent:entity", + "AuditEvent:patient" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "Time when the event occurred on source" + }, + { + "name": "entity-type", + "type": "token", + "documentation": "Type of entity involved" + }, + { + "name": "agent", + "type": "reference", + "documentation": "Direct reference to resource" + }, + { + "name": "address", + "type": "string", + "documentation": "Identifier for the network access point of the user device" + }, + { + "name": "entity-role", + "type": "token", + "documentation": "What role the entity played" + }, + { + "name": "source", + "type": "token", + "documentation": "The identity of source detecting the event" + }, + { + "name": "type", + "type": "token", + "documentation": "Type/identifier of event" + }, + { + "name": "altid", + "type": "token", + "documentation": "Alternative User id e.g. authentication" + }, + { + "name": "site", + "type": "token", + "documentation": "Logical source location within the enterprise" + }, + { + "name": "agent-name", + "type": "string", + "documentation": "Human-meaningful name for the agent" + }, + { + "name": "entity-name", + "type": "string", + "documentation": "Descriptor for entity" + }, + { + "name": "subtype", + "type": "token", + "documentation": "More specific type/id for the event" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Direct reference to resource" + }, + { + "name": "action", + "type": "token", + "documentation": "Type of action performed during the event" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "agent-role", + "type": "token", + "documentation": "Agent role in the event" + }, + { + "name": "user", + "type": "token", + "documentation": "Unique identifier for the user" + }, + { + "name": "entity", + "type": "reference", + "documentation": "Specific instance of resource" + }, + { + "name": "entity-id", + "type": "token", + "documentation": "Specific instance of object" + }, + { + "name": "outcome", + "type": "token", + "documentation": "Whether the event succeeded or failed" + }, + { + "name": "policy", + "type": "uri", + "documentation": "Policy that authorized event" + } + ] + }, + { + "type": "Basic", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Basic" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Basic:author", + "Basic:patient", + "Basic:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Business identifier" + }, + { + "name": "code", + "type": "token", + "documentation": "Kind of Resource" + }, + { + "name": "author", + "type": "reference", + "documentation": "Who created" + }, + { + "name": "created", + "type": "date", + "documentation": "When created" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Identifies the focus of this resource" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Identifies the focus of this resource" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + } + ] + }, + { + "type": "Binary", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Binary" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "contenttype", + "type": "token", + "documentation": "MimeType of the binary content" + } + ] + }, + { + "type": "BodySite", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/BodySite" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "BodySite:patient" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Identifier for this instance of the anatomical location" + }, + { + "name": "code", + "type": "token", + "documentation": "Named anatomical location" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Patient to whom bodysite belongs" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + } + ] + }, + { + "type": "Bundle", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Bundle" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Bundle:composition", + "Bundle:message" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Persistent identifier for the bundle" + }, + { + "name": "composition", + "type": "reference", + "documentation": "The first resource in the bundle, if the bundle type is \"document\" - this is a composition, and this parameter provides access to searches its contents" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "message", + "type": "reference", + "documentation": "The first resource in the bundle, if the bundle type is \"message\" - this is a message header, and this parameter provides access to search its contents" + }, + { + "name": "type", + "type": "token", + "documentation": "document | message | transaction | transaction-response | batch | batch-response | history | searchset | collection" + } + ] + }, + { + "type": "CapabilityStatement", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/CapabilityStatement" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "CapabilityStatement:resource-profile", + "CapabilityStatement:supported-profile" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The capability statement publication date" + }, + { + "name": "resource-profile", + "type": "reference", + "documentation": "A profile id invoked in a capability statement" + }, + { + "name": "software", + "type": "string", + "documentation": "Part of a the name of a software application" + }, + { + "name": "resource", + "type": "token", + "documentation": "Name of a resource mentioned in a capability statement" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the capability statement" + }, + { + "name": "format", + "type": "token", + "documentation": "formats supported (xml | json | ttl | mime type)" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the capability statement" + }, + { + "name": "fhirversion", + "type": "token", + "documentation": "The version of FHIR" + }, + { + "name": "title", + "type": "string", + "documentation": "The human-friendly name of the capability statement" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the capability statement" + }, + { + "name": "supported-profile", + "type": "reference", + "documentation": "Profiles for use cases supported" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the capability statement" + }, + { + "name": "mode", + "type": "token", + "documentation": "Mode - restful (server/client) or messaging (sender/receiver)" + }, + { + "name": "security-service", + "type": "token", + "documentation": "OAuth | SMART-on-FHIR | NTLM | Basic | Kerberos | Certificates" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the capability statement" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the capability statement" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "event", + "type": "token", + "documentation": "Event code in a capability statement" + }, + { + "name": "guide", + "type": "uri", + "documentation": "Implementation guides supported" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the capability statement" + } + ] + }, + { + "type": "CarePlan", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/CarePlan" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "CarePlan:activity-reference", + "CarePlan:based-on", + "CarePlan:care-team", + "CarePlan:condition", + "CarePlan:context", + "CarePlan:definition", + "CarePlan:encounter", + "CarePlan:goal", + "CarePlan:part-of", + "CarePlan:patient", + "CarePlan:performer", + "CarePlan:replaces", + "CarePlan:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "care-team", + "type": "reference", + "documentation": "Who's involved in plan?" + }, + { + "name": "date", + "type": "date", + "documentation": "Time period plan covers" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External Ids for this plan" + }, + { + "name": "goal", + "type": "reference", + "documentation": "Desired outcome of plan" + }, + { + "name": "performer", + "type": "reference", + "documentation": "Matches if the practitioner is listed as a performer in any of the \"simple\" activities. (For performers of the detailed activities, chain through the activitydetail search parameter.)" + }, + { + "name": "replaces", + "type": "reference", + "documentation": "CarePlan replaced by this CarePlan" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Who care plan is for" + }, + { + "name": "part-of", + "type": "reference", + "documentation": "Part of referenced CarePlan" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "Created in context of" + }, + { + "name": "intent", + "type": "token", + "documentation": "proposal | plan | order | option" + }, + { + "name": "activity-reference", + "type": "reference", + "documentation": "Activity details defined in specific resource" + }, + { + "name": "condition", + "type": "reference", + "documentation": "Health issues this plan addresses" + }, + { + "name": "based-on", + "type": "reference", + "documentation": "Fulfills care plan" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Who care plan is for" + }, + { + "name": "context", + "type": "reference", + "documentation": "Created in context of" + }, + { + "name": "activity-date", + "type": "date", + "documentation": "Specified date occurs within period specified by CarePlan.activity.timingSchedule" + }, + { + "name": "definition", + "type": "reference", + "documentation": "Protocol or definition" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "category", + "type": "token", + "documentation": "Type of plan" + }, + { + "name": "activity-code", + "type": "token", + "documentation": "Detail type of activity" + }, + { + "name": "status", + "type": "token", + "documentation": "draft | active | suspended | completed | entered-in-error | cancelled | unknown" + } + ] + }, + { + "type": "CareTeam", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/CareTeam" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "CareTeam:context", + "CareTeam:encounter", + "CareTeam:participant", + "CareTeam:patient", + "CareTeam:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "Time period team covers" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External Ids for this team" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Who care team is for" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Who care team is for" + }, + { + "name": "context", + "type": "reference", + "documentation": "Encounter or episode associated with CareTeam" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "Encounter or episode associated with CareTeam" + }, + { + "name": "category", + "type": "token", + "documentation": "Type of team" + }, + { + "name": "participant", + "type": "reference", + "documentation": "Who is involved" + }, + { + "name": "status", + "type": "token", + "documentation": "proposed | active | suspended | inactive | entered-in-error" + } + ] + }, + { + "type": "ChargeItem", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ChargeItem" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "ChargeItem:account", + "ChargeItem:context", + "ChargeItem:enterer", + "ChargeItem:participant-actor", + "ChargeItem:patient", + "ChargeItem:performing-organization", + "ChargeItem:requesting-organization", + "ChargeItem:service", + "ChargeItem:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Business Identifier for item" + }, + { + "name": "performing-organization", + "type": "reference", + "documentation": "Organization providing the charged sevice" + }, + { + "name": "code", + "type": "token", + "documentation": "A code that identifies the charge, like a billing code" + }, + { + "name": "quantity", + "type": "quantity", + "documentation": "Quantity of which the charge item has been serviced" + }, + { + "name": "participant-role", + "type": "token", + "documentation": "What type of performance was done" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Individual service was done for/to" + }, + { + "name": "participant-actor", + "type": "reference", + "documentation": "Individual who was performing" + }, + { + "name": "occurrence", + "type": "date", + "documentation": "When the charged service was applied" + }, + { + "name": "entered-date", + "type": "date", + "documentation": "Date the charge item was entered" + }, + { + "name": "factor-override", + "type": "number", + "documentation": "Factor overriding the associated rules" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Individual service was done for/to" + }, + { + "name": "service", + "type": "reference", + "documentation": "Which rendered service is being charged?" + }, + { + "name": "price-override", + "type": "quantity", + "documentation": "Price overriding the associated rules" + }, + { + "name": "context", + "type": "reference", + "documentation": "Encounter / Episode associated with event" + }, + { + "name": "enterer", + "type": "reference", + "documentation": "Individual who was entering" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "account", + "type": "reference", + "documentation": "Account to place this charge" + }, + { + "name": "requesting-organization", + "type": "reference", + "documentation": "Organization requesting the charged service" + } + ] + }, + { + "type": "Claim", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Claim" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Claim:care-team", + "Claim:encounter", + "Claim:enterer", + "Claim:facility", + "Claim:insurer", + "Claim:organization", + "Claim:patient", + "Claim:payee", + "Claim:provider" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "care-team", + "type": "reference", + "documentation": "Member of the CareTeam" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The primary identifier of the financial resource" + }, + { + "name": "created", + "type": "date", + "documentation": "The creation date for the Claim" + }, + { + "name": "use", + "type": "token", + "documentation": "The kind of financial resource" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "Encounters associated with a billed line item" + }, + { + "name": "priority", + "type": "token", + "documentation": "Processing priority requested" + }, + { + "name": "payee", + "type": "reference", + "documentation": "The party receiving any payment for the Claim" + }, + { + "name": "provider", + "type": "reference", + "documentation": "Provider responsible for the Claim" + }, + { + "name": "insurer", + "type": "reference", + "documentation": "The target payor/insurer for the Claim" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Patient receiving the services" + }, + { + "name": "organization", + "type": "reference", + "documentation": "The reference to the providing organization" + }, + { + "name": "enterer", + "type": "reference", + "documentation": "The party responsible for the entry of the Claim" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "facility", + "type": "reference", + "documentation": "Facility responsible for the goods and services" + } + ] + }, + { + "type": "ClaimResponse", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ClaimResponse" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "ClaimResponse:insurer", + "ClaimResponse:patient", + "ClaimResponse:request", + "ClaimResponse:request-provider" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The identity of the claimresponse" + }, + { + "name": "request", + "type": "reference", + "documentation": "The claim reference" + }, + { + "name": "disposition", + "type": "string", + "documentation": "The contents of the disposition message" + }, + { + "name": "created", + "type": "date", + "documentation": "The creation date" + }, + { + "name": "insurer", + "type": "reference", + "documentation": "The organization who generated this resource" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The subject of care." + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "payment-date", + "type": "date", + "documentation": "The expected paymentDate" + }, + { + "name": "request-provider", + "type": "reference", + "documentation": "The Provider of the claim" + }, + { + "name": "outcome", + "type": "token", + "documentation": "The processing outcome" + } + ] + }, + { + "type": "ClinicalImpression", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ClinicalImpression" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "ClinicalImpression:action", + "ClinicalImpression:assessor", + "ClinicalImpression:context", + "ClinicalImpression:finding-ref", + "ClinicalImpression:investigation", + "ClinicalImpression:patient", + "ClinicalImpression:previous", + "ClinicalImpression:problem", + "ClinicalImpression:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "When the assessment was documented" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Business identifier" + }, + { + "name": "previous", + "type": "reference", + "documentation": "Reference to last assessment" + }, + { + "name": "finding-code", + "type": "token", + "documentation": "What was found" + }, + { + "name": "assessor", + "type": "reference", + "documentation": "The clinician performing the assessment" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Patient or group assessed" + }, + { + "name": "finding-ref", + "type": "reference", + "documentation": "What was found" + }, + { + "name": "problem", + "type": "reference", + "documentation": "Relevant impressions of patient state" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Patient or group assessed" + }, + { + "name": "context", + "type": "reference", + "documentation": "Encounter or Episode created from" + }, + { + "name": "action", + "type": "reference", + "documentation": "Action taken as part of assessment procedure" + }, + { + "name": "investigation", + "type": "reference", + "documentation": "Record of a specific investigation" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "draft | completed | entered-in-error" + } + ] + }, + { + "type": "CodeSystem", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/CodeSystem" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The code system publication date" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifier for the code system" + }, + { + "name": "code", + "type": "token", + "documentation": "A code defined in the code system" + }, + { + "name": "content-mode", + "type": "token", + "documentation": "not-present | example | fragment | complete" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the code system" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the code system" + }, + { + "name": "language", + "type": "token", + "documentation": "A language in which a designation is provided" + }, + { + "name": "title", + "type": "string", + "documentation": "The human-friendly name of the code system" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the code system" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the code system" + }, + { + "name": "system", + "type": "uri", + "documentation": "The system for any codes defined by this code system (same as 'url')" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the code system" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the code system" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the code system" + } + ] + }, + { + "type": "Communication", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Communication" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Communication:based-on", + "Communication:context", + "Communication:definition", + "Communication:encounter", + "Communication:part-of", + "Communication:patient", + "Communication:recipient", + "Communication:sender", + "Communication:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Unique identifier" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Focus of message" + }, + { + "name": "part-of", + "type": "reference", + "documentation": "Part of this action" + }, + { + "name": "received", + "type": "date", + "documentation": "When received" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "Encounter leading to message" + }, + { + "name": "medium", + "type": "token", + "documentation": "A channel of communication" + }, + { + "name": "sent", + "type": "date", + "documentation": "When sent" + }, + { + "name": "based-on", + "type": "reference", + "documentation": "Request fulfilled by this communication" + }, + { + "name": "sender", + "type": "reference", + "documentation": "Message sender" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Focus of message" + }, + { + "name": "context", + "type": "reference", + "documentation": "Encounter or episode leading to message" + }, + { + "name": "recipient", + "type": "reference", + "documentation": "Message recipient" + }, + { + "name": "definition", + "type": "reference", + "documentation": "Instantiates protocol or definition" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "category", + "type": "token", + "documentation": "Message category" + }, + { + "name": "status", + "type": "token", + "documentation": "preparation | in-progress | suspended | aborted | completed | entered-in-error" + } + ] + }, + { + "type": "CommunicationRequest", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/CommunicationRequest" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "CommunicationRequest:based-on", + "CommunicationRequest:context", + "CommunicationRequest:encounter", + "CommunicationRequest:patient", + "CommunicationRequest:recipient", + "CommunicationRequest:replaces", + "CommunicationRequest:requester", + "CommunicationRequest:sender", + "CommunicationRequest:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "authored", + "type": "date", + "documentation": "When request transitioned to being actionable" + }, + { + "name": "requester", + "type": "reference", + "documentation": "Individual making the request" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Unique identifier" + }, + { + "name": "replaces", + "type": "reference", + "documentation": "Request(s) replaced by this request" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Focus of message" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "Encounter leading to message" + }, + { + "name": "medium", + "type": "token", + "documentation": "A channel of communication" + }, + { + "name": "occurrence", + "type": "date", + "documentation": "When scheduled" + }, + { + "name": "priority", + "type": "token", + "documentation": "Message urgency" + }, + { + "name": "group-identifier", + "type": "token", + "documentation": "Composite request this is part of" + }, + { + "name": "based-on", + "type": "reference", + "documentation": "Fulfills plan or proposal" + }, + { + "name": "sender", + "type": "reference", + "documentation": "Message sender" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Focus of message" + }, + { + "name": "context", + "type": "reference", + "documentation": "Encounter or episode leading to message" + }, + { + "name": "recipient", + "type": "reference", + "documentation": "Message recipient" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "category", + "type": "token", + "documentation": "Message category" + }, + { + "name": "status", + "type": "token", + "documentation": "draft | active | suspended | cancelled | completed | entered-in-error | unknown" + } + ] + }, + { + "type": "CompartmentDefinition", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/CompartmentDefinition" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The compartment definition publication date" + }, + { + "name": "code", + "type": "token", + "documentation": "Patient | Encounter | RelatedPerson | Practitioner | Device" + }, + { + "name": "resource", + "type": "token", + "documentation": "Name of resource type" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the compartment definition" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the compartment definition" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the compartment definition" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the compartment definition" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "title", + "type": "string", + "documentation": "The human-friendly name of the compartment definition" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the compartment definition" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the compartment definition" + } + ] + }, + { + "type": "Composition", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Composition" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Composition:attester", + "Composition:author", + "Composition:encounter", + "Composition:entry", + "Composition:patient", + "Composition:related-ref", + "Composition:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "Composition editing time" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Logical identifier of composition (version-independent)" + }, + { + "name": "period", + "type": "date", + "documentation": "The period covered by the documentation" + }, + { + "name": "related-id", + "type": "token", + "documentation": "Target of the relationship" + }, + { + "name": "author", + "type": "reference", + "documentation": "Who and/or what authored the composition" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Who and/or what the composition is about" + }, + { + "name": "confidentiality", + "type": "token", + "documentation": "As defined by affinity domain" + }, + { + "name": "section", + "type": "token", + "documentation": "Classification of section (recommended)" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "Context of the Composition" + }, + { + "name": "title", + "type": "string", + "documentation": "Human Readable name/title" + }, + { + "name": "type", + "type": "token", + "documentation": "Kind of composition (LOINC if possible)" + }, + { + "name": "attester", + "type": "reference", + "documentation": "Who attested the composition" + }, + { + "name": "entry", + "type": "reference", + "documentation": "A reference to data that supports this section" + }, + { + "name": "related-ref", + "type": "reference", + "documentation": "Target of the relationship" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Who and/or what the composition is about" + }, + { + "name": "context", + "type": "token", + "documentation": "Code(s) that apply to the event being documented" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "class", + "type": "token", + "documentation": "Categorization of Composition" + }, + { + "name": "status", + "type": "token", + "documentation": "preliminary | final | amended | entered-in-error" + } + ] + }, + { + "type": "ConceptMap", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ConceptMap" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "ConceptMap:source", + "ConceptMap:source-uri", + "ConceptMap:target", + "ConceptMap:target-uri" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The concept map publication date" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifier for the concept map" + }, + { + "name": "other", + "type": "uri", + "documentation": "Canonical URL for other concept map" + }, + { + "name": "product", + "type": "uri", + "documentation": "Reference to property mapping depends on" + }, + { + "name": "dependson", + "type": "uri", + "documentation": "Reference to property mapping depends on" + }, + { + "name": "target-system", + "type": "uri", + "documentation": "System of the target (if necessary)" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the concept map" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the concept map" + }, + { + "name": "source", + "type": "reference", + "documentation": "Identifies the source of the concepts which are being mapped" + }, + { + "name": "title", + "type": "string", + "documentation": "The human-friendly name of the concept map" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the concept map" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the concept map" + }, + { + "name": "target", + "type": "reference", + "documentation": "Provides context to the mappings" + }, + { + "name": "source-code", + "type": "token", + "documentation": "Identifies element being mapped" + }, + { + "name": "source-uri", + "type": "reference", + "documentation": "Identifies the source of the concepts which are being mapped" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the concept map" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the concept map" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "source-system", + "type": "uri", + "documentation": "Code System (if value set crosses code systems)" + }, + { + "name": "target-code", + "type": "token", + "documentation": "Code that identifies the target element" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the concept map" + }, + { + "name": "target-uri", + "type": "reference", + "documentation": "Provides context to the mappings" + } + ] + }, + { + "type": "Condition", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Condition" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Condition:asserter", + "Condition:context", + "Condition:encounter", + "Condition:evidence-detail", + "Condition:patient", + "Condition:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "onset-info", + "type": "string", + "documentation": "Onsets as a string" + }, + { + "name": "code", + "type": "token", + "documentation": "Code for the condition" + }, + { + "name": "evidence", + "type": "token", + "documentation": "Manifestation/symptom" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Who has the condition?" + }, + { + "name": "verification-status", + "type": "token", + "documentation": "provisional | differential | confirmed | refuted | entered-in-error | unknown" + }, + { + "name": "clinical-status", + "type": "token", + "documentation": "The clinical status of the condition" + }, + { + "name": "onset-date", + "type": "date", + "documentation": "Date related onsets (dateTime and Period)" + }, + { + "name": "abatement-date", + "type": "date", + "documentation": "Date-related abatements (dateTime and period)" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Who has the condition?" + }, + { + "name": "context", + "type": "reference", + "documentation": "Encounter or episode when condition first asserted" + }, + { + "name": "abatement-age", + "type": "quantity", + "documentation": "Abatement as age or age range" + }, + { + "name": "asserted-date", + "type": "date", + "documentation": "Date record was believed accurate" + }, + { + "name": "evidence-detail", + "type": "reference", + "documentation": "Supporting information found elsewhere" + }, + { + "name": "severity", + "type": "token", + "documentation": "The severity of the condition" + }, + { + "name": "identifier", + "type": "token", + "documentation": "A unique identifier of the condition record" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "Encounter when condition first asserted" + }, + { + "name": "abatement-boolean", + "type": "token", + "documentation": "Abatement boolean (boolean is true or non-boolean values are present)" + }, + { + "name": "asserter", + "type": "reference", + "documentation": "Person who asserts this condition" + }, + { + "name": "stage", + "type": "token", + "documentation": "Simple summary (disease specific)" + }, + { + "name": "abatement-string", + "type": "string", + "documentation": "Abatement as a string" + }, + { + "name": "onset-age", + "type": "quantity", + "documentation": "Onsets as age or age range" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "body-site", + "type": "token", + "documentation": "Anatomical location, if relevant" + }, + { + "name": "category", + "type": "token", + "documentation": "The category of the condition" + } + ] + }, + { + "type": "Consent", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Consent" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Consent:actor", + "Consent:consentor", + "Consent:data", + "Consent:organization", + "Consent:patient", + "Consent:source" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "When this Consent was created or indexed" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Identifier for this record (external references)" + }, + { + "name": "securitylabel", + "type": "token", + "documentation": "Security Labels that define affected resources" + }, + { + "name": "period", + "type": "date", + "documentation": "Period that this consent applies" + }, + { + "name": "data", + "type": "reference", + "documentation": "The actual data reference" + }, + { + "name": "purpose", + "type": "token", + "documentation": "Context of activities for which the agreement is made" + }, + { + "name": "source", + "type": "reference", + "documentation": "Source from which this consent is taken" + }, + { + "name": "actor", + "type": "reference", + "documentation": "Resource for the actor (or group, by role)" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Who the consent applies to" + }, + { + "name": "organization", + "type": "reference", + "documentation": "Custodian of the consent" + }, + { + "name": "action", + "type": "token", + "documentation": "Actions controlled by this consent" + }, + { + "name": "consentor", + "type": "reference", + "documentation": "Who is agreeing to the policy and exceptions" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "category", + "type": "token", + "documentation": "Classification of the consent statement - for indexing/retrieval" + }, + { + "name": "status", + "type": "token", + "documentation": "draft | proposed | active | rejected | inactive | entered-in-error" + } + ] + }, + { + "type": "Contract", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Contract" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Contract:agent", + "Contract:authority", + "Contract:domain", + "Contract:patient", + "Contract:signer", + "Contract:subject", + "Contract:term-topic" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The identity of the contract" + }, + { + "name": "agent", + "type": "reference", + "documentation": "Agent to the Contact" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The identity of the subject of the contract (if a patient)" + }, + { + "name": "subject", + "type": "reference", + "documentation": "The identity of the subject of the contract" + }, + { + "name": "authority", + "type": "reference", + "documentation": "The authority of the contract" + }, + { + "name": "domain", + "type": "reference", + "documentation": "The domain of the contract" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "term-topic", + "type": "reference", + "documentation": "The identity of the topic of the contract terms" + }, + { + "name": "issued", + "type": "date", + "documentation": "The date/time the contract was issued" + }, + { + "name": "signer", + "type": "reference", + "documentation": "Contract Signatory Party" + } + ] + }, + { + "type": "Coverage", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Coverage" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Coverage:beneficiary", + "Coverage:payor", + "Coverage:policy-holder", + "Coverage:subscriber" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The primary identifier of the insured and the coverage" + }, + { + "name": "subgroup", + "type": "string", + "documentation": "Sub-group identifier" + }, + { + "name": "subscriber", + "type": "reference", + "documentation": "Reference to the subscriber" + }, + { + "name": "subplan", + "type": "string", + "documentation": "Sub-plan identifier" + }, + { + "name": "type", + "type": "token", + "documentation": "The kind of coverage (health plan, auto, Workers Compensation)" + }, + { + "name": "sequence", + "type": "string", + "documentation": "Sequence number" + }, + { + "name": "payor", + "type": "reference", + "documentation": "The identity of the insurer or party paying for services" + }, + { + "name": "beneficiary", + "type": "reference", + "documentation": "Covered party" + }, + { + "name": "subclass", + "type": "string", + "documentation": "Sub-class identifier" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "class", + "type": "string", + "documentation": "Class identifier" + }, + { + "name": "dependent", + "type": "string", + "documentation": "Dependent number" + }, + { + "name": "plan", + "type": "string", + "documentation": "A plan or policy identifier" + }, + { + "name": "group", + "type": "string", + "documentation": "Group identifier" + }, + { + "name": "policy-holder", + "type": "reference", + "documentation": "Reference to the policyholder" + } + ] + }, + { + "type": "DataElement", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/DataElement" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The data element publication date" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifier for the data element" + }, + { + "name": "code", + "type": "token", + "documentation": "A code for the data element (server may choose to do subsumption)" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the data element" + }, + { + "name": "description", + "type": "string", + "documentation": "Text search in the description of the data element. This corresponds to the definition of the first DataElement.element." + }, + { + "name": "title", + "type": "string", + "documentation": "The human-friendly name of the data element" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the data element" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the data element" + }, + { + "name": "stringency", + "type": "token", + "documentation": "The stringency of the data element definition" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the data element" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the data element" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the data element" + } + ] + }, + { + "type": "DetectedIssue", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/DetectedIssue" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "DetectedIssue:author", + "DetectedIssue:implicated", + "DetectedIssue:patient" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "When identified" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Unique id for the detected issue" + }, + { + "name": "author", + "type": "reference", + "documentation": "The provider or device that identified the issue" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Associated patient" + }, + { + "name": "implicated", + "type": "reference", + "documentation": "Problem resource" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "category", + "type": "token", + "documentation": "Issue Category, e.g. drug-drug, duplicate therapy, etc." + } + ] + }, + { + "type": "Device", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Device" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Device:location", + "Device:organization", + "Device:patient" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "udi-di", + "type": "string", + "documentation": "The udi Device Identifier (DI)" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Instance id from manufacturer, owner, and others" + }, + { + "name": "udi-carrier", + "type": "string", + "documentation": "UDI Barcode (RFID or other technology) string either in HRF format or AIDC format converted to base64 string." + }, + { + "name": "device-name", + "type": "string", + "documentation": "A server defined search that may match any of the string fields in the Device.udi.name or Device.type.coding.display or Device.type.text" + }, + { + "name": "type", + "type": "token", + "documentation": "The type of the device" + }, + { + "name": "url", + "type": "uri", + "documentation": "Network address to contact device" + }, + { + "name": "manufacturer", + "type": "string", + "documentation": "The manufacturer of the device" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Patient information, if the resource is affixed to a person" + }, + { + "name": "organization", + "type": "reference", + "documentation": "The organization responsible for the device" + }, + { + "name": "location", + "type": "reference", + "documentation": "A location, where the resource is found" + }, + { + "name": "model", + "type": "string", + "documentation": "The model of the device" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "active | inactive | entered-in-error | unknown" + } + ] + }, + { + "type": "DeviceComponent", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/DeviceComponent" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "DeviceComponent:parent", + "DeviceComponent:source" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The identifier of the component" + }, + { + "name": "parent", + "type": "reference", + "documentation": "The parent DeviceComponent resource" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "source", + "type": "reference", + "documentation": "The device source" + }, + { + "name": "type", + "type": "token", + "documentation": "The device component type" + } + ] + }, + { + "type": "DeviceMetric", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/DeviceMetric" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "DeviceMetric:parent", + "DeviceMetric:source" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The identifier of the metric" + }, + { + "name": "parent", + "type": "reference", + "documentation": "The parent DeviceMetric resource" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "source", + "type": "reference", + "documentation": "The device resource" + }, + { + "name": "category", + "type": "token", + "documentation": "The category of the metric" + }, + { + "name": "type", + "type": "token", + "documentation": "The component type" + } + ] + }, + { + "type": "DeviceRequest", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/DeviceRequest" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "DeviceRequest:based-on", + "DeviceRequest:definition", + "DeviceRequest:device", + "DeviceRequest:encounter", + "DeviceRequest:patient", + "DeviceRequest:performer", + "DeviceRequest:priorrequest", + "DeviceRequest:requester", + "DeviceRequest:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "requester", + "type": "reference", + "documentation": "Who/what is requesting service " + }, + { + "name": "identifier", + "type": "token", + "documentation": "Business identifier for request/order" + }, + { + "name": "code", + "type": "token", + "documentation": "Code for what is being requested/ordered" + }, + { + "name": "performer", + "type": "reference", + "documentation": "Desired performer for service" + }, + { + "name": "event-date", + "type": "date", + "documentation": "When service should occur" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Individual the service is ordered for" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "Encounter or Episode during which request was created" + }, + { + "name": "authored-on", + "type": "date", + "documentation": "When the request transitioned to being actionable" + }, + { + "name": "intent", + "type": "token", + "documentation": "proposal | plan | original-order |reflex-order" + }, + { + "name": "group-identifier", + "type": "token", + "documentation": "Composite request this is part of" + }, + { + "name": "based-on", + "type": "reference", + "documentation": "Plan/proposal/order fulfilled by this request" + }, + { + "name": "priorrequest", + "type": "reference", + "documentation": "Request takes the place of referenced completed or terminated requests" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Individual the service is ordered for" + }, + { + "name": "definition", + "type": "reference", + "documentation": "Protocol or definition followed by this request" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "device", + "type": "reference", + "documentation": "Reference to resource that is being requested/ordered" + }, + { + "name": "status", + "type": "token", + "documentation": "entered-in-error | draft | active |suspended | completed " + } + ] + }, + { + "type": "DeviceUseStatement", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/DeviceUseStatement" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "DeviceUseStatement:device", + "DeviceUseStatement:patient", + "DeviceUseStatement:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Search by identifier" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Search by subject - a patient" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Search by subject" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "device", + "type": "reference", + "documentation": "Search by device" + } + ] + }, + { + "type": "DiagnosticReport", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/DiagnosticReport" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "DiagnosticReport:based-on", + "DiagnosticReport:context", + "DiagnosticReport:encounter", + "DiagnosticReport:image", + "DiagnosticReport:patient", + "DiagnosticReport:performer", + "DiagnosticReport:result", + "DiagnosticReport:specimen", + "DiagnosticReport:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The clinically relevant time of the report" + }, + { + "name": "identifier", + "type": "token", + "documentation": "An identifier for the report" + }, + { + "name": "image", + "type": "reference", + "documentation": "A reference to the image source." + }, + { + "name": "code", + "type": "token", + "documentation": "The code for the report as a whole, as opposed to codes for the atomic results, which are the names on the observation resource referred to from the result" + }, + { + "name": "performer", + "type": "reference", + "documentation": "Who was the source of the report (organization)" + }, + { + "name": "subject", + "type": "reference", + "documentation": "The subject of the report" + }, + { + "name": "diagnosis", + "type": "token", + "documentation": "A coded diagnosis on the report" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "The Encounter when the order was made" + }, + { + "name": "result", + "type": "reference", + "documentation": "Link to an atomic result (observation resource)" + }, + { + "name": "based-on", + "type": "reference", + "documentation": "Reference to the procedure request." + }, + { + "name": "patient", + "type": "reference", + "documentation": "The subject of the report if a patient" + }, + { + "name": "specimen", + "type": "reference", + "documentation": "The specimen details" + }, + { + "name": "context", + "type": "reference", + "documentation": "Healthcare event (Episode of Care or Encounter) related to the report" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "category", + "type": "token", + "documentation": "Which diagnostic discipline/department created the report" + }, + { + "name": "issued", + "type": "date", + "documentation": "When the report was issued" + }, + { + "name": "status", + "type": "token", + "documentation": "The status of the report" + } + ] + }, + { + "type": "DocumentManifest", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/DocumentManifest" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "DocumentManifest:author", + "DocumentManifest:content-ref", + "DocumentManifest:patient", + "DocumentManifest:recipient", + "DocumentManifest:related-ref", + "DocumentManifest:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Unique Identifier for the set of documents" + }, + { + "name": "related-id", + "type": "token", + "documentation": "Identifiers of things that are related" + }, + { + "name": "content-ref", + "type": "reference", + "documentation": "Contents of this set of documents" + }, + { + "name": "author", + "type": "reference", + "documentation": "Who and/or what authored the manifest" + }, + { + "name": "created", + "type": "date", + "documentation": "When this document manifest created" + }, + { + "name": "subject", + "type": "reference", + "documentation": "The subject of the set of documents" + }, + { + "name": "description", + "type": "string", + "documentation": "Human-readable description (title)" + }, + { + "name": "source", + "type": "uri", + "documentation": "The source system/application/software" + }, + { + "name": "type", + "type": "token", + "documentation": "Kind of document set" + }, + { + "name": "related-ref", + "type": "reference", + "documentation": "Related Resource" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The subject of the set of documents" + }, + { + "name": "recipient", + "type": "reference", + "documentation": "Intended to get notified about this set of documents" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "current | superseded | entered-in-error" + } + ] + }, + { + "type": "DocumentReference", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/DocumentReference" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "DocumentReference:authenticator", + "DocumentReference:author", + "DocumentReference:custodian", + "DocumentReference:encounter", + "DocumentReference:patient", + "DocumentReference:related-ref", + "DocumentReference:relatesto", + "DocumentReference:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "securitylabel", + "type": "token", + "documentation": "Document security-tags" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Who/what is the subject of the document" + }, + { + "name": "description", + "type": "string", + "documentation": "Human-readable description (title)" + }, + { + "name": "language", + "type": "token", + "documentation": "Human language of the content (BCP-47)" + }, + { + "name": "type", + "type": "token", + "documentation": "Kind of document (LOINC if possible)" + }, + { + "name": "relation", + "type": "token", + "documentation": "replaces | transforms | signs | appends" + }, + { + "name": "setting", + "type": "token", + "documentation": "Additional details about where the content was created (e.g. clinical specialty)" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Who/what is the subject of the document" + }, + { + "name": "event", + "type": "token", + "documentation": "Main clinical acts documented" + }, + { + "name": "relationship", + "type": "composite", + "documentation": "Combination of relation and relatesTo" + }, + { + "name": "authenticator", + "type": "reference", + "documentation": "Who/what authenticated the document" + }, + { + "name": "class", + "type": "token", + "documentation": "Categorization of document" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Master Version Specific Identifier" + }, + { + "name": "period", + "type": "date", + "documentation": "Time of service that is being documented" + }, + { + "name": "related-id", + "type": "token", + "documentation": "Identifier of related objects or events" + }, + { + "name": "custodian", + "type": "reference", + "documentation": "Organization which maintains the document" + }, + { + "name": "indexed", + "type": "date", + "documentation": "When this document reference was created" + }, + { + "name": "author", + "type": "reference", + "documentation": "Who and/or what authored the document" + }, + { + "name": "created", + "type": "date", + "documentation": "Document creation time" + }, + { + "name": "format", + "type": "token", + "documentation": "Format/content rules for the document" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "Context of the document content" + }, + { + "name": "related-ref", + "type": "reference", + "documentation": "Related Resource" + }, + { + "name": "location", + "type": "uri", + "documentation": "Uri where the data can be found" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "relatesto", + "type": "reference", + "documentation": "Target of the relationship" + }, + { + "name": "facility", + "type": "token", + "documentation": "Kind of facility where patient was seen" + }, + { + "name": "status", + "type": "token", + "documentation": "current | superseded | entered-in-error" + } + ] + }, + { + "type": "EligibilityRequest", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/EligibilityRequest" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "EligibilityRequest:enterer", + "EligibilityRequest:facility", + "EligibilityRequest:organization", + "EligibilityRequest:patient", + "EligibilityRequest:provider" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The business identifier of the Eligibility" + }, + { + "name": "provider", + "type": "reference", + "documentation": "The reference to the provider" + }, + { + "name": "created", + "type": "date", + "documentation": "The creation date for the EOB" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The reference to the patient" + }, + { + "name": "organization", + "type": "reference", + "documentation": "The reference to the providing organization" + }, + { + "name": "enterer", + "type": "reference", + "documentation": "The party who is responsible for the request" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "facility", + "type": "reference", + "documentation": "Facility responsible for the goods and services" + } + ] + }, + { + "type": "EligibilityResponse", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/EligibilityResponse" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "EligibilityResponse:insurer", + "EligibilityResponse:request", + "EligibilityResponse:request-organization", + "EligibilityResponse:request-provider" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The business identifier" + }, + { + "name": "request", + "type": "reference", + "documentation": "The EligibilityRequest reference" + }, + { + "name": "disposition", + "type": "string", + "documentation": "The contents of the disposition message" + }, + { + "name": "created", + "type": "date", + "documentation": "The creation date" + }, + { + "name": "insurer", + "type": "reference", + "documentation": "The organization which generated this resource" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "request-organization", + "type": "reference", + "documentation": "The EligibilityRequest organization" + }, + { + "name": "request-provider", + "type": "reference", + "documentation": "The EligibilityRequest provider" + }, + { + "name": "outcome", + "type": "token", + "documentation": "The processing outcome" + } + ] + }, + { + "type": "Encounter", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Encounter" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Encounter:appointment", + "Encounter:diagnosis", + "Encounter:episodeofcare", + "Encounter:incomingreferral", + "Encounter:location", + "Encounter:part-of", + "Encounter:participant", + "Encounter:patient", + "Encounter:practitioner", + "Encounter:service-provider", + "Encounter:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "A date within the period the Encounter lasted" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Identifier(s) by which this encounter is known" + }, + { + "name": "reason", + "type": "token", + "documentation": "Reason the encounter takes place (code)" + }, + { + "name": "episodeofcare", + "type": "reference", + "documentation": "Episode(s) of care that this encounter should be recorded against" + }, + { + "name": "participant-type", + "type": "token", + "documentation": "Role of participant in encounter" + }, + { + "name": "incomingreferral", + "type": "reference", + "documentation": "The ReferralRequest that initiated this encounter" + }, + { + "name": "practitioner", + "type": "reference", + "documentation": "Persons involved in the encounter other than the patient" + }, + { + "name": "subject", + "type": "reference", + "documentation": "The patient ro group present at the encounter" + }, + { + "name": "length", + "type": "number", + "documentation": "Length of encounter in days" + }, + { + "name": "diagnosis", + "type": "reference", + "documentation": "Reason the encounter takes place (resource)" + }, + { + "name": "appointment", + "type": "reference", + "documentation": "The appointment that scheduled this encounter" + }, + { + "name": "part-of", + "type": "reference", + "documentation": "Another Encounter this encounter is part of" + }, + { + "name": "type", + "type": "token", + "documentation": "Specific type of encounter" + }, + { + "name": "participant", + "type": "reference", + "documentation": "Persons involved in the encounter other than the patient" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The patient ro group present at the encounter" + }, + { + "name": "location-period", + "type": "date", + "documentation": "Time period during which the patient was present at the location" + }, + { + "name": "location", + "type": "reference", + "documentation": "Location the encounter takes place" + }, + { + "name": "service-provider", + "type": "reference", + "documentation": "The custodian organization of this Encounter record" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "special-arrangement", + "type": "token", + "documentation": "Wheelchair, translator, stretcher, etc." + }, + { + "name": "class", + "type": "token", + "documentation": "inpatient | outpatient | ambulatory | emergency +" + }, + { + "name": "status", + "type": "token", + "documentation": "planned | arrived | triaged | in-progress | onleave | finished | cancelled +" + } + ] + }, + { + "type": "Endpoint", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Endpoint" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Endpoint:organization" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "payload-type", + "type": "token", + "documentation": "The type of content that may be used at this endpoint (e.g. XDS Discharge summaries)" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Identifies this endpoint across multiple systems" + }, + { + "name": "connection-type", + "type": "token", + "documentation": "Protocol/Profile/Standard to be used with this endpoint connection" + }, + { + "name": "organization", + "type": "reference", + "documentation": "The organization that is managing the endpoint" + }, + { + "name": "name", + "type": "string", + "documentation": "A name that this endpoint can be identified by" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the Endpoint (usually expected to be active)" + } + ] + }, + { + "type": "EnrollmentRequest", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/EnrollmentRequest" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "EnrollmentRequest:organization", + "EnrollmentRequest:patient", + "EnrollmentRequest:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The business identifier of the Enrollment" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The party to be enrolled" + }, + { + "name": "subject", + "type": "reference", + "documentation": "The party to be enrolled" + }, + { + "name": "organization", + "type": "reference", + "documentation": "The organization who generated this resource" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + } + ] + }, + { + "type": "EnrollmentResponse", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/EnrollmentResponse" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "EnrollmentResponse:organization", + "EnrollmentResponse:request" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The business identifier of the EnrollmentResponse" + }, + { + "name": "request", + "type": "reference", + "documentation": "The reference to the claim" + }, + { + "name": "organization", + "type": "reference", + "documentation": "The organization who generated this resource" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + } + ] + }, + { + "type": "EpisodeOfCare", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/EpisodeOfCare" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "EpisodeOfCare:care-manager", + "EpisodeOfCare:condition", + "EpisodeOfCare:incomingreferral", + "EpisodeOfCare:organization", + "EpisodeOfCare:patient" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The provided date search value falls within the episode of care's period" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Business Identifier(s) relevant for this EpisodeOfCare" + }, + { + "name": "condition", + "type": "reference", + "documentation": "Conditions/problems/diagnoses this episode of care is for" + }, + { + "name": "incomingreferral", + "type": "reference", + "documentation": "Incoming Referral Request" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The patient who is the focus of this episode of care" + }, + { + "name": "organization", + "type": "reference", + "documentation": "The organization that has assumed the specific responsibilities of this EpisodeOfCare" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "type", + "type": "token", + "documentation": "Type/class - e.g. specialist referral, disease management" + }, + { + "name": "care-manager", + "type": "reference", + "documentation": "Care manager/care co-ordinator for the patient" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the Episode of Care as provided (does not check the status history collection)" + } + ] + }, + { + "type": "ExpansionProfile", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ExpansionProfile" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The expansion profile publication date" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifier for the expansion profile" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the expansion profile" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the expansion profile" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the expansion profile" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the expansion profile" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the expansion profile" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the expansion profile" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the expansion profile" + } + ] + }, + { + "type": "ExplanationOfBenefit", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ExplanationOfBenefit" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "ExplanationOfBenefit:care-team", + "ExplanationOfBenefit:claim", + "ExplanationOfBenefit:coverage", + "ExplanationOfBenefit:encounter", + "ExplanationOfBenefit:enterer", + "ExplanationOfBenefit:facility", + "ExplanationOfBenefit:organization", + "ExplanationOfBenefit:patient", + "ExplanationOfBenefit:payee", + "ExplanationOfBenefit:provider" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "care-team", + "type": "reference", + "documentation": "Member of the CareTeam" + }, + { + "name": "coverage", + "type": "reference", + "documentation": "The plan under which the claim was adjudicated" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The business identifier of the Explanation of Benefit" + }, + { + "name": "created", + "type": "date", + "documentation": "The creation date for the EOB" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "Encounters associated with a billed line item" + }, + { + "name": "payee", + "type": "reference", + "documentation": "The party receiving any payment for the Claim" + }, + { + "name": "disposition", + "type": "string", + "documentation": "The contents of the disposition message" + }, + { + "name": "provider", + "type": "reference", + "documentation": "The reference to the provider" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The reference to the patient" + }, + { + "name": "organization", + "type": "reference", + "documentation": "The reference to the providing organization" + }, + { + "name": "claim", + "type": "reference", + "documentation": "The reference to the claim" + }, + { + "name": "enterer", + "type": "reference", + "documentation": "The party responsible for the entry of the Claim" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "facility", + "type": "reference", + "documentation": "Facility responsible for the goods and services" + } + ] + }, + { + "type": "FamilyMemberHistory", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/FamilyMemberHistory" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "FamilyMemberHistory:definition", + "FamilyMemberHistory:patient" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "When history was captured/updated" + }, + { + "name": "identifier", + "type": "token", + "documentation": "A search by a record identifier" + }, + { + "name": "code", + "type": "token", + "documentation": "A search by a condition code" + }, + { + "name": "gender", + "type": "token", + "documentation": "A search by a gender code of a family member" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The identity of a subject to list family member history items for" + }, + { + "name": "definition", + "type": "reference", + "documentation": "Instantiates protocol or definition" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "relationship", + "type": "token", + "documentation": "A search by a relationship type" + }, + { + "name": "status", + "type": "token", + "documentation": "partial | completed | entered-in-error | health-unknown" + } + ] + }, + { + "type": "Flag", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Flag" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Flag:author", + "Flag:encounter", + "Flag:patient", + "Flag:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "Time period when flag is active" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Business identifier" + }, + { + "name": "author", + "type": "reference", + "documentation": "Flag creator" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The identity of a subject to list flags for" + }, + { + "name": "subject", + "type": "reference", + "documentation": "The identity of a subject to list flags for" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "Alert relevant during encounter" + } + ] + }, + { + "type": "Goal", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Goal" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Goal:patient", + "Goal:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External Ids for this goal" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Who this goal is intended for" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Who this goal is intended for" + }, + { + "name": "start-date", + "type": "date", + "documentation": "When goal pursuit begins" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "category", + "type": "token", + "documentation": "E.g. Treatment, dietary, behavioral, etc." + }, + { + "name": "target-date", + "type": "date", + "documentation": "Reach goal on or before" + }, + { + "name": "status", + "type": "token", + "documentation": "proposed | accepted | planned | in-progress | on-target | ahead-of-target | behind-target | sustaining | achieved | on-hold | cancelled | entered-in-error | rejected" + } + ] + }, + { + "type": "GraphDefinition", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/GraphDefinition" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The graph definition publication date" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the graph definition" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the graph definition" + }, + { + "name": "start", + "type": "token", + "documentation": "Type of resource at which the graph starts" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the graph definition" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the graph definition" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the graph definition" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the graph definition" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the graph definition" + } + ] + }, + { + "type": "Group", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Group" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Group:member" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "actual", + "type": "token", + "documentation": "Descriptive or actual" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Unique id" + }, + { + "name": "characteristic-value", + "type": "composite", + "documentation": "A composite of both characteristic and value" + }, + { + "name": "code", + "type": "token", + "documentation": "The kind of resources contained" + }, + { + "name": "member", + "type": "reference", + "documentation": "Reference to the group member" + }, + { + "name": "exclude", + "type": "token", + "documentation": "Group includes or excludes" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "type", + "type": "token", + "documentation": "The type of resources the group contains" + }, + { + "name": "value", + "type": "token", + "documentation": "Value held by characteristic" + }, + { + "name": "characteristic", + "type": "token", + "documentation": "Kind of characteristic" + } + ] + }, + { + "type": "GuidanceResponse", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/GuidanceResponse" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "GuidanceResponse:patient", + "GuidanceResponse:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The identifier of the guidance response" + }, + { + "name": "request", + "type": "token", + "documentation": "The identifier of the request associated with the response" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The identity of a patient to search for guidance response results" + }, + { + "name": "subject", + "type": "reference", + "documentation": "The subject that the guidance response is about" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + } + ] + }, + { + "type": "HealthcareService", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/HealthcareService" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "HealthcareService:endpoint", + "HealthcareService:location", + "HealthcareService:organization" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifiers for this item" + }, + { + "name": "endpoint", + "type": "reference", + "documentation": "Technical endpoints providing access to services operated for the location" + }, + { + "name": "organization", + "type": "reference", + "documentation": "The organization that provides this Healthcare Service" + }, + { + "name": "name", + "type": "string", + "documentation": "A portion of the Healthcare service name" + }, + { + "name": "programname", + "type": "string", + "documentation": "One of the Program Names serviced by this HealthcareService" + }, + { + "name": "active", + "type": "token", + "documentation": "The Healthcare Service is currently marked as active" + }, + { + "name": "location", + "type": "reference", + "documentation": "The location of the Healthcare Service" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "category", + "type": "token", + "documentation": "Service Category of the Healthcare Service" + }, + { + "name": "type", + "type": "token", + "documentation": "The type of service provided by this healthcare service" + }, + { + "name": "characteristic", + "type": "token", + "documentation": "One of the HealthcareService's characteristics" + } + ] + }, + { + "type": "ImagingManifest", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ImagingManifest" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "ImagingManifest:author", + "ImagingManifest:endpoint", + "ImagingManifest:imaging-study", + "ImagingManifest:patient" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "UID of the ImagingManifest (or a DICOM Key Object Selection which it represents)" + }, + { + "name": "endpoint", + "type": "reference", + "documentation": "The endpoint for the study or series" + }, + { + "name": "authoring-time", + "type": "date", + "documentation": "Time of the ImagingManifest (or a DICOM Key Object Selection which it represents) authoring" + }, + { + "name": "selected-study", + "type": "uri", + "documentation": "Study selected in the ImagingManifest (or a DICOM Key Object Selection which it represents)" + }, + { + "name": "author", + "type": "reference", + "documentation": "Author of the ImagingManifest (or a DICOM Key Object Selection which it represents)" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Subject of the ImagingManifest (or a DICOM Key Object Selection which it represents)" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "imaging-study", + "type": "reference", + "documentation": "ImagingStudy resource selected in the ImagingManifest (or a DICOM Key Object Selection which it represents)" + } + ] + }, + { + "type": "ImagingStudy", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ImagingStudy" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "ImagingStudy:basedon", + "ImagingStudy:context", + "ImagingStudy:endpoint", + "ImagingStudy:patient", + "ImagingStudy:performer" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Other identifiers for the Study" + }, + { + "name": "reason", + "type": "token", + "documentation": "The reason for the study" + }, + { + "name": "dicom-class", + "type": "uri", + "documentation": "The type of the instance" + }, + { + "name": "study", + "type": "uri", + "documentation": "The study identifier for the image" + }, + { + "name": "bodysite", + "type": "token", + "documentation": "The body site studied" + }, + { + "name": "modality", + "type": "token", + "documentation": "The modality of the series" + }, + { + "name": "performer", + "type": "reference", + "documentation": "The person who performed the study" + }, + { + "name": "started", + "type": "date", + "documentation": "When the study was started" + }, + { + "name": "accession", + "type": "token", + "documentation": "The accession identifier for the study" + }, + { + "name": "uid", + "type": "uri", + "documentation": "The instance unique identifier" + }, + { + "name": "endpoint", + "type": "reference", + "documentation": "The endpoint for te study or series" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Who the study is about" + }, + { + "name": "series", + "type": "uri", + "documentation": "The identifier of the series of images" + }, + { + "name": "context", + "type": "reference", + "documentation": "The context of the study" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "basedon", + "type": "reference", + "documentation": "The order for the image" + } + ] + }, + { + "extension": [ + { + "url": "http://hl7api.sourceforge.net/hapi-fhir/res/extdefs.html#resourceCount", + "valueDecimal": 45 + } + ], + "type": "Immunization", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Immunization" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Immunization:location", + "Immunization:manufacturer", + "Immunization:patient", + "Immunization:practitioner", + "Immunization:reaction" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "Vaccination (non)-Administration Date" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Business identifier" + }, + { + "name": "reason", + "type": "token", + "documentation": "Why immunization occurred" + }, + { + "name": "reaction", + "type": "reference", + "documentation": "Additional information on reaction" + }, + { + "name": "lot-number", + "type": "string", + "documentation": "Vaccine Lot Number" + }, + { + "name": "practitioner", + "type": "reference", + "documentation": "The practitioner who played a role in the vaccination" + }, + { + "name": "notgiven", + "type": "token", + "documentation": "Administrations which were not given" + }, + { + "name": "manufacturer", + "type": "reference", + "documentation": "Vaccine Manufacturer" + }, + { + "name": "dose-sequence", + "type": "number", + "documentation": "Dose number within series" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The patient for the vaccination record" + }, + { + "name": "vaccine-code", + "type": "token", + "documentation": "Vaccine Product Administered" + }, + { + "name": "reason-not-given", + "type": "token", + "documentation": "Explanation of reason vaccination was not administered" + }, + { + "name": "location", + "type": "reference", + "documentation": "The service delivery location or facility in which the vaccine was / was to be administered" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "reaction-date", + "type": "date", + "documentation": "When reaction started" + }, + { + "name": "status", + "type": "token", + "documentation": "Immunization event status" + } + ] + }, + { + "type": "ImmunizationRecommendation", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ImmunizationRecommendation" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "ImmunizationRecommendation:information", + "ImmunizationRecommendation:patient", + "ImmunizationRecommendation:support" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "Date recommendation created" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Business identifier" + }, + { + "name": "dose-sequence", + "type": "number", + "documentation": "Dose number within sequence" + }, + { + "name": "target-disease", + "type": "token", + "documentation": "Disease to be immunized against" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Who this profile is for" + }, + { + "name": "vaccine-type", + "type": "token", + "documentation": "Vaccine recommendation applies to" + }, + { + "name": "dose-number", + "type": "number", + "documentation": "Recommended dose number" + }, + { + "name": "information", + "type": "reference", + "documentation": "Patient observations supporting recommendation" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "support", + "type": "reference", + "documentation": "Past immunizations supporting recommendation" + }, + { + "name": "status", + "type": "token", + "documentation": "Vaccine administration status" + } + ] + }, + { + "type": "ImplementationGuide", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ImplementationGuide" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "ImplementationGuide:resource" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The implementation guide publication date" + }, + { + "name": "dependency", + "type": "uri", + "documentation": "Where to find dependency" + }, + { + "name": "resource", + "type": "reference", + "documentation": "Location of the resource" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the implementation guide" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the implementation guide" + }, + { + "name": "experimental", + "type": "token", + "documentation": "For testing purposes, not real usage" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the implementation guide" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the implementation guide" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the implementation guide" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the implementation guide" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the implementation guide" + } + ] + }, + { + "type": "Library", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Library" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Library:composed-of", + "Library:depends-on", + "Library:derived-from", + "Library:predecessor", + "Library:successor" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The library publication date" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifier for the library" + }, + { + "name": "successor", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the library" + }, + { + "name": "derived-from", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the library" + }, + { + "name": "predecessor", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "composed-of", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "title", + "type": "string", + "documentation": "The human-friendly name of the library" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the library" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the library" + }, + { + "name": "depends-on", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "effective", + "type": "date", + "documentation": "The time during which the library is intended to be in use" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the library" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the library" + }, + { + "name": "topic", + "type": "token", + "documentation": "Topics associated with the module" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the library" + } + ] + }, + { + "type": "Linkage", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Linkage" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Linkage:author", + "Linkage:item", + "Linkage:source" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "item", + "type": "reference", + "documentation": "Matches on any item in the Linkage" + }, + { + "name": "author", + "type": "reference", + "documentation": "Author of the Linkage" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "source", + "type": "reference", + "documentation": "Matches on any item in the Linkage with a type of 'source'" + } + ] + }, + { + "type": "List", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ListResource" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "List:encounter", + "List:item", + "List:patient", + "List:source", + "List:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "When the list was prepared" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Business identifier" + }, + { + "name": "empty-reason", + "type": "token", + "documentation": "Why list is empty" + }, + { + "name": "item", + "type": "reference", + "documentation": "Actual entry" + }, + { + "name": "code", + "type": "token", + "documentation": "What the purpose of this list is" + }, + { + "name": "notes", + "type": "string", + "documentation": "The annotation - text content" + }, + { + "name": "subject", + "type": "reference", + "documentation": "If all resources have the same subject" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "Context in which list created" + }, + { + "name": "source", + "type": "reference", + "documentation": "Who and/or what defined the list contents (aka Author)" + }, + { + "name": "title", + "type": "string", + "documentation": "Descriptive name for the list" + }, + { + "name": "patient", + "type": "reference", + "documentation": "If all resources have the same subject" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "current | retired | entered-in-error" + } + ] + }, + { + "extension": [ + { + "url": "http://hl7api.sourceforge.net/hapi-fhir/res/extdefs.html#resourceCount", + "valueDecimal": 1 + } + ], + "type": "Location", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Location" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Location:endpoint", + "Location:organization", + "Location:partof" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "An identifier for the location" + }, + { + "name": "partof", + "type": "reference", + "documentation": "A location of which this location is a part" + }, + { + "name": "near-distance", + "type": "quantity", + "documentation": "A distance quantity to limit the near search to locations within a specific distance\n\nRequires the near parameter to also be included" + }, + { + "name": "address", + "type": "string", + "documentation": "A (part of the) address of the location" + }, + { + "name": "address-state", + "type": "string", + "documentation": "A state specified in an address" + }, + { + "name": "operational-status", + "type": "token", + "documentation": "Searches for locations (typically bed/room) that have an operational status (e.g. contaminated, housekeeping)" + }, + { + "name": "type", + "type": "token", + "documentation": "A code for the type of location" + }, + { + "name": "address-postalcode", + "type": "string", + "documentation": "A postal code specified in an address" + }, + { + "name": "address-country", + "type": "string", + "documentation": "A country specified in an address" + }, + { + "name": "endpoint", + "type": "reference", + "documentation": "Technical endpoints providing access to services operated for the location" + }, + { + "name": "organization", + "type": "reference", + "documentation": "Searches for locations that are managed by the provided organization" + }, + { + "name": "address-use", + "type": "token", + "documentation": "A use code specified in an address" + }, + { + "name": "name", + "type": "string", + "documentation": "A portion of the location's name or alias" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "near", + "type": "token", + "documentation": "The coordinates expressed as [latitude]:[longitude] (using the WGS84 datum, see notes) to find locations near to (servers may search using a square rather than a circle for efficiency)\n\nRequires the near-distance parameter to be provided also" + }, + { + "name": "address-city", + "type": "string", + "documentation": "A city specified in an address" + }, + { + "name": "status", + "type": "token", + "documentation": "Searches for locations with a specific kind of status" + } + ] + }, + { + "type": "Measure", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Measure" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Measure:composed-of", + "Measure:depends-on", + "Measure:derived-from", + "Measure:predecessor", + "Measure:successor" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The measure publication date" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifier for the measure" + }, + { + "name": "successor", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the measure" + }, + { + "name": "derived-from", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the measure" + }, + { + "name": "predecessor", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "composed-of", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "title", + "type": "string", + "documentation": "The human-friendly name of the measure" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the measure" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the measure" + }, + { + "name": "depends-on", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "effective", + "type": "date", + "documentation": "The time during which the measure is intended to be in use" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the measure" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the measure" + }, + { + "name": "topic", + "type": "token", + "documentation": "Topics associated with the module" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the measure" + } + ] + }, + { + "type": "MeasureReport", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/MeasureReport" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "MeasureReport:patient" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifier of the measure report to be returned" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The identity of a patient to search for individual measure report results for" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "The status of the measure report" + } + ] + }, + { + "type": "Media", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Media" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Media:based-on", + "Media:context", + "Media:device", + "Media:operator", + "Media:patient", + "Media:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "When Media was collected" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Identifier(s) for the image" + }, + { + "name": "created", + "type": "date", + "documentation": "Date attachment was first created" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Who/What this Media is a record of" + }, + { + "name": "type", + "type": "token", + "documentation": "photo | video | audio" + }, + { + "name": "operator", + "type": "reference", + "documentation": "The person who generated the image" + }, + { + "name": "site", + "type": "token", + "documentation": "Body part in media" + }, + { + "name": "view", + "type": "token", + "documentation": "Imaging view, e.g. Lateral or Antero-posterior" + }, + { + "name": "based-on", + "type": "reference", + "documentation": "Procedure that caused this media to be created" + }, + { + "name": "subtype", + "type": "token", + "documentation": "The type of acquisition equipment/process" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Who/What this Media is a record of" + }, + { + "name": "context", + "type": "reference", + "documentation": "Encounter / Episode associated with media" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "device", + "type": "reference", + "documentation": "Observing Device" + } + ] + }, + { + "type": "Medication", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Medication" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Medication:ingredient", + "Medication:manufacturer", + "Medication:package-item" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "container", + "type": "token", + "documentation": "E.g. box, vial, blister-pack" + }, + { + "name": "ingredient-code", + "type": "token", + "documentation": "The product contained" + }, + { + "name": "package-item", + "type": "reference", + "documentation": "The item in the package" + }, + { + "name": "code", + "type": "token", + "documentation": "Codes that identify this medication" + }, + { + "name": "ingredient", + "type": "reference", + "documentation": "The product contained" + }, + { + "name": "form", + "type": "token", + "documentation": "powder | tablets | capsule +" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "package-item-code", + "type": "token", + "documentation": "The item in the package" + }, + { + "name": "manufacturer", + "type": "reference", + "documentation": "Manufacturer of the item" + }, + { + "name": "over-the-counter", + "type": "token", + "documentation": "True if medication does not require a prescription" + }, + { + "name": "status", + "type": "token", + "documentation": "active | inactive | entered-in-error" + } + ] + }, + { + "type": "MedicationAdministration", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/MedicationAdministration" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "MedicationAdministration:context", + "MedicationAdministration:device", + "MedicationAdministration:medication", + "MedicationAdministration:patient", + "MedicationAdministration:performer", + "MedicationAdministration:prescription", + "MedicationAdministration:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Return administrations with this external identifier" + }, + { + "name": "code", + "type": "token", + "documentation": "Return administrations of this medication code" + }, + { + "name": "performer", + "type": "reference", + "documentation": "The identify of the individual who administered the medication" + }, + { + "name": "subject", + "type": "reference", + "documentation": "The identify of the individual or group to list administrations for" + }, + { + "name": "not-given", + "type": "token", + "documentation": "Administrations that were not made" + }, + { + "name": "medication", + "type": "reference", + "documentation": "Return administrations of this medication resource" + }, + { + "name": "reason-given", + "type": "token", + "documentation": "Reasons for administering the medication" + }, + { + "name": "prescription", + "type": "reference", + "documentation": "The identity of a prescription to list administrations from" + }, + { + "name": "effective-time", + "type": "date", + "documentation": "Date administration happened (or did not happen)" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The identity of a patient to list administrations for" + }, + { + "name": "context", + "type": "reference", + "documentation": "Return administrations that share this encounter or episode of care" + }, + { + "name": "reason-not-given", + "type": "token", + "documentation": "Reasons for not administering the medication" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "device", + "type": "reference", + "documentation": "Return administrations with this administration device identity" + }, + { + "name": "status", + "type": "token", + "documentation": "MedicationAdministration event status (for example one of active/paused/completed/nullified)" + } + ] + }, + { + "type": "MedicationDispense", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/MedicationDispense" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "MedicationDispense:context", + "MedicationDispense:destination", + "MedicationDispense:medication", + "MedicationDispense:patient", + "MedicationDispense:performer", + "MedicationDispense:prescription", + "MedicationDispense:receiver", + "MedicationDispense:responsibleparty", + "MedicationDispense:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Return dispenses with this external identifier" + }, + { + "name": "code", + "type": "token", + "documentation": "Return dispenses of this medicine code" + }, + { + "name": "performer", + "type": "reference", + "documentation": "Return dispenses performed by a specific individual" + }, + { + "name": "receiver", + "type": "reference", + "documentation": "The identity of a receiver to list dispenses for" + }, + { + "name": "subject", + "type": "reference", + "documentation": "The identity of a patient to list dispenses for" + }, + { + "name": "destination", + "type": "reference", + "documentation": "Return dispenses that should be sent to a specific destination" + }, + { + "name": "medication", + "type": "reference", + "documentation": "Return dispenses of this medicine resource" + }, + { + "name": "responsibleparty", + "type": "reference", + "documentation": "Return dispenses with the specified responsible party" + }, + { + "name": "type", + "type": "token", + "documentation": "Return dispenses of a specific type" + }, + { + "name": "whenhandedover", + "type": "date", + "documentation": "Returns dispenses handed over on this date" + }, + { + "name": "whenprepared", + "type": "date", + "documentation": "Returns dispenses prepared on this date" + }, + { + "name": "prescription", + "type": "reference", + "documentation": "The identity of a prescription to list dispenses from" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The identity of a patient to list dispenses for" + }, + { + "name": "context", + "type": "reference", + "documentation": "Returns dispenses with a specific context (episode or episode of care)" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "Return dispenses with a specified dispense status" + } + ] + }, + { + "type": "MedicationRequest", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/MedicationRequest" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "MedicationRequest:context", + "MedicationRequest:intended-dispenser", + "MedicationRequest:medication", + "MedicationRequest:patient", + "MedicationRequest:requester", + "MedicationRequest:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "Returns medication request to be administered on a specific date" + }, + { + "name": "requester", + "type": "reference", + "documentation": "Returns prescriptions prescribed by this prescriber" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Return prescriptions with this external identifier" + }, + { + "name": "intended-dispenser", + "type": "reference", + "documentation": "Returns prescriptions intended to be dispensed by this Organization" + }, + { + "name": "authoredon", + "type": "date", + "documentation": "Return prescriptions written on this date" + }, + { + "name": "code", + "type": "token", + "documentation": "Return prescriptions of this medication code" + }, + { + "name": "subject", + "type": "reference", + "documentation": "The identity of a patient to list orders for" + }, + { + "name": "medication", + "type": "reference", + "documentation": "Return prescriptions of this medication reference" + }, + { + "name": "priority", + "type": "token", + "documentation": "Returns prescriptions with different priorities" + }, + { + "name": "intent", + "type": "token", + "documentation": "Returns prescriptions with different intents" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Returns prescriptions for a specific patient" + }, + { + "name": "context", + "type": "reference", + "documentation": "Return prescriptions with this encounter or episode of care identifier" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "category", + "type": "token", + "documentation": "Returns prescriptions with different categories" + }, + { + "name": "status", + "type": "token", + "documentation": "Status of the prescription" + } + ] + }, + { + "type": "MedicationStatement", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/MedicationStatement" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "MedicationStatement:context", + "MedicationStatement:medication", + "MedicationStatement:part-of", + "MedicationStatement:patient", + "MedicationStatement:source", + "MedicationStatement:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Return statements with this external identifier" + }, + { + "name": "code", + "type": "token", + "documentation": "Return statements of this medication code" + }, + { + "name": "subject", + "type": "reference", + "documentation": "The identity of a patient, animal or group to list statements for" + }, + { + "name": "medication", + "type": "reference", + "documentation": "Return statements of this medication reference" + }, + { + "name": "part-of", + "type": "reference", + "documentation": "Returns statements that are part of another event." + }, + { + "name": "source", + "type": "reference", + "documentation": "Who or where the information in the statement came from" + }, + { + "name": "effective", + "type": "date", + "documentation": "Date when patient was taking (or not taking) the medication" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Returns statements for a specific patient." + }, + { + "name": "context", + "type": "reference", + "documentation": "Returns statements for a specific context (episode or episode of Care)." + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "category", + "type": "token", + "documentation": "Returns statements of this category of medicationstatement" + }, + { + "name": "status", + "type": "token", + "documentation": "Return statements that match the given status" + } + ] + }, + { + "type": "MessageDefinition", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/MessageDefinition" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The message definition publication date" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifier for the message definition" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the message definition" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the message definition" + }, + { + "name": "focus", + "type": "token", + "documentation": "A resource that is a permitted focus of the message" + }, + { + "name": "title", + "type": "string", + "documentation": "The human-friendly name of the message definition" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the message definition" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the message definition" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the message definition" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the message definition" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "category", + "type": "token", + "documentation": "The behavior associated with the message" + }, + { + "name": "event", + "type": "token", + "documentation": "The event that triggers the message" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the message definition" + } + ] + }, + { + "type": "MessageHeader", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/MessageHeader" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "MessageHeader:author", + "MessageHeader:enterer", + "MessageHeader:focus", + "MessageHeader:receiver", + "MessageHeader:responsible", + "MessageHeader:sender", + "MessageHeader:target" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "code", + "type": "token", + "documentation": "ok | transient-error | fatal-error" + }, + { + "name": "receiver", + "type": "reference", + "documentation": "Intended \"real-world\" recipient for the data" + }, + { + "name": "author", + "type": "reference", + "documentation": "The source of the decision" + }, + { + "name": "destination", + "type": "string", + "documentation": "Name of system" + }, + { + "name": "focus", + "type": "reference", + "documentation": "The actual content of the message" + }, + { + "name": "source", + "type": "string", + "documentation": "Name of system" + }, + { + "name": "target", + "type": "reference", + "documentation": "Particular delivery destination within the destination" + }, + { + "name": "destination-uri", + "type": "uri", + "documentation": "Actual destination address or id" + }, + { + "name": "sender", + "type": "reference", + "documentation": "Real world sender of the message" + }, + { + "name": "source-uri", + "type": "uri", + "documentation": "Actual message source address or id" + }, + { + "name": "responsible", + "type": "reference", + "documentation": "Final responsibility for event" + }, + { + "name": "enterer", + "type": "reference", + "documentation": "The source of the data entry" + }, + { + "name": "response-id", + "type": "token", + "documentation": "Id of original message" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "event", + "type": "token", + "documentation": "Code for the event this message represents" + }, + { + "name": "timestamp", + "type": "date", + "documentation": "Time that the message was sent" + } + ] + }, + { + "type": "NamingSystem", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/NamingSystem" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "NamingSystem:replaced-by" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The naming system publication date" + }, + { + "name": "period", + "type": "date", + "documentation": "When is identifier valid?" + }, + { + "name": "kind", + "type": "token", + "documentation": "codesystem | identifier | root" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the naming system" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the naming system" + }, + { + "name": "type", + "type": "token", + "documentation": "e.g. driver, provider, patient, bank etc." + }, + { + "name": "id-type", + "type": "token", + "documentation": "oid | uuid | uri | other" + }, + { + "name": "contact", + "type": "string", + "documentation": "Name of an individual to contact" + }, + { + "name": "responsible", + "type": "string", + "documentation": "Who maintains system namespace?" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the naming system" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the naming system" + }, + { + "name": "telecom", + "type": "token", + "documentation": "Contact details for individual or organization" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "value", + "type": "string", + "documentation": "The unique identifier" + }, + { + "name": "replaced-by", + "type": "reference", + "documentation": "Use this instead" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the naming system" + } + ] + }, + { + "type": "NutritionOrder", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/NutritionOrder" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "NutritionOrder:encounter", + "NutritionOrder:patient", + "NutritionOrder:provider" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Return nutrition orders with this external identifier" + }, + { + "name": "datetime", + "type": "date", + "documentation": "Return nutrition orders requested on this date" + }, + { + "name": "provider", + "type": "reference", + "documentation": "The identify of the provider who placed the nutrition order" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The identity of the person who requires the diet, formula or nutritional supplement" + }, + { + "name": "supplement", + "type": "token", + "documentation": "Type of supplement product requested" + }, + { + "name": "formula", + "type": "token", + "documentation": "Type of enteral or infant formula" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "Return nutrition orders with this encounter identifier" + }, + { + "name": "oraldiet", + "type": "token", + "documentation": "Type of diet that can be consumed orally (i.e., take via the mouth)." + }, + { + "name": "additive", + "type": "token", + "documentation": "Type of module component to add to the feeding" + }, + { + "name": "status", + "type": "token", + "documentation": "Status of the nutrition order." + } + ] + }, + { + "extension": [ + { + "url": "http://hl7api.sourceforge.net/hapi-fhir/res/extdefs.html#resourceCount", + "valueDecimal": 63 + } + ], + "type": "Observation", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Observation" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Observation:based-on", + "Observation:context", + "Observation:device", + "Observation:encounter", + "Observation:patient", + "Observation:performer", + "Observation:related-target", + "Observation:specimen", + "Observation:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "Obtained date/time. If the obtained element is a period, a date that falls in the period" + }, + { + "name": "combo-data-absent-reason", + "type": "token", + "documentation": "The reason why the expected value in the element Observation.value[x] or Observation.component.value[x] is missing." + }, + { + "name": "code", + "type": "token", + "documentation": "The code of the observation type" + }, + { + "name": "combo-code-value-quantity", + "type": "composite", + "documentation": "Code and quantity value parameter pair, including in components" + }, + { + "name": "component-data-absent-reason", + "type": "token", + "documentation": "The reason why the expected value in the element Observation.component.value[x] is missing." + }, + { + "name": "subject", + "type": "reference", + "documentation": "The subject that the observation is about" + }, + { + "name": "value-concept", + "type": "token", + "documentation": "The value of the observation, if the value is a CodeableConcept" + }, + { + "name": "value-date", + "type": "date", + "documentation": "The value of the observation, if the value is a date or period of time" + }, + { + "name": "code-value-string", + "type": "composite", + "documentation": "Code and string value parameter pair" + }, + { + "name": "component-code-value-quantity", + "type": "composite", + "documentation": "Component code and component quantity value parameter pair" + }, + { + "name": "based-on", + "type": "reference", + "documentation": "Reference to the test or procedure request." + }, + { + "name": "related", + "type": "composite", + "documentation": "Related Observations - search on related-type and related-target together" + }, + { + "name": "code-value-date", + "type": "composite", + "documentation": "Code and date/time value parameter pair" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The subject that the observation is about (if patient)" + }, + { + "name": "specimen", + "type": "reference", + "documentation": "Specimen used for this observation" + }, + { + "name": "code-value-quantity", + "type": "composite", + "documentation": "Code and quantity value parameter pair" + }, + { + "name": "component-code", + "type": "token", + "documentation": "The component code of the observation type" + }, + { + "name": "context", + "type": "reference", + "documentation": "Healthcare event (Episode-of-care or Encounter) related to the observation" + }, + { + "name": "combo-code-value-concept", + "type": "composite", + "documentation": "Code and coded value parameter pair, including in components" + }, + { + "name": "value-string", + "type": "string", + "documentation": "The value of the observation, if the value is a string, and also searches in CodeableConcept.text" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The unique id for a particular observation" + }, + { + "name": "performer", + "type": "reference", + "documentation": "Who performed the observation" + }, + { + "name": "combo-code", + "type": "token", + "documentation": "The code of the observation type or component type" + }, + { + "name": "method", + "type": "token", + "documentation": "The method used for the observation" + }, + { + "name": "value-quantity", + "type": "quantity", + "documentation": "The value of the observation, if the value is a Quantity, or a SampledData (just search on the bounds of the values in sampled data)" + }, + { + "name": "component-value-quantity", + "type": "quantity", + "documentation": "The value of the component observation, if the value is a Quantity, or a SampledData (just search on the bounds of the values in sampled data)" + }, + { + "name": "data-absent-reason", + "type": "token", + "documentation": "The reason why the expected value in the element Observation.value[x] is missing." + }, + { + "name": "combo-value-quantity", + "type": "quantity", + "documentation": "The value or component value of the observation, if the value is a Quantity, or a SampledData (just search on the bounds of the values in sampled data)" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "Encounter related to the observation" + }, + { + "name": "related-type", + "type": "token", + "documentation": "has-member | derived-from | sequel-to | replaces | qualified-by | interfered-by" + }, + { + "name": "related-target", + "type": "reference", + "documentation": "Resource that is related to this one" + }, + { + "name": "code-value-concept", + "type": "composite", + "documentation": "Code and coded value parameter pair" + }, + { + "name": "component-code-value-concept", + "type": "composite", + "documentation": "Component code and component coded value parameter pair" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "component-value-concept", + "type": "token", + "documentation": "The value of the component observation, if the value is a CodeableConcept" + }, + { + "name": "category", + "type": "token", + "documentation": "The classification of the type of observation" + }, + { + "name": "device", + "type": "reference", + "documentation": "The Device that generated the observation data." + }, + { + "name": "combo-value-concept", + "type": "token", + "documentation": "The value or component value of the observation, if the value is a CodeableConcept" + }, + { + "name": "status", + "type": "token", + "documentation": "The status of the observation" + } + ] + }, + { + "type": "OperationDefinition", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/OperationDefinition" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "OperationDefinition:base", + "OperationDefinition:param-profile" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The operation definition publication date" + }, + { + "name": "code", + "type": "token", + "documentation": "Name used to invoke the operation" + }, + { + "name": "instance", + "type": "token", + "documentation": "Invoke on an instance?" + }, + { + "name": "kind", + "type": "token", + "documentation": "operation | query" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the operation definition" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the operation definition" + }, + { + "name": "type", + "type": "token", + "documentation": "Invole at the type level?" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the operation definition" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the operation definition" + }, + { + "name": "system", + "type": "token", + "documentation": "Invoke at the system level?" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the operation definition" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the operation definition" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "param-profile", + "type": "reference", + "documentation": "Profile on the type" + }, + { + "name": "base", + "type": "reference", + "documentation": "Marks this as a profile of the base" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the operation definition" + } + ] + }, + { + "type": "OperationOutcome", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/OperationOutcome" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + } + ] + }, + { + "extension": [ + { + "url": "http://hl7api.sourceforge.net/hapi-fhir/res/extdefs.html#resourceCount", + "valueDecimal": 2 + } + ], + "type": "Organization", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Organization" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Organization:endpoint", + "Organization:partof" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Any identifier for the organization (not the accreditation issuer's identifier)" + }, + { + "name": "partof", + "type": "reference", + "documentation": "An organization of which this organization forms a part" + }, + { + "name": "address", + "type": "string", + "documentation": "A (part of the) address of the organization" + }, + { + "name": "address-state", + "type": "string", + "documentation": "A state specified in an address" + }, + { + "name": "active", + "type": "token", + "documentation": "A server defined search that may match any of the string fields in the Address, including line, city, state, country, postalCode, and/or text" + }, + { + "name": "type", + "type": "token", + "documentation": "A code for the type of organization" + }, + { + "name": "address-postalcode", + "type": "string", + "documentation": "A postal code specified in an address" + }, + { + "name": "address-country", + "type": "string", + "documentation": "A country specified in an address" + }, + { + "name": "endpoint", + "type": "reference", + "documentation": "Technical endpoints providing access to services operated for the organization" + }, + { + "name": "phonetic", + "type": "string", + "documentation": "A portion of the organization's name using some kind of phonetic matching algorithm" + }, + { + "name": "address-use", + "type": "token", + "documentation": "A use code specified in an address" + }, + { + "name": "name", + "type": "string", + "documentation": "A portion of the organization's name or alias" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "address-city", + "type": "string", + "documentation": "A city specified in an address" + } + ] + }, + { + "type": "Parameters", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Parameters" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + } + ] + }, + { + "extension": [ + { + "url": "http://hl7api.sourceforge.net/hapi-fhir/res/extdefs.html#resourceCount", + "valueDecimal": 4 + } + ], + "type": "Patient", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Patient" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Patient:general-practitioner", + "Patient:link", + "Patient:organization" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "birthdate", + "type": "date", + "documentation": "The patient's date of birth" + }, + { + "name": "deceased", + "type": "token", + "documentation": "This patient has been marked as deceased, or as a death date entered" + }, + { + "name": "address-state", + "type": "string", + "documentation": "A state specified in an address" + }, + { + "name": "gender", + "type": "token", + "documentation": "Gender of the patient" + }, + { + "name": "animal-species", + "type": "token", + "documentation": "The species for animal patients" + }, + { + "name": "link", + "type": "reference", + "documentation": "All patients linked to the given patient" + }, + { + "name": "language", + "type": "token", + "documentation": "Language code (irrespective of use value)" + }, + { + "name": "animal-breed", + "type": "token", + "documentation": "The breed for animal patients" + }, + { + "name": "address-country", + "type": "string", + "documentation": "A country specified in an address" + }, + { + "name": "death-date", + "type": "date", + "documentation": "The date of death has been provided and satisfies this search value" + }, + { + "name": "phonetic", + "type": "string", + "documentation": "A portion of either family or given name using some kind of phonetic matching algorithm" + }, + { + "name": "telecom", + "type": "token", + "documentation": "The value in any kind of telecom details of the patient" + }, + { + "name": "address-city", + "type": "string", + "documentation": "A city specified in an address" + }, + { + "name": "email", + "type": "token", + "documentation": "A value in an email contact" + }, + { + "name": "given", + "type": "string", + "documentation": "A portion of the given name of the patient" + }, + { + "name": "identifier", + "type": "token", + "documentation": "A patient identifier" + }, + { + "name": "address", + "type": "string", + "documentation": "A server defined search that may match any of the string fields in the Address, including line, city, state, country, postalCode, and/or text" + }, + { + "name": "general-practitioner", + "type": "reference", + "documentation": "Patient's nominated general practitioner, not the organization that manages the record" + }, + { + "name": "active", + "type": "token", + "documentation": "Whether the patient record is active" + }, + { + "name": "address-postalcode", + "type": "string", + "documentation": "A postalCode specified in an address" + }, + { + "name": "phone", + "type": "token", + "documentation": "A value in a phone contact" + }, + { + "name": "organization", + "type": "reference", + "documentation": "The organization at which this person is a patient" + }, + { + "name": "address-use", + "type": "token", + "documentation": "A use code specified in an address" + }, + { + "name": "name", + "type": "string", + "documentation": "A server defined search that may match any of the string fields in the HumanName, including family, give, prefix, suffix, suffix, and/or text" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "family", + "type": "string", + "documentation": "A portion of the family name of the patient" + } + ] + }, + { + "type": "PaymentNotice", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/PaymentNotice" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "PaymentNotice:organization", + "PaymentNotice:provider", + "PaymentNotice:request", + "PaymentNotice:response" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The business identifier of the notice" + }, + { + "name": "request", + "type": "reference", + "documentation": "The Claim" + }, + { + "name": "provider", + "type": "reference", + "documentation": "The reference to the provider" + }, + { + "name": "created", + "type": "date", + "documentation": "Creation date fro the notice" + }, + { + "name": "response", + "type": "reference", + "documentation": "The ClaimResponse" + }, + { + "name": "organization", + "type": "reference", + "documentation": "The organization who generated this resource" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "payment-status", + "type": "token", + "documentation": "The type of payment notice" + }, + { + "name": "statusdate", + "type": "date", + "documentation": "The date of the payment action" + } + ] + }, + { + "type": "PaymentReconciliation", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/PaymentReconciliation" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "PaymentReconciliation:organization", + "PaymentReconciliation:request", + "PaymentReconciliation:request-organization", + "PaymentReconciliation:request-provider" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The business identifier of the Explanation of Benefit" + }, + { + "name": "request", + "type": "reference", + "documentation": "The reference to the claim" + }, + { + "name": "disposition", + "type": "string", + "documentation": "The contents of the disposition message" + }, + { + "name": "created", + "type": "date", + "documentation": "The creation date" + }, + { + "name": "organization", + "type": "reference", + "documentation": "The organization who generated this resource" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "request-organization", + "type": "reference", + "documentation": "The organization who generated this resource" + }, + { + "name": "request-provider", + "type": "reference", + "documentation": "The reference to the provider who sumbitted the claim" + }, + { + "name": "outcome", + "type": "token", + "documentation": "The processing outcome" + } + ] + }, + { + "type": "Person", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Person" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Person:link", + "Person:organization", + "Person:patient", + "Person:practitioner", + "Person:relatedperson" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "A person Identifier" + }, + { + "name": "address", + "type": "string", + "documentation": "A server defined search that may match any of the string fields in the Address, including line, city, state, country, postalCode, and/or text" + }, + { + "name": "birthdate", + "type": "date", + "documentation": "The person's date of birth" + }, + { + "name": "address-state", + "type": "string", + "documentation": "A state specified in an address" + }, + { + "name": "gender", + "type": "token", + "documentation": "The gender of the person" + }, + { + "name": "practitioner", + "type": "reference", + "documentation": "The Person links to this Practitioner" + }, + { + "name": "link", + "type": "reference", + "documentation": "Any link has this Patient, Person, RelatedPerson or Practitioner reference" + }, + { + "name": "relatedperson", + "type": "reference", + "documentation": "The Person links to this RelatedPerson" + }, + { + "name": "address-postalcode", + "type": "string", + "documentation": "A postal code specified in an address" + }, + { + "name": "address-country", + "type": "string", + "documentation": "A country specified in an address" + }, + { + "name": "phonetic", + "type": "string", + "documentation": "A portion of name using some kind of phonetic matching algorithm" + }, + { + "name": "phone", + "type": "token", + "documentation": "A value in a phone contact" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The Person links to this Patient" + }, + { + "name": "organization", + "type": "reference", + "documentation": "The organization at which this person record is being managed" + }, + { + "name": "address-use", + "type": "token", + "documentation": "A use code specified in an address" + }, + { + "name": "name", + "type": "string", + "documentation": "A server defined search that may match any of the string fields in the HumanName, including family, give, prefix, suffix, suffix, and/or text" + }, + { + "name": "telecom", + "type": "token", + "documentation": "The value in any kind of contact" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "address-city", + "type": "string", + "documentation": "A city specified in an address" + }, + { + "name": "email", + "type": "token", + "documentation": "A value in an email contact" + } + ] + }, + { + "type": "PlanDefinition", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/PlanDefinition" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "PlanDefinition:composed-of", + "PlanDefinition:depends-on", + "PlanDefinition:derived-from", + "PlanDefinition:predecessor", + "PlanDefinition:successor" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The plan definition publication date" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifier for the plan definition" + }, + { + "name": "successor", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the plan definition" + }, + { + "name": "derived-from", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the plan definition" + }, + { + "name": "predecessor", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "composed-of", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "title", + "type": "string", + "documentation": "The human-friendly name of the plan definition" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the plan definition" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the plan definition" + }, + { + "name": "depends-on", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "effective", + "type": "date", + "documentation": "The time during which the plan definition is intended to be in use" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the plan definition" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the plan definition" + }, + { + "name": "topic", + "type": "token", + "documentation": "Topics associated with the module" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the plan definition" + } + ] + }, + { + "type": "Practitioner", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Practitioner" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "given", + "type": "string", + "documentation": "A portion of the given name" + }, + { + "name": "identifier", + "type": "token", + "documentation": "A practitioner's Identifier" + }, + { + "name": "address", + "type": "string", + "documentation": "A server defined search that may match any of the string fields in the Address, including line, city, state, country, postalCode, and/or text" + }, + { + "name": "address-state", + "type": "string", + "documentation": "A state specified in an address" + }, + { + "name": "gender", + "type": "token", + "documentation": "Gender of the practitioner" + }, + { + "name": "active", + "type": "token", + "documentation": "Whether the practitioner record is active" + }, + { + "name": "address-postalcode", + "type": "string", + "documentation": "A postalCode specified in an address" + }, + { + "name": "address-country", + "type": "string", + "documentation": "A country specified in an address" + }, + { + "name": "phonetic", + "type": "string", + "documentation": "A portion of either family or given name using some kind of phonetic matching algorithm" + }, + { + "name": "phone", + "type": "token", + "documentation": "A value in a phone contact" + }, + { + "name": "address-use", + "type": "token", + "documentation": "A use code specified in an address" + }, + { + "name": "name", + "type": "string", + "documentation": "A server defined search that may match any of the string fields in the HumanName, including family, give, prefix, suffix, suffix, and/or text" + }, + { + "name": "telecom", + "type": "token", + "documentation": "The value in any kind of contact" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "address-city", + "type": "string", + "documentation": "A city specified in an address" + }, + { + "name": "communication", + "type": "token", + "documentation": "One of the languages that the practitioner can communicate with" + }, + { + "name": "family", + "type": "string", + "documentation": "A portion of the family name" + }, + { + "name": "email", + "type": "token", + "documentation": "A value in an email contact" + } + ] + }, + { + "type": "PractitionerRole", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/PractitionerRole" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "PractitionerRole:endpoint", + "PractitionerRole:location", + "PractitionerRole:organization", + "PractitionerRole:practitioner", + "PractitionerRole:service" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The period during which the practitioner is authorized to perform in these role(s)" + }, + { + "name": "identifier", + "type": "token", + "documentation": "A practitioner's Identifier" + }, + { + "name": "specialty", + "type": "token", + "documentation": "The practitioner has this specialty at an organization" + }, + { + "name": "role", + "type": "token", + "documentation": "The practitioner can perform this role at for the organization" + }, + { + "name": "practitioner", + "type": "reference", + "documentation": "Practitioner that is able to provide the defined services for the organation" + }, + { + "name": "active", + "type": "token", + "documentation": "Whether this practitioner's record is in active use" + }, + { + "name": "endpoint", + "type": "reference", + "documentation": "Technical endpoints providing access to services operated for the practitioner with this role" + }, + { + "name": "phone", + "type": "token", + "documentation": "A value in a phone contact" + }, + { + "name": "service", + "type": "reference", + "documentation": "The list of healthcare services that this worker provides for this role's Organization/Location(s)" + }, + { + "name": "organization", + "type": "reference", + "documentation": "The identity of the organization the practitioner represents / acts on behalf of" + }, + { + "name": "location", + "type": "reference", + "documentation": "One of the locations at which this practitioner provides care" + }, + { + "name": "telecom", + "type": "token", + "documentation": "The value in any kind of contact" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "email", + "type": "token", + "documentation": "A value in an email contact" + } + ] + }, + { + "type": "Procedure", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Procedure" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Procedure:based-on", + "Procedure:context", + "Procedure:definition", + "Procedure:encounter", + "Procedure:location", + "Procedure:part-of", + "Procedure:patient", + "Procedure:performer", + "Procedure:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "Date/Period the procedure was performed" + }, + { + "name": "identifier", + "type": "token", + "documentation": "A unique identifier for a procedure" + }, + { + "name": "code", + "type": "token", + "documentation": "A code to identify a procedure" + }, + { + "name": "performer", + "type": "reference", + "documentation": "The reference to the practitioner" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Search by subject" + }, + { + "name": "part-of", + "type": "reference", + "documentation": "Part of referenced event" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "Search by encounter" + }, + { + "name": "based-on", + "type": "reference", + "documentation": "A request for this procedure" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Search by subject - a patient" + }, + { + "name": "context", + "type": "reference", + "documentation": "Encounter or episode associated with the procedure" + }, + { + "name": "definition", + "type": "reference", + "documentation": "Instantiates protocol or definition" + }, + { + "name": "location", + "type": "reference", + "documentation": "Where the procedure happened" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "category", + "type": "token", + "documentation": "Classification of the procedure" + }, + { + "name": "status", + "type": "token", + "documentation": "preparation | in-progress | suspended | aborted | completed | entered-in-error | unknown" + } + ] + }, + { + "type": "ProcedureRequest", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ProcedureRequest" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "ProcedureRequest:based-on", + "ProcedureRequest:context", + "ProcedureRequest:definition", + "ProcedureRequest:encounter", + "ProcedureRequest:patient", + "ProcedureRequest:performer", + "ProcedureRequest:replaces", + "ProcedureRequest:requester", + "ProcedureRequest:specimen", + "ProcedureRequest:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "authored", + "type": "date", + "documentation": "Date request signed" + }, + { + "name": "requester", + "type": "reference", + "documentation": "Individual making the request" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Identifiers assigned to this order" + }, + { + "name": "code", + "type": "token", + "documentation": "What is being requested/ordered" + }, + { + "name": "performer", + "type": "reference", + "documentation": "Requested perfomer" + }, + { + "name": "requisition", + "type": "token", + "documentation": "Composite Request ID" + }, + { + "name": "replaces", + "type": "reference", + "documentation": "What request replaces" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Search by subject" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "An encounter in which this request is made" + }, + { + "name": "occurrence", + "type": "date", + "documentation": "When procedure should occur" + }, + { + "name": "priority", + "type": "token", + "documentation": "routine | urgent | asap | stat" + }, + { + "name": "intent", + "type": "token", + "documentation": "proposal | plan | order +" + }, + { + "name": "performer-type", + "type": "token", + "documentation": "Performer role" + }, + { + "name": "based-on", + "type": "reference", + "documentation": "What request fulfills" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Search by subject - a patient" + }, + { + "name": "specimen", + "type": "reference", + "documentation": "Specimen to be tested" + }, + { + "name": "context", + "type": "reference", + "documentation": "Encounter or Episode during which request was created" + }, + { + "name": "definition", + "type": "reference", + "documentation": "Protocol or definition" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "body-site", + "type": "token", + "documentation": "Where procedure is going to be done" + }, + { + "name": "status", + "type": "token", + "documentation": "draft | active | suspended | completed | entered-in-error | cancelled" + } + ] + }, + { + "type": "ProcessRequest", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ProcessRequest" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "ProcessRequest:organization", + "ProcessRequest:provider" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The business identifier of the ProcessRequest" + }, + { + "name": "provider", + "type": "reference", + "documentation": "The provider who regenerated this request" + }, + { + "name": "organization", + "type": "reference", + "documentation": "The organization who generated this request" + }, + { + "name": "action", + "type": "token", + "documentation": "The action requested by this resource" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + } + ] + }, + { + "type": "ProcessResponse", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ProcessResponse" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "ProcessResponse:organization", + "ProcessResponse:request", + "ProcessResponse:request-organization", + "ProcessResponse:request-provider" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The business identifier of the Explanation of Benefit" + }, + { + "name": "request", + "type": "reference", + "documentation": "The reference to the claim" + }, + { + "name": "organization", + "type": "reference", + "documentation": "The organization who generated this resource" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "request-organization", + "type": "reference", + "documentation": "The Organization who is responsible the request transaction" + }, + { + "name": "request-provider", + "type": "reference", + "documentation": "The Provider who is responsible the request transaction" + } + ] + }, + { + "type": "Provenance", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Provenance" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Provenance:agent", + "Provenance:entity-ref", + "Provenance:location", + "Provenance:patient", + "Provenance:target" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "entity-ref", + "type": "reference", + "documentation": "Identity of entity" + }, + { + "name": "agent", + "type": "reference", + "documentation": "Who participated" + }, + { + "name": "signature-type", + "type": "token", + "documentation": "Indication of the reason the entity signed the object(s)" + }, + { + "name": "start", + "type": "date", + "documentation": "Starting time with inclusive boundary" + }, + { + "name": "recorded", + "type": "date", + "documentation": "When the activity was recorded / updated" + }, + { + "name": "target", + "type": "reference", + "documentation": "Target Reference(s) (usually version specific)" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Target Reference(s) (usually version specific)" + }, + { + "name": "end", + "type": "date", + "documentation": "End time with inclusive boundary, if not ongoing" + }, + { + "name": "location", + "type": "reference", + "documentation": "Where the activity occurred, if relevant" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "agent-role", + "type": "token", + "documentation": "What the agents role was" + }, + { + "name": "entity-id", + "type": "token", + "documentation": "Identity of entity" + } + ] + }, + { + "type": "Questionnaire", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Questionnaire" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The questionnaire publication date" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifier for the questionnaire" + }, + { + "name": "code", + "type": "token", + "documentation": "A code that corresponds to one of its items in the questionnaire" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the questionnaire" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the questionnaire" + }, + { + "name": "title", + "type": "string", + "documentation": "The human-friendly name of the questionnaire" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the questionnaire" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the questionnaire" + }, + { + "name": "effective", + "type": "date", + "documentation": "The time during which the questionnaire is intended to be in use" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the questionnaire" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the questionnaire" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the questionnaire" + } + ] + }, + { + "type": "QuestionnaireResponse", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "QuestionnaireResponse:author", + "QuestionnaireResponse:based-on", + "QuestionnaireResponse:context", + "QuestionnaireResponse:parent", + "QuestionnaireResponse:patient", + "QuestionnaireResponse:questionnaire", + "QuestionnaireResponse:source", + "QuestionnaireResponse:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "authored", + "type": "date", + "documentation": "When the questionnaire response was last changed" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The unique identifier for the questionnaire response" + }, + { + "name": "parent", + "type": "reference", + "documentation": "Procedure or observation this questionnaire response was performed as a part of" + }, + { + "name": "questionnaire", + "type": "reference", + "documentation": "The questionnaire the answers are provided for" + }, + { + "name": "author", + "type": "reference", + "documentation": "The author of the questionnaire response" + }, + { + "name": "subject", + "type": "reference", + "documentation": "The subject of the questionnaire response" + }, + { + "name": "source", + "type": "reference", + "documentation": "The individual providing the information reflected in the questionnaire respose" + }, + { + "name": "based-on", + "type": "reference", + "documentation": "Plan/proposal/order fulfilled by this questionnaire response" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The patient that is the subject of the questionnaire response" + }, + { + "name": "context", + "type": "reference", + "documentation": "Encounter or episode associated with the questionnaire response" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "The status of the questionnaire response" + } + ] + }, + { + "type": "ReferralRequest", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ReferralRequest" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "ReferralRequest:based-on", + "ReferralRequest:context", + "ReferralRequest:definition", + "ReferralRequest:encounter", + "ReferralRequest:patient", + "ReferralRequest:recipient", + "ReferralRequest:replaces", + "ReferralRequest:requester", + "ReferralRequest:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "requester", + "type": "reference", + "documentation": "Individual making the request" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Business identifier" + }, + { + "name": "specialty", + "type": "token", + "documentation": "The specialty that the referral is for" + }, + { + "name": "replaces", + "type": "reference", + "documentation": "Request(s) replaced by this request" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Patient referred to care or transfer" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "Originating encounter" + }, + { + "name": "authored-on", + "type": "date", + "documentation": "Creation or activation date" + }, + { + "name": "priority", + "type": "token", + "documentation": "The priority assigned to the referral" + }, + { + "name": "type", + "type": "token", + "documentation": "The type of the referral" + }, + { + "name": "intent", + "type": "token", + "documentation": "Proposal, plan or order" + }, + { + "name": "group-identifier", + "type": "token", + "documentation": "Part of common request" + }, + { + "name": "based-on", + "type": "reference", + "documentation": "Request being fulfilled" + }, + { + "name": "occurrence-date", + "type": "date", + "documentation": "When the service(s) requested in the referral should occur" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Who the referral is about" + }, + { + "name": "service", + "type": "token", + "documentation": "Actions requested as part of the referral" + }, + { + "name": "context", + "type": "reference", + "documentation": "Part of encounter or episode of care" + }, + { + "name": "recipient", + "type": "reference", + "documentation": "The person that the referral was sent to" + }, + { + "name": "definition", + "type": "reference", + "documentation": "Instantiates protocol or definition" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "The status of the referral" + } + ] + }, + { + "extension": [ + { + "url": "http://hl7api.sourceforge.net/hapi-fhir/res/extdefs.html#resourceCount", + "valueDecimal": 2 + } + ], + "type": "RelatedPerson", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/RelatedPerson" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "RelatedPerson:patient" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "An Identifier of the RelatedPerson" + }, + { + "name": "address", + "type": "string", + "documentation": "A server defined search that may match any of the string fields in the Address, including line, city, state, country, postalCode, and/or text" + }, + { + "name": "birthdate", + "type": "date", + "documentation": "The Related Person's date of birth" + }, + { + "name": "address-state", + "type": "string", + "documentation": "A state specified in an address" + }, + { + "name": "gender", + "type": "token", + "documentation": "Gender of the related person" + }, + { + "name": "active", + "type": "token", + "documentation": "Indicates if the related person record is active" + }, + { + "name": "address-postalcode", + "type": "string", + "documentation": "A postal code specified in an address" + }, + { + "name": "address-country", + "type": "string", + "documentation": "A country specified in an address" + }, + { + "name": "phonetic", + "type": "string", + "documentation": "A portion of name using some kind of phonetic matching algorithm" + }, + { + "name": "phone", + "type": "token", + "documentation": "A value in a phone contact" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The patient this related person is related to" + }, + { + "name": "address-use", + "type": "token", + "documentation": "A use code specified in an address" + }, + { + "name": "name", + "type": "string", + "documentation": "A server defined search that may match any of the string fields in the HumanName, including family, give, prefix, suffix, suffix, and/or text" + }, + { + "name": "telecom", + "type": "token", + "documentation": "The value in any kind of contact" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "address-city", + "type": "string", + "documentation": "A city specified in an address" + }, + { + "name": "email", + "type": "token", + "documentation": "A value in an email contact" + } + ] + }, + { + "type": "RequestGroup", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/RequestGroup" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "RequestGroup:author", + "RequestGroup:context", + "RequestGroup:definition", + "RequestGroup:encounter", + "RequestGroup:participant", + "RequestGroup:patient", + "RequestGroup:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "authored", + "type": "date", + "documentation": "The date the request group was authored" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifiers for the request group" + }, + { + "name": "author", + "type": "reference", + "documentation": "The author of the request group" + }, + { + "name": "subject", + "type": "reference", + "documentation": "The subject that the request group is about" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "The encounter the request group applies to" + }, + { + "name": "priority", + "type": "token", + "documentation": "The priority of the request group" + }, + { + "name": "intent", + "type": "token", + "documentation": "The intent of the request group" + }, + { + "name": "participant", + "type": "reference", + "documentation": "The participant in the requests in the group" + }, + { + "name": "group-identifier", + "type": "token", + "documentation": "The group identifier for the request group" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The identity of a patient to search for request groups" + }, + { + "name": "context", + "type": "reference", + "documentation": "The context the request group applies to" + }, + { + "name": "definition", + "type": "reference", + "documentation": "The definition from which the request group is realized" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "The status of the request group" + } + ] + }, + { + "type": "ResearchStudy", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ResearchStudy" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "ResearchStudy:partof", + "ResearchStudy:principalinvestigator", + "ResearchStudy:protocol", + "ResearchStudy:site", + "ResearchStudy:sponsor" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "When the study began and ended" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Business Identifier for study" + }, + { + "name": "partof", + "type": "reference", + "documentation": "Part of larger study" + }, + { + "name": "sponsor", + "type": "reference", + "documentation": "Organization responsible for the study" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Geographic region(s) for study" + }, + { + "name": "focus", + "type": "token", + "documentation": "Drugs, devices, conditions, etc. under study" + }, + { + "name": "principalinvestigator", + "type": "reference", + "documentation": "The individual responsible for the study" + }, + { + "name": "title", + "type": "string", + "documentation": "Name for this study" + }, + { + "name": "protocol", + "type": "reference", + "documentation": "Steps followed in executing study" + }, + { + "name": "site", + "type": "reference", + "documentation": "Location involved in study execution" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "category", + "type": "token", + "documentation": "Classifications for the study" + }, + { + "name": "keyword", + "type": "token", + "documentation": "Used to search for the study" + }, + { + "name": "status", + "type": "token", + "documentation": "draft | in-progress | suspended | stopped | completed | entered-in-error" + } + ] + }, + { + "type": "ResearchSubject", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ResearchSubject" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "ResearchSubject:individual", + "ResearchSubject:patient" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "Start and end of participation" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Business Identifier for research subject" + }, + { + "name": "individual", + "type": "reference", + "documentation": "Who is part of study" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Who is part of study" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "candidate | enrolled | active | suspended | withdrawn | completed" + } + ] + }, + { + "type": "RiskAssessment", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/RiskAssessment" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "RiskAssessment:condition", + "RiskAssessment:encounter", + "RiskAssessment:patient", + "RiskAssessment:performer", + "RiskAssessment:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "When was assessment made?" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Unique identifier for the assessment" + }, + { + "name": "condition", + "type": "reference", + "documentation": "Condition assessed" + }, + { + "name": "performer", + "type": "reference", + "documentation": "Who did assessment?" + }, + { + "name": "method", + "type": "token", + "documentation": "Evaluation mechanism" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Who/what does assessment apply to?" + }, + { + "name": "probability", + "type": "number", + "documentation": "Likelihood of specified outcome" + }, + { + "name": "subject", + "type": "reference", + "documentation": "Who/what does assessment apply to?" + }, + { + "name": "risk", + "type": "token", + "documentation": "Likelihood of specified outcome as a qualitative value" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "Where was assessment performed?" + } + ] + }, + { + "type": "Schedule", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Schedule" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Schedule:actor" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "actor", + "type": "reference", + "documentation": "The individual(HealthcareService, Practitioner, Location, ...) to find a Schedule for" + }, + { + "name": "date", + "type": "date", + "documentation": "Search for Schedule resources that have a period that contains this date specified" + }, + { + "name": "identifier", + "type": "token", + "documentation": "A Schedule Identifier" + }, + { + "name": "active", + "type": "token", + "documentation": "Is the schedule in active use" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "type", + "type": "token", + "documentation": "The type of appointments that can be booked into associated slot(s)" + } + ] + }, + { + "type": "SearchParameter", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/SearchParameter" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "SearchParameter:component" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The search parameter publication date" + }, + { + "name": "code", + "type": "token", + "documentation": "Code used in URL" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the search parameter" + }, + { + "name": "derived-from", + "type": "uri", + "documentation": "Original Definition for the search parameter" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the search parameter" + }, + { + "name": "type", + "type": "token", + "documentation": "number | date | string | token | reference | composite | quantity | uri" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the search parameter" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the search parameter" + }, + { + "name": "target", + "type": "token", + "documentation": "Types of resource (if a resource reference)" + }, + { + "name": "component", + "type": "reference", + "documentation": "Defines how the part works" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the search parameter" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the search parameter" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "base", + "type": "token", + "documentation": "The resource type(s) this search parameter applies to" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the search parameter" + } + ] + }, + { + "type": "Sequence", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Sequence" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Sequence:patient" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The unique identity for a particular sequence" + }, + { + "name": "coordinate", + "type": "composite", + "documentation": "Search parameter for region of the reference DNA sequence string. This will refer to part of a locus or part of a gene where search region will be represented in 1-based system. Since the coordinateSystem can either be 0-based or 1-based, this search query will include the result of both coordinateSystem that contains the equivalent segment of the gene or whole genome sequence. For example, a search for sequence can be represented as `coordinate=1$lt345$gt123`, this means it will search for the Sequence resource on chromosome 1 and with position >123 and <345, where in 1-based system resource, all strings within region 1:124-344 will be revealed, while in 0-based system resource, all strings within region 1:123-344 will be revealed. You may want to check detail about 0-based v.s. 1-based above." + }, + { + "name": "patient", + "type": "reference", + "documentation": "The subject that the observation is about" + }, + { + "name": "chromosome", + "type": "token", + "documentation": "Chromosome number of the reference sequence" + }, + { + "name": "start", + "type": "number", + "documentation": "Start position (0-based inclusive, 1-based inclusive, that means the nucleic acid or amino acid at this position will be included) of the reference sequence." + }, + { + "name": "end", + "type": "number", + "documentation": "End position (0-based exclusive, which menas the acid at this position will not be included, 1-based inclusive, which means the acid at this position will be included) of the reference sequence." + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "type", + "type": "token", + "documentation": "Amino Acid Sequence/ DNA Sequence / RNA Sequence" + } + ] + }, + { + "type": "ServiceDefinition", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ServiceDefinition" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "ServiceDefinition:composed-of", + "ServiceDefinition:depends-on", + "ServiceDefinition:derived-from", + "ServiceDefinition:predecessor", + "ServiceDefinition:successor" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The service definition publication date" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifier for the service definition" + }, + { + "name": "successor", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the service definition" + }, + { + "name": "derived-from", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the service definition" + }, + { + "name": "predecessor", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "composed-of", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "title", + "type": "string", + "documentation": "The human-friendly name of the service definition" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the service definition" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the service definition" + }, + { + "name": "depends-on", + "type": "reference", + "documentation": "What resource is being referenced" + }, + { + "name": "effective", + "type": "date", + "documentation": "The time during which the service definition is intended to be in use" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the service definition" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the service definition" + }, + { + "name": "topic", + "type": "token", + "documentation": "Topics associated with the module" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the service definition" + } + ] + }, + { + "type": "Slot", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Slot" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Slot:schedule" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "A Slot Identifier" + }, + { + "name": "schedule", + "type": "reference", + "documentation": "The Schedule Resource that we are seeking a slot within" + }, + { + "name": "start", + "type": "date", + "documentation": "Appointment date/time." + }, + { + "name": "slot-type", + "type": "token", + "documentation": "The type of appointments that can be booked into the slot" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "The free/busy status of the appointment" + } + ] + }, + { + "type": "Specimen", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Specimen" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Specimen:collector", + "Specimen:parent", + "Specimen:patient", + "Specimen:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "container", + "type": "token", + "documentation": "The kind of specimen container" + }, + { + "name": "container-id", + "type": "token", + "documentation": "The unique identifier associated with the specimen container" + }, + { + "name": "identifier", + "type": "token", + "documentation": "The unique identifier associated with the specimen" + }, + { + "name": "parent", + "type": "reference", + "documentation": "The parent of the specimen" + }, + { + "name": "bodysite", + "type": "token", + "documentation": "The code for the body site from where the specimen originated" + }, + { + "name": "subject", + "type": "reference", + "documentation": "The subject of the specimen" + }, + { + "name": "collected", + "type": "date", + "documentation": "The date the specimen was collected" + }, + { + "name": "accession", + "type": "token", + "documentation": "The accession number associated with the specimen" + }, + { + "name": "type", + "type": "token", + "documentation": "The specimen type" + }, + { + "name": "collector", + "type": "reference", + "documentation": "Who collected the specimen" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The patient the specimen comes from" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "available | unavailable | unsatisfactory | entered-in-error" + } + ] + }, + { + "type": "StructureDefinition", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/StructureDefinition" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "StructureDefinition:valueset" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The structure definition publication date" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifier for the structure definition" + }, + { + "name": "valueset", + "type": "reference", + "documentation": "A vocabulary binding reference" + }, + { + "name": "kind", + "type": "token", + "documentation": "primitive-type | complex-type | resource | logical" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the structure definition" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the structure definition" + }, + { + "name": "context-type", + "type": "token", + "documentation": "resource | datatype | extension" + }, + { + "name": "experimental", + "type": "token", + "documentation": "For testing purposes, not real usage" + }, + { + "name": "abstract", + "type": "token", + "documentation": "Whether the structure is abstract" + }, + { + "name": "title", + "type": "string", + "documentation": "The human-friendly name of the structure definition" + }, + { + "name": "type", + "type": "token", + "documentation": "Type defined or constrained by this structure" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the structure definition" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the structure definition" + }, + { + "name": "path", + "type": "token", + "documentation": "A path that is constrained in the profile" + }, + { + "name": "ext-context", + "type": "string", + "documentation": "Where the extension can be used in instances" + }, + { + "name": "base-path", + "type": "token", + "documentation": "Path that identifies the base element" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the structure definition" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the structure definition" + }, + { + "name": "derivation", + "type": "token", + "documentation": "specialization | constraint - How relates to base definition" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "keyword", + "type": "token", + "documentation": "A code for the profile" + }, + { + "name": "base", + "type": "uri", + "documentation": "Definition that this type is constrained/specialized from" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the structure definition" + } + ] + }, + { + "type": "StructureMap", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/StructureMap" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The structure map publication date" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifier for the structure map" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the structure map" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the structure map" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the structure map" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the structure map" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "title", + "type": "string", + "documentation": "The human-friendly name of the structure map" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the structure map" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the structure map" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the structure map" + } + ] + }, + { + "extension": [ + { + "url": "http://hl7api.sourceforge.net/hapi-fhir/res/extdefs.html#resourceCount", + "valueDecimal": 2 + } + ], + "type": "Subscription", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Subscription" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "payload", + "type": "string", + "documentation": "The mime-type of the notification payload" + }, + { + "name": "add-tag", + "type": "token", + "documentation": "A tag to be added to the resource matching the criteria" + }, + { + "name": "criteria", + "type": "string", + "documentation": "The search rules used to determine when to send a notification" + }, + { + "name": "contact", + "type": "token", + "documentation": "Contact details for the subscription" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "type", + "type": "token", + "documentation": "The type of channel for the sent notifications" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that will receive the notifications" + }, + { + "name": "status", + "type": "token", + "documentation": "The current state of the subscription" + } + ] + }, + { + "type": "Substance", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Substance" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Substance:substance-reference" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Unique identifier for the substance" + }, + { + "name": "container-identifier", + "type": "token", + "documentation": "Identifier of the package/container" + }, + { + "name": "code", + "type": "token", + "documentation": "The code of the substance or ingredient" + }, + { + "name": "quantity", + "type": "quantity", + "documentation": "Amount of substance in the package" + }, + { + "name": "substance-reference", + "type": "reference", + "documentation": "A component of the substance" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "expiry", + "type": "date", + "documentation": "Expiry date of package or container of substance" + }, + { + "name": "category", + "type": "token", + "documentation": "The category of the substance" + }, + { + "name": "status", + "type": "token", + "documentation": "active | inactive | entered-in-error" + } + ] + }, + { + "type": "SupplyDelivery", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/SupplyDelivery" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "SupplyDelivery:patient", + "SupplyDelivery:receiver", + "SupplyDelivery:supplier" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifier" + }, + { + "name": "receiver", + "type": "reference", + "documentation": "Who collected the Supply" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Patient for whom the item is supplied" + }, + { + "name": "supplier", + "type": "reference", + "documentation": "Dispenser" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "in-progress | completed | abandoned | entered-in-error" + } + ] + }, + { + "type": "SupplyRequest", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/SupplyRequest" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "SupplyRequest:requester", + "SupplyRequest:supplier" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "When the request was made" + }, + { + "name": "requester", + "type": "reference", + "documentation": "Individual making the request" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Unique identifier" + }, + { + "name": "supplier", + "type": "reference", + "documentation": "Who is intended to fulfill the request" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "category", + "type": "token", + "documentation": "The kind of supply (central, non-stock, etc.)" + }, + { + "name": "status", + "type": "token", + "documentation": "draft | active | suspended +" + } + ] + }, + { + "type": "Task", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/Task" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "Task:based-on", + "Task:context", + "Task:focus", + "Task:organization", + "Task:owner", + "Task:part-of", + "Task:patient", + "Task:requester", + "Task:subject" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "owner", + "type": "reference", + "documentation": "Search by task owner" + }, + { + "name": "requester", + "type": "reference", + "documentation": "Search by task requester" + }, + { + "name": "business-status", + "type": "token", + "documentation": "Search by business status" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Search for a task instance by its business identifier" + }, + { + "name": "period", + "type": "date", + "documentation": "Search by period Task is/was underway" + }, + { + "name": "code", + "type": "token", + "documentation": "Search by task code" + }, + { + "name": "performer", + "type": "token", + "documentation": "Search by recommended type of performer (e.g., Requester, Performer, Scheduler)." + }, + { + "name": "subject", + "type": "reference", + "documentation": "Search by subject" + }, + { + "name": "focus", + "type": "reference", + "documentation": "Search by task focus" + }, + { + "name": "part-of", + "type": "reference", + "documentation": "Search by task this task is part of" + }, + { + "name": "authored-on", + "type": "date", + "documentation": "Search by creation date" + }, + { + "name": "priority", + "type": "token", + "documentation": "Search by task priority" + }, + { + "name": "intent", + "type": "token", + "documentation": "Search by task intent" + }, + { + "name": "group-identifier", + "type": "token", + "documentation": "Search by group identifier" + }, + { + "name": "based-on", + "type": "reference", + "documentation": "Search by requests this task is based on" + }, + { + "name": "patient", + "type": "reference", + "documentation": "Search by patient" + }, + { + "name": "organization", + "type": "reference", + "documentation": "Search by responsible organization" + }, + { + "name": "context", + "type": "reference", + "documentation": "Search by encounter or episode" + }, + { + "name": "modified", + "type": "date", + "documentation": "Search by last modification date" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "Search by task status" + } + ] + }, + { + "type": "TestReport", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/TestReport" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "TestReport:testscript" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "result", + "type": "token", + "documentation": "The result disposition of the test execution" + }, + { + "name": "identifier", + "type": "token", + "documentation": "An external identifier for the test report" + }, + { + "name": "tester", + "type": "string", + "documentation": "The name of the testing organization" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "testscript", + "type": "reference", + "documentation": "The test script executed to produce this report" + }, + { + "name": "issued", + "type": "date", + "documentation": "The test report generation date" + }, + { + "name": "participant", + "type": "uri", + "documentation": "The reference to a participant in the test execution" + } + ] + }, + { + "type": "TestScript", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/TestScript" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The test script publication date" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifier for the test script" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the test script" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the test script" + }, + { + "name": "testscript-capability", + "type": "string", + "documentation": "TestScript required and validated capability" + }, + { + "name": "title", + "type": "string", + "documentation": "The human-friendly name of the test script" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the test script" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the test script" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the test script" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the test script" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the test script" + } + ] + }, + { + "type": "ValueSet", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/ValueSet" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "date", + "type": "date", + "documentation": "The value set publication date" + }, + { + "name": "identifier", + "type": "token", + "documentation": "External identifier for the value set" + }, + { + "name": "jurisdiction", + "type": "token", + "documentation": "Intended jurisdiction for the value set" + }, + { + "name": "description", + "type": "string", + "documentation": "The description of the value set" + }, + { + "name": "title", + "type": "string", + "documentation": "The human-friendly name of the value set" + }, + { + "name": "version", + "type": "token", + "documentation": "The business version of the value set" + }, + { + "name": "url", + "type": "uri", + "documentation": "The uri that identifies the value set" + }, + { + "name": "expansion", + "type": "uri", + "documentation": "Uniquely identifies this expansion" + }, + { + "name": "reference", + "type": "uri", + "documentation": "A code system included or excluded in the value set or an imported value set" + }, + { + "name": "name", + "type": "string", + "documentation": "Computationally friendly name of the value set" + }, + { + "name": "publisher", + "type": "string", + "documentation": "Name of the publisher of the value set" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "status", + "type": "token", + "documentation": "The current status of the value set" + } + ] + }, + { + "type": "VisionPrescription", + "profile": { + "reference": "http://hl7.org/fhir/StructureDefinition/VisionPrescription" + }, + "interaction": [ + { + "code": "read" + }, + { + "code": "vread" + }, + { + "code": "update" + }, + { + "code": "patch" + }, + { + "code": "delete" + }, + { + "code": "history-instance" + }, + { + "code": "history-type" + }, + { + "code": "create" + }, + { + "code": "search-type" + } + ], + "versioning": "versioned-update", + "conditionalCreate": true, + "conditionalUpdate": true, + "conditionalDelete": "multiple", + "searchInclude": [ + "*", + "VisionPrescription:encounter", + "VisionPrescription:patient", + "VisionPrescription:prescriber" + ], + "searchParam": [ + { + "name": "_language", + "type": "string", + "documentation": "The language of the resource" + }, + { + "name": "prescriber", + "type": "reference", + "documentation": "Who authorizes the vision product" + }, + { + "name": "identifier", + "type": "token", + "documentation": "Return prescriptions with this external identifier" + }, + { + "name": "patient", + "type": "reference", + "documentation": "The identity of a patient to list dispenses for" + }, + { + "name": "datewritten", + "type": "date", + "documentation": "Return prescriptions written on this date" + }, + { + "name": "_id", + "type": "token", + "documentation": "The ID of the resource" + }, + { + "name": "encounter", + "type": "reference", + "documentation": "Return prescriptions with this encounter identifier" + } + ] + } + ], + "interaction": [ + { + "code": "history-system" + }, + { + "code": "transaction" + } + ], + "operation": [ + { + "name": "perform-reindexing-pass", + "definition": { + "reference": "OperationDefinition/-s-perform-reindexing-pass" + } + }, + { + "name": "mark-all-resources-for-reindexing", + "definition": { + "reference": "OperationDefinition/-s-mark-all-resources-for-reindexing" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/-s-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/-is-expunge" + } + }, + { + "name": "suggest-keywords", + "definition": { + "reference": "OperationDefinition/-s-suggest-keywords" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/-s-meta" + } + }, + { + "name": "get-resource-counts", + "definition": { + "reference": "OperationDefinition/-s-get-resource-counts" + } + }, + { + "name": "upload-external-code-system", + "definition": { + "reference": "OperationDefinition/-s-upload-external-code-system" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Account--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Account-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Account-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Account--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Account--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Account-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Account-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Account-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ActivityDefinition--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ActivityDefinition-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ActivityDefinition-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ActivityDefinition--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ActivityDefinition--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ActivityDefinition-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ActivityDefinition-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ActivityDefinition-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/AdverseEvent--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/AdverseEvent-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/AdverseEvent-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/AdverseEvent--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/AdverseEvent--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/AdverseEvent-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/AdverseEvent-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/AdverseEvent-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/AllergyIntolerance--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/AllergyIntolerance-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/AllergyIntolerance-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/AllergyIntolerance--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/AllergyIntolerance--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/AllergyIntolerance-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/AllergyIntolerance-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/AllergyIntolerance-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Appointment--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Appointment-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Appointment-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Appointment--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Appointment--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Appointment-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Appointment-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Appointment-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/AppointmentResponse--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/AppointmentResponse-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/AppointmentResponse-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/AppointmentResponse--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/AppointmentResponse--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/AppointmentResponse-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/AppointmentResponse-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/AppointmentResponse-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/AuditEvent--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/AuditEvent-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/AuditEvent-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/AuditEvent--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/AuditEvent--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/AuditEvent-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/AuditEvent-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/AuditEvent-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Basic--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Basic-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Basic-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Basic--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Basic--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Basic-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Basic-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Basic-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Binary--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Binary-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Binary-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Binary--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Binary--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Binary-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Binary-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Binary-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/BodySite--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/BodySite-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/BodySite-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/BodySite--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/BodySite--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/BodySite-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/BodySite-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/BodySite-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Bundle--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Bundle-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Bundle-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Bundle--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Bundle--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Bundle-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Bundle-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Bundle-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/CapabilityStatement--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/CapabilityStatement-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/CapabilityStatement-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/CapabilityStatement--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/CapabilityStatement--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/CapabilityStatement-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/CapabilityStatement-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/CapabilityStatement-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/CarePlan--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/CarePlan-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/CarePlan-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/CarePlan--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/CarePlan--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/CarePlan-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/CarePlan-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/CarePlan-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/CareTeam--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/CareTeam-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/CareTeam-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/CareTeam--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/CareTeam--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/CareTeam-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/CareTeam-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/CareTeam-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ChargeItem--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ChargeItem-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ChargeItem-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ChargeItem--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ChargeItem--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ChargeItem-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ChargeItem-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ChargeItem-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Claim--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Claim-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Claim-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Claim--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Claim--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Claim-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Claim-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Claim-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ClaimResponse--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ClaimResponse-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ClaimResponse-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ClaimResponse--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ClaimResponse--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ClaimResponse-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ClaimResponse-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ClaimResponse-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ClinicalImpression--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ClinicalImpression-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ClinicalImpression-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ClinicalImpression--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ClinicalImpression--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ClinicalImpression-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ClinicalImpression-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ClinicalImpression-i-meta-delete" + } + }, + { + "name": "lookup", + "definition": { + "reference": "OperationDefinition/CodeSystem--lookup" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/CodeSystem--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/CodeSystem-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/CodeSystem-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/CodeSystem--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/CodeSystem--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/CodeSystem-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/CodeSystem-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/CodeSystem-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Communication--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Communication-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Communication-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Communication--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Communication--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Communication-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Communication-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Communication-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/CommunicationRequest--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/CommunicationRequest-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/CommunicationRequest-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/CommunicationRequest--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/CommunicationRequest--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/CommunicationRequest-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/CommunicationRequest-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/CommunicationRequest-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/CompartmentDefinition--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/CompartmentDefinition-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/CompartmentDefinition-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/CompartmentDefinition--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/CompartmentDefinition--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/CompartmentDefinition-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/CompartmentDefinition-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/CompartmentDefinition-i-meta-delete" + } + }, + { + "name": "document", + "definition": { + "reference": "OperationDefinition/Composition-i-document" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Composition--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Composition-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Composition-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Composition--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Composition--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Composition-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Composition-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Composition-i-meta-delete" + } + }, + { + "name": "translate", + "definition": { + "reference": "OperationDefinition/ConceptMap-i-translate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ConceptMap--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ConceptMap-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ConceptMap-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ConceptMap--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ConceptMap--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ConceptMap-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ConceptMap-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ConceptMap-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Condition--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Condition-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Condition-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Condition--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Condition--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Condition-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Condition-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Condition-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Consent--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Consent-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Consent-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Consent--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Consent--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Consent-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Consent-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Consent-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Contract--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Contract-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Contract-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Contract--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Contract--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Contract-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Contract-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Contract-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Coverage--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Coverage-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Coverage-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Coverage--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Coverage--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Coverage-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Coverage-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Coverage-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/DataElement--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/DataElement-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/DataElement-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/DataElement--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/DataElement--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/DataElement-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/DataElement-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/DataElement-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/DetectedIssue--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/DetectedIssue-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/DetectedIssue-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/DetectedIssue--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/DetectedIssue--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/DetectedIssue-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/DetectedIssue-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/DetectedIssue-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Device--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Device-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Device-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Device--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Device--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Device-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Device-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Device-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/DeviceComponent--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/DeviceComponent-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/DeviceComponent-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/DeviceComponent--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/DeviceComponent--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/DeviceComponent-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/DeviceComponent-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/DeviceComponent-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/DeviceMetric--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/DeviceMetric-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/DeviceMetric-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/DeviceMetric--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/DeviceMetric--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/DeviceMetric-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/DeviceMetric-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/DeviceMetric-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/DeviceRequest--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/DeviceRequest-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/DeviceRequest-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/DeviceRequest--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/DeviceRequest--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/DeviceRequest-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/DeviceRequest-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/DeviceRequest-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/DeviceUseStatement--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/DeviceUseStatement-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/DeviceUseStatement-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/DeviceUseStatement--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/DeviceUseStatement--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/DeviceUseStatement-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/DeviceUseStatement-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/DeviceUseStatement-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/DiagnosticReport--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/DiagnosticReport-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/DiagnosticReport-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/DiagnosticReport--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/DiagnosticReport--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/DiagnosticReport-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/DiagnosticReport-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/DiagnosticReport-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/DocumentManifest--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/DocumentManifest-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/DocumentManifest-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/DocumentManifest--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/DocumentManifest--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/DocumentManifest-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/DocumentManifest-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/DocumentManifest-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/DocumentReference--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/DocumentReference-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/DocumentReference-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/DocumentReference--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/DocumentReference--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/DocumentReference-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/DocumentReference-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/DocumentReference-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/EligibilityRequest--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/EligibilityRequest-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/EligibilityRequest-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/EligibilityRequest--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/EligibilityRequest--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/EligibilityRequest-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/EligibilityRequest-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/EligibilityRequest-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/EligibilityResponse--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/EligibilityResponse-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/EligibilityResponse-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/EligibilityResponse--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/EligibilityResponse--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/EligibilityResponse-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/EligibilityResponse-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/EligibilityResponse-i-meta-delete" + } + }, + { + "name": "everything", + "definition": { + "reference": "OperationDefinition/Encounter-i-everything" + } + }, + { + "name": "everything", + "definition": { + "reference": "OperationDefinition/Encounter--everything" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Encounter--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Encounter-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Encounter-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Encounter--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Encounter--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Encounter-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Encounter-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Encounter-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Endpoint--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Endpoint-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Endpoint-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Endpoint--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Endpoint--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Endpoint-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Endpoint-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Endpoint-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/EnrollmentRequest--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/EnrollmentRequest-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/EnrollmentRequest-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/EnrollmentRequest--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/EnrollmentRequest--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/EnrollmentRequest-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/EnrollmentRequest-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/EnrollmentRequest-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/EnrollmentResponse--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/EnrollmentResponse-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/EnrollmentResponse-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/EnrollmentResponse--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/EnrollmentResponse--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/EnrollmentResponse-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/EnrollmentResponse-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/EnrollmentResponse-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/EpisodeOfCare--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/EpisodeOfCare-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/EpisodeOfCare-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/EpisodeOfCare--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/EpisodeOfCare--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/EpisodeOfCare-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/EpisodeOfCare-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/EpisodeOfCare-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ExpansionProfile--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ExpansionProfile-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ExpansionProfile-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ExpansionProfile--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ExpansionProfile--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ExpansionProfile-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ExpansionProfile-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ExpansionProfile-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ExplanationOfBenefit--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ExplanationOfBenefit-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ExplanationOfBenefit-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ExplanationOfBenefit--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ExplanationOfBenefit--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ExplanationOfBenefit-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ExplanationOfBenefit-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ExplanationOfBenefit-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/FamilyMemberHistory--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/FamilyMemberHistory-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/FamilyMemberHistory-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/FamilyMemberHistory--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/FamilyMemberHistory--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/FamilyMemberHistory-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/FamilyMemberHistory-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/FamilyMemberHistory-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Flag--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Flag-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Flag-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Flag--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Flag--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Flag-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Flag-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Flag-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Goal--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Goal-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Goal-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Goal--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Goal--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Goal-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Goal-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Goal-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/GraphDefinition--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/GraphDefinition-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/GraphDefinition-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/GraphDefinition--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/GraphDefinition--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/GraphDefinition-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/GraphDefinition-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/GraphDefinition-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Group--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Group-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Group-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Group--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Group--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Group-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Group-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Group-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/GuidanceResponse--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/GuidanceResponse-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/GuidanceResponse-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/GuidanceResponse--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/GuidanceResponse--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/GuidanceResponse-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/GuidanceResponse-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/GuidanceResponse-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/HealthcareService--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/HealthcareService-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/HealthcareService-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/HealthcareService--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/HealthcareService--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/HealthcareService-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/HealthcareService-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/HealthcareService-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ImagingManifest--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ImagingManifest-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ImagingManifest-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ImagingManifest--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ImagingManifest--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ImagingManifest-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ImagingManifest-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ImagingManifest-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ImagingStudy--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ImagingStudy-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ImagingStudy-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ImagingStudy--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ImagingStudy--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ImagingStudy-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ImagingStudy-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ImagingStudy-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Immunization--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Immunization-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Immunization-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Immunization--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Immunization--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Immunization-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Immunization-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Immunization-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ImmunizationRecommendation--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ImmunizationRecommendation-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ImmunizationRecommendation-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ImmunizationRecommendation--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ImmunizationRecommendation--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ImmunizationRecommendation-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ImmunizationRecommendation-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ImmunizationRecommendation-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ImplementationGuide--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ImplementationGuide-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ImplementationGuide-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ImplementationGuide--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ImplementationGuide--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ImplementationGuide-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ImplementationGuide-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ImplementationGuide-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Library--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Library-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Library-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Library--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Library--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Library-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Library-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Library-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Linkage--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Linkage-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Linkage-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Linkage--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Linkage--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Linkage-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Linkage-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Linkage-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/List--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/List-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/List-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/List--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/List--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/List-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/List-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/List-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Location--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Location-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Location-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Location--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Location--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Location-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Location-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Location-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Measure--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Measure-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Measure-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Measure--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Measure--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Measure-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Measure-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Measure-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/MeasureReport--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/MeasureReport-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/MeasureReport-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/MeasureReport--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/MeasureReport--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/MeasureReport-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/MeasureReport-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/MeasureReport-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Media--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Media-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Media-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Media--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Media--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Media-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Media-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Media-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Medication--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Medication-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Medication-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Medication--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Medication--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Medication-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Medication-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Medication-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/MedicationAdministration--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/MedicationAdministration-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/MedicationAdministration-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/MedicationAdministration--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/MedicationAdministration--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/MedicationAdministration-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/MedicationAdministration-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/MedicationAdministration-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/MedicationDispense--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/MedicationDispense-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/MedicationDispense-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/MedicationDispense--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/MedicationDispense--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/MedicationDispense-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/MedicationDispense-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/MedicationDispense-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/MedicationRequest--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/MedicationRequest-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/MedicationRequest-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/MedicationRequest--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/MedicationRequest--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/MedicationRequest-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/MedicationRequest-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/MedicationRequest-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/MedicationStatement--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/MedicationStatement-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/MedicationStatement-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/MedicationStatement--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/MedicationStatement--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/MedicationStatement-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/MedicationStatement-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/MedicationStatement-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/MessageDefinition--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/MessageDefinition-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/MessageDefinition-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/MessageDefinition--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/MessageDefinition--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/MessageDefinition-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/MessageDefinition-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/MessageDefinition-i-meta-delete" + } + }, + { + "name": "process-message", + "definition": { + "reference": "OperationDefinition/MessageHeader--process-message" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/MessageHeader--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/MessageHeader-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/MessageHeader-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/MessageHeader--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/MessageHeader--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/MessageHeader-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/MessageHeader-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/MessageHeader-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/NamingSystem--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/NamingSystem-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/NamingSystem-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/NamingSystem--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/NamingSystem--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/NamingSystem-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/NamingSystem-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/NamingSystem-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/NutritionOrder--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/NutritionOrder-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/NutritionOrder-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/NutritionOrder--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/NutritionOrder--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/NutritionOrder-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/NutritionOrder-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/NutritionOrder-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Observation--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Observation-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Observation-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Observation--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Observation--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Observation-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Observation-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Observation-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/OperationDefinition--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/OperationDefinition-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/OperationDefinition-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/OperationDefinition--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/OperationDefinition--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/OperationDefinition-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/OperationDefinition-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/OperationDefinition-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/OperationOutcome--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/OperationOutcome-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/OperationOutcome-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/OperationOutcome--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/OperationOutcome--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/OperationOutcome-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/OperationOutcome-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/OperationOutcome-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Organization--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Organization-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Organization-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Organization--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Organization--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Organization-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Organization-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Organization-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Parameters--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Parameters-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Parameters-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Parameters--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Parameters--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Parameters-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Parameters-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Parameters-i-meta-delete" + } + }, + { + "name": "everything", + "definition": { + "reference": "OperationDefinition/Patient-i-everything" + } + }, + { + "name": "everything", + "definition": { + "reference": "OperationDefinition/Patient--everything" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Patient--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Patient-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Patient-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Patient--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Patient--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Patient-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Patient-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Patient-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/PaymentNotice--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/PaymentNotice-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/PaymentNotice-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/PaymentNotice--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/PaymentNotice--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/PaymentNotice-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/PaymentNotice-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/PaymentNotice-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/PaymentReconciliation--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/PaymentReconciliation-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/PaymentReconciliation-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/PaymentReconciliation--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/PaymentReconciliation--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/PaymentReconciliation-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/PaymentReconciliation-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/PaymentReconciliation-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Person--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Person-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Person-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Person--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Person--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Person-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Person-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Person-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/PlanDefinition--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/PlanDefinition-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/PlanDefinition-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/PlanDefinition--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/PlanDefinition--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/PlanDefinition-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/PlanDefinition-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/PlanDefinition-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Practitioner--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Practitioner-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Practitioner-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Practitioner--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Practitioner--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Practitioner-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Practitioner-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Practitioner-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/PractitionerRole--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/PractitionerRole-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/PractitionerRole-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/PractitionerRole--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/PractitionerRole--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/PractitionerRole-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/PractitionerRole-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/PractitionerRole-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Procedure--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Procedure-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Procedure-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Procedure--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Procedure--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Procedure-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Procedure-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Procedure-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ProcedureRequest--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ProcedureRequest-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ProcedureRequest-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ProcedureRequest--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ProcedureRequest--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ProcedureRequest-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ProcedureRequest-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ProcedureRequest-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ProcessRequest--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ProcessRequest-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ProcessRequest-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ProcessRequest--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ProcessRequest--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ProcessRequest-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ProcessRequest-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ProcessRequest-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ProcessResponse--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ProcessResponse-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ProcessResponse-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ProcessResponse--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ProcessResponse--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ProcessResponse-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ProcessResponse-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ProcessResponse-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Provenance--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Provenance-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Provenance-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Provenance--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Provenance--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Provenance-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Provenance-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Provenance-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Questionnaire--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Questionnaire-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Questionnaire-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Questionnaire--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Questionnaire--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Questionnaire-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Questionnaire-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Questionnaire-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/QuestionnaireResponse--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/QuestionnaireResponse-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/QuestionnaireResponse-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/QuestionnaireResponse--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/QuestionnaireResponse--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/QuestionnaireResponse-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/QuestionnaireResponse-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/QuestionnaireResponse-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ReferralRequest--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ReferralRequest-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ReferralRequest-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ReferralRequest--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ReferralRequest--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ReferralRequest-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ReferralRequest-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ReferralRequest-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/RelatedPerson--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/RelatedPerson-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/RelatedPerson-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/RelatedPerson--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/RelatedPerson--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/RelatedPerson-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/RelatedPerson-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/RelatedPerson-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/RequestGroup--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/RequestGroup-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/RequestGroup-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/RequestGroup--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/RequestGroup--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/RequestGroup-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/RequestGroup-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/RequestGroup-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ResearchStudy--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ResearchStudy-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ResearchStudy-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ResearchStudy--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ResearchStudy--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ResearchStudy-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ResearchStudy-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ResearchStudy-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ResearchSubject--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ResearchSubject-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ResearchSubject-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ResearchSubject--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ResearchSubject--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ResearchSubject-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ResearchSubject-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ResearchSubject-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/RiskAssessment--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/RiskAssessment-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/RiskAssessment-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/RiskAssessment--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/RiskAssessment--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/RiskAssessment-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/RiskAssessment-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/RiskAssessment-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Schedule--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Schedule-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Schedule-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Schedule--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Schedule--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Schedule-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Schedule-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Schedule-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/SearchParameter--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/SearchParameter-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/SearchParameter-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/SearchParameter--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/SearchParameter--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/SearchParameter-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/SearchParameter-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/SearchParameter-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Sequence--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Sequence-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Sequence-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Sequence--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Sequence--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Sequence-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Sequence-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Sequence-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ServiceDefinition--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ServiceDefinition-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ServiceDefinition-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ServiceDefinition--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ServiceDefinition--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ServiceDefinition-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ServiceDefinition-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ServiceDefinition-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Slot--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Slot-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Slot-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Slot--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Slot--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Slot-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Slot-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Slot-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Specimen--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Specimen-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Specimen-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Specimen--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Specimen--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Specimen-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Specimen-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Specimen-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/StructureDefinition--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/StructureDefinition-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/StructureDefinition-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/StructureDefinition--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/StructureDefinition--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/StructureDefinition-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/StructureDefinition-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/StructureDefinition-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/StructureMap--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/StructureMap-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/StructureMap-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/StructureMap--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/StructureMap--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/StructureMap-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/StructureMap-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/StructureMap-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Subscription--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Subscription-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Subscription-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Subscription--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Subscription--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Subscription-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Subscription-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Subscription-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Substance--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Substance-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Substance-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Substance--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Substance--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Substance-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Substance-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Substance-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/SupplyDelivery--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/SupplyDelivery-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/SupplyDelivery-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/SupplyDelivery--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/SupplyDelivery--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/SupplyDelivery-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/SupplyDelivery-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/SupplyDelivery-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/SupplyRequest--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/SupplyRequest-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/SupplyRequest-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/SupplyRequest--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/SupplyRequest--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/SupplyRequest-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/SupplyRequest-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/SupplyRequest-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Task--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/Task-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Task-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/Task--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Task--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/Task-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/Task-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/Task-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/TestReport--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/TestReport-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/TestReport-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/TestReport--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/TestReport--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/TestReport-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/TestReport-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/TestReport-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/TestScript--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/TestScript-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/TestScript-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/TestScript--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/TestScript--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/TestScript-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/TestScript-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/TestScript-i-meta-delete" + } + }, + { + "name": "expand", + "definition": { + "reference": "OperationDefinition/ValueSet-i-expand" + } + }, + { + "name": "validate-code", + "definition": { + "reference": "OperationDefinition/ValueSet-i-validate-code" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ValueSet--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/ValueSet-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ValueSet-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/ValueSet--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ValueSet--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/ValueSet-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/ValueSet-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/ValueSet-i-meta-delete" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/VisionPrescription--validate" + } + }, + { + "name": "validate", + "definition": { + "reference": "OperationDefinition/VisionPrescription-i-validate" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/VisionPrescription-i-expunge" + } + }, + { + "name": "expunge", + "definition": { + "reference": "OperationDefinition/VisionPrescription--expunge" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/VisionPrescription--meta" + } + }, + { + "name": "meta", + "definition": { + "reference": "OperationDefinition/VisionPrescription-i-meta" + } + }, + { + "name": "meta-add", + "definition": { + "reference": "OperationDefinition/VisionPrescription-i-meta-add" + } + }, + { + "name": "meta-delete", + "definition": { + "reference": "OperationDefinition/VisionPrescription-i-meta-delete" + } + } + ] + } + ] +} diff --git a/app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/search-patient-15.json b/app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/search-patient-15.json new file mode 100644 index 00000000..3b93cd1d --- /dev/null +++ b/app/src/test/resources/org/dhis2/fhir/adapter/fhir/test/dstu3/search-patient-15.json @@ -0,0 +1,130 @@ +{ + "resourceType": "Bundle", + "id": "0cad0ac5-7a60-419b-9793-6467af38c0db", + "meta": { + "lastUpdated": "2018-11-21T18:18:55.560+01:00" + }, + "type": "searchset", + "total": 1, + "link": [ + { + "relation": "self", + "url": "http://localhost:8082/hapi-fhir-jpaserver-example/baseDstu3/Patient?_format=json&_sort=_lastUpdated" + } + ], + "entry": [ + { + "fullUrl": "http://localhost:8082/hapi-fhir-jpaserver-example/baseDstu3/Patient/15", + "resource": { + "resourceType": "Patient", + "id": "15", + "meta": { + "versionId": "6", + "lastUpdated": "2018-11-19T21:31:14.493+01:00" + }, + "text": { + "status": "generated", + "div": "
Joe Alan Scott WEST
Identifier88589
AddressWater Road 675
Apartment 62
Freetown Sierra Leone
Date of birth11 November 2018
" + }, + "contained": [ + { + "resourceType": "RelatedPerson", + "id": "1", + "active": true, + "patient": { + "reference": "Patient/15" + }, + "relationship": { + "coding": [ + { + "system": "http://hl7.org/fhir/v3/RoleCode", + "code": "MTH" + } + ] + }, + "name": [ + { + "family": "West", + "given": [ + "Elizabeth" + ] + } + ], + "telecom": [ + { + "system": "phone", + "value": "(123) 456-7890.10", + "use": "old", + "rank": 1 + }, + { + "system": "phone", + "value": "(723) 456-7890.10", + "use": "home", + "rank": 2 + } + ], + "gender": "female" + } + ], + "identifier": [ + { + "system": "http://example.sl/patients", + "value": "88589" + } + ], + "name": [ + { + "family": "West", + "given": [ + "Joe", + "Alan", + "Scott" + ] + } + ], + "gender": "male", + "birthDate": "2018-11-11", + "address": [ + { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/geolocation", + "extension": [ + { + "url": "latitude", + "valueDecimal": 8.4665341 + }, + { + "url": "longitude", + "valueDecimal": -13.262743 + } + ] + } + ], + "line": [ + "Water Road 675", + "Apartment 62" + ], + "city": "Freetown", + "country": "Sierra Leone" + } + ], + "managingOrganization": { + "reference": "Organization/19" + }, + "link": [ + { + "other": { + "reference": "#1" + }, + "type": "seealso" + } + ] + }, + "search": { + "mode": "match" + } + } + ] +} diff --git a/app/src/test/resources/test.properties b/app/src/test/resources/test.properties new file mode 100644 index 00000000..41de50c7 --- /dev/null +++ b/app/src/test/resources/test.properties @@ -0,0 +1,53 @@ +# +# Copyright (c) 2004-2018, University of Oslo +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# Neither the name of the HISP project nor the names of its contributors may +# be used to endorse or promote products derived from this software without +# specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +logging.file= + +spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1 +spring.datasource.username=sa +spring.datasource.driver-class-name=org.h2.Driver + +spring.jpa.open-in-view=false +spring.jpa.show-sql=true +spring.jpa.generate-ddl=true +spring.jpa.hibernate.ddl-auto=create +spring.jpa.properties.hibernate.jdbc.time_zone=UTC + +spring.flyway.enabled=false + +spring.artemis.embedded.persistent=false + +dhis2.fhir-adapter.endpoint.url=http://localhost:8080 +dhis2.fhir-adapter.endpoint.api-version=30 +dhis2.fhir-adapter.endpoint.system-authentication.username=test_admin +dhis2.fhir-adapter.endpoint.system-authentication.password=test_district +dhis2.fhir-adapter.cache.metadata.type=caffeine +dhis2.fhir-adapter.cache.dhis.type=caffeine +dhis2.fhir-adapter.cache.fhir.type=caffeine +dhis2.fhir-adapter.remote.web-hook-request-queue.embedded-address-settings.max-delivery-attempts=1 +dhis2.fhir-adapter.repository.fhir-resource-queue.embedded-address-settings.max-delivery-attempts=1 diff --git a/common/src/main/java/org/dhis2/fhir/adapter/lock/impl/EmbeddedLockContextImpl.java b/common/src/main/java/org/dhis2/fhir/adapter/lock/impl/EmbeddedLockContextImpl.java new file mode 100644 index 00000000..eac49a42 --- /dev/null +++ b/common/src/main/java/org/dhis2/fhir/adapter/lock/impl/EmbeddedLockContextImpl.java @@ -0,0 +1,103 @@ +package org.dhis2.fhir.adapter.lock.impl; + +/* + * Copyright (c) 2004-2018, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import org.dhis2.fhir.adapter.lock.LockContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.annotation.Nonnull; +import java.util.HashSet; +import java.util.Set; + +/** + * Implementation of a lock context that uses internal JVM locks. These + * cannot be used in a clustered environment. + * + * @author volsch + */ +public class EmbeddedLockContextImpl implements LockContext +{ + private final Logger logger = LoggerFactory.getLogger( getClass() ); + + private final EmbeddedLockManagerImpl lockManager; + + private Set lockedKeys = new HashSet<>(); + + public EmbeddedLockContextImpl( @Nonnull EmbeddedLockManagerImpl lockManager ) + { + this.lockManager = lockManager; + } + + @Override + public void lock( @Nonnull String key ) + { + if ( lockedKeys.contains( key ) ) + { + return; + } + + boolean ok = false; + lockedKeys.add( key ); + try + { + lockManager.lock( key ); + ok = true; + } + finally + { + if ( !ok ) + { + lockedKeys.remove( key ); + } + } + logger.debug( "Locked {}.", key ); + } + + @Override + public void unlockAll() + { + if ( !lockedKeys.isEmpty() ) + { + logger.debug( "Unlocking keys {}.", lockedKeys ); + for ( String key : lockedKeys ) + { + lockManager.unlock( key ); + } + } + lockedKeys.clear(); + } + + @Override + public void close() + { + unlockAll(); + lockManager.removeFromThread( this ); + } +} diff --git a/common/src/main/java/org/dhis2/fhir/adapter/lock/impl/EmbeddedLockManagerImpl.java b/common/src/main/java/org/dhis2/fhir/adapter/lock/impl/EmbeddedLockManagerImpl.java new file mode 100644 index 00000000..a2884cfc --- /dev/null +++ b/common/src/main/java/org/dhis2/fhir/adapter/lock/impl/EmbeddedLockManagerImpl.java @@ -0,0 +1,111 @@ +package org.dhis2.fhir.adapter.lock.impl; + +/* + * Copyright (c) 2004-2018, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import org.dhis2.fhir.adapter.lock.LockContext; +import org.dhis2.fhir.adapter.lock.LockException; +import org.dhis2.fhir.adapter.lock.LockManager; + +import javax.annotation.Nonnull; +import java.util.HashSet; +import java.util.Optional; +import java.util.Set; + +/** + * Lock manager that creates a lock context that uses internal JVM locks. These + * cannot be used in a clustered environment. + * + * @author volsch + */ +public class EmbeddedLockManagerImpl implements LockManager +{ + private final ThreadLocal threadLocal = new ThreadLocal<>(); + + private final Set locks = new HashSet<>(); + + @Nonnull + @Override + public LockContext begin() + { + if ( threadLocal.get() != null ) + { + throw new IllegalStateException( "The current thread already owns a lock context." ); + } + final LockContext lockContext = new EmbeddedLockContextImpl( this ); + threadLocal.set( lockContext ); + return lockContext; + } + + @Nonnull + @Override + public Optional getCurrentLockContext() + { + return Optional.ofNullable( threadLocal.get() ); + } + + void lock( @Nonnull String key ) + { + synchronized ( locks ) + { + while ( locks.contains( key ) ) + { + try + { + locks.wait(); + } + catch ( InterruptedException e ) + { + throw new LockException( "Waiting for lock has been interrupted.", e ); + } + } + locks.add( key ); + } + } + + void unlock( @Nonnull String key ) + { + synchronized ( locks ) + { + if ( !locks.remove( key ) ) + { + throw new IllegalStateException( "Lock on " + key + " does not exist." ); + } + locks.notifyAll(); + } + } + + void removeFromThread( @Nonnull EmbeddedLockContextImpl lockContext ) + { + if ( threadLocal.get() == null ) + { + throw new IllegalStateException( "Current thread does not own a lock context." ); + } + threadLocal.set( null ); + } +} diff --git a/common/src/main/java/org/dhis2/fhir/adapter/lock/impl/LockContextImpl.java b/common/src/main/java/org/dhis2/fhir/adapter/lock/impl/PostgreSqlAdvisoryLockContextImpl.java similarity index 96% rename from common/src/main/java/org/dhis2/fhir/adapter/lock/impl/LockContextImpl.java rename to common/src/main/java/org/dhis2/fhir/adapter/lock/impl/PostgreSqlAdvisoryLockContextImpl.java index 79862cc0..6032d850 100644 --- a/common/src/main/java/org/dhis2/fhir/adapter/lock/impl/LockContextImpl.java +++ b/common/src/main/java/org/dhis2/fhir/adapter/lock/impl/PostgreSqlAdvisoryLockContextImpl.java @@ -50,11 +50,11 @@ * * @author volsch */ -public class LockContextImpl implements LockContext +public class PostgreSqlAdvisoryLockContextImpl implements LockContext { private final Logger logger = LoggerFactory.getLogger( getClass() ); - private final LockManagerImpl lockManager; + private final PostgreSqlAdvisoryLockManagerImpl lockManager; private Connection connection; @@ -62,7 +62,7 @@ public class LockContextImpl implements LockContext private Set lockedKeys = new HashSet<>(); - public LockContextImpl( @Nonnull LockManagerImpl lockManager ) + public PostgreSqlAdvisoryLockContextImpl( @Nonnull PostgreSqlAdvisoryLockManagerImpl lockManager ) { this.lockManager = lockManager; } diff --git a/common/src/main/java/org/dhis2/fhir/adapter/lock/impl/LockManagerImpl.java b/common/src/main/java/org/dhis2/fhir/adapter/lock/impl/PostgreSqlAdvisoryLockManagerImpl.java similarity index 90% rename from common/src/main/java/org/dhis2/fhir/adapter/lock/impl/LockManagerImpl.java rename to common/src/main/java/org/dhis2/fhir/adapter/lock/impl/PostgreSqlAdvisoryLockManagerImpl.java index 000feb61..76bee699 100644 --- a/common/src/main/java/org/dhis2/fhir/adapter/lock/impl/LockManagerImpl.java +++ b/common/src/main/java/org/dhis2/fhir/adapter/lock/impl/PostgreSqlAdvisoryLockManagerImpl.java @@ -43,13 +43,13 @@ * @author volsch */ @Service -public class LockManagerImpl implements LockManager +public class PostgreSqlAdvisoryLockManagerImpl implements LockManager { private final ThreadLocal threadLocal = new ThreadLocal<>(); private final DataSource dataSource; - public LockManagerImpl( @Nonnull DataSource dataSource ) + public PostgreSqlAdvisoryLockManagerImpl( @Nonnull DataSource dataSource ) { this.dataSource = dataSource; } @@ -62,7 +62,7 @@ public LockContext begin() { throw new IllegalStateException( "The current thread already owns a lock context." ); } - final LockContext lockContext = new LockContextImpl( this ); + final LockContext lockContext = new PostgreSqlAdvisoryLockContextImpl( this ); threadLocal.set( lockContext ); return lockContext; } @@ -80,7 +80,7 @@ DataSource getDataSource() return dataSource; } - void removeFromThread( @Nonnull LockContextImpl lockContext ) + void removeFromThread( @Nonnull PostgreSqlAdvisoryLockContextImpl lockContext ) { if ( threadLocal.get() == null ) { diff --git a/dhis/src/main/java/org/dhis2/fhir/adapter/dhis/tracker/trackedentity/impl/TrackedEntityMetadataServiceImpl.java b/dhis/src/main/java/org/dhis2/fhir/adapter/dhis/tracker/trackedentity/impl/TrackedEntityMetadataServiceImpl.java index 3bbd3f1f..a7c4fa1d 100644 --- a/dhis/src/main/java/org/dhis2/fhir/adapter/dhis/tracker/trackedentity/impl/TrackedEntityMetadataServiceImpl.java +++ b/dhis/src/main/java/org/dhis2/fhir/adapter/dhis/tracker/trackedentity/impl/TrackedEntityMetadataServiceImpl.java @@ -61,7 +61,7 @@ public class TrackedEntityMetadataServiceImpl implements TrackedEntityMetadataSe protected static final String TRACKED_ENTITY_TYPE_BY_NAME_URI = "/trackedEntityTypes.json?" + "paging=false&filter=name:eq:{name}&fields=" + TRACKED_ENTITY_TYPE_FIELDS; - protected static final String TRACKED_ENTITY_ATTRIBUTES_URI = "/trackedEntityAttributes.json?fields=" + TRACKED_ENTITY_ATTRIBUTE_FIELDS; + protected static final String TRACKED_ENTITY_ATTRIBUTES_URI = "/trackedEntityAttributes.json?paging=false&fields=" + TRACKED_ENTITY_ATTRIBUTE_FIELDS; protected static final String REQUIRED_VALUE_URI = "/trackedEntityAttributes/{attributeId}/requiredValues.json"; diff --git a/dhis/src/main/java/org/dhis2/fhir/adapter/dhis/tracker/trackedentity/impl/TrackedEntityServiceImpl.java b/dhis/src/main/java/org/dhis2/fhir/adapter/dhis/tracker/trackedentity/impl/TrackedEntityServiceImpl.java index 550fced0..b17a4f90 100644 --- a/dhis/src/main/java/org/dhis2/fhir/adapter/dhis/tracker/trackedentity/impl/TrackedEntityServiceImpl.java +++ b/dhis/src/main/java/org/dhis2/fhir/adapter/dhis/tracker/trackedentity/impl/TrackedEntityServiceImpl.java @@ -67,18 +67,21 @@ @Service public class TrackedEntityServiceImpl implements TrackedEntityService { + protected static final String TEI_FIELDS = + "trackedEntityInstance,trackedEntityType,orgUnit,coordinates,lastUpdated," + + "attributes[attribute,value,lastUpdated,storedBy]"; + protected static final String GENERATE_URI = "/trackedEntityAttributes/{attributeId}/generate.json"; protected static final String CREATE_URI = "/trackedEntityInstances.json?strategy=CREATE"; - protected static final String ID_URI = "/trackedEntityInstances/{id}.json?" + - "fields=trackedEntityInstance,trackedEntityType,orgUnit,coordinates,lastUpdated," + - "attributes[attribute,value,lastUpdated]"; + protected static final String ID_URI = "/trackedEntityInstances/{id}.json?fields=" + TEI_FIELDS; - protected static final String UPDATE_URI = ID_URI + "?mergeMode=MERGE"; + protected static final String UPDATE_URI = "/trackedEntityInstances/{id}.json?mergeMode=MERGE"; protected static final String FIND_BY_ATTR_VALUE_URI = "/trackedEntityInstances.json?" + - "trackedEntityType={typeId}&ouMode=ACCESSIBLE&filter={attrId}:EQ:{attrValue}&pageSize={maxResult}"; + "trackedEntityType={typeId}&ouMode=ACCESSIBLE&filter={attrId}:EQ:{attrValue}&pageSize={maxResult}&" + + "fields=" + TEI_FIELDS; protected static final int MAX_RESERVE_RETRIES = 10; diff --git a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/AlreadyQueuedException.java b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/AlreadyQueuedException.java new file mode 100644 index 00000000..e0630476 --- /dev/null +++ b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/AlreadyQueuedException.java @@ -0,0 +1,44 @@ +package org.dhis2.fhir.adapter.fhir.data.repository; + +/* + * Copyright (c) 2004-2018, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * Thrown if a resource has been queued already. + * + * @author volsch + */ +public class AlreadyQueuedException extends Exception +{ + private static final long serialVersionUID = -7444559801933307100L; + + public AlreadyQueuedException() + { + super(); + } +} diff --git a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/CustomQueuedRemoteFhirResourceRepository.java b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/CustomQueuedRemoteFhirResourceRepository.java index 4cfcbad7..faec31e9 100644 --- a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/CustomQueuedRemoteFhirResourceRepository.java +++ b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/CustomQueuedRemoteFhirResourceRepository.java @@ -51,10 +51,9 @@ public interface CustomQueuedRemoteFhirResourceRepository * @param fhirResourceId the ID of the FHIR resource for which a message should * be enqueued. * @param requestId the unique ID of the request to enqueue this resource. - * @return true if the enqueue can be made, false if there - * are still messages inside the queue. + * @throws AlreadyQueuedException thrown if there are still messages inside the queue. */ - boolean enqueue( @Nonnull UUID subscriptionResourceId, @Nonnull String fhirResourceId, @Nonnull String requestId ); + void enqueue( @Nonnull UUID subscriptionResourceId, @Nonnull String fhirResourceId, @Nonnull String requestId ) throws AlreadyQueuedException; /** * Tries to dequeue the entity with the specified IDs. If the entity does not diff --git a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/CustomQueuedRemoteSubscriptionRequestRepository.java b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/CustomQueuedRemoteSubscriptionRequestRepository.java index 0d50e7fe..b79bb08d 100644 --- a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/CustomQueuedRemoteSubscriptionRequestRepository.java +++ b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/CustomQueuedRemoteSubscriptionRequestRepository.java @@ -49,10 +49,9 @@ public interface CustomQueuedRemoteSubscriptionRequestRepository * @param subscriptionResourceId the ID of the subscription resource for which a * message should be enqueued. * @param requestId the ID of the current request. - * @return true if the enqueue can be made, false if there - * are still messages inside the queue. + * @throws AlreadyQueuedException thrown if there are still messages inside the queue. */ - boolean enqueue( @Nonnull UUID subscriptionResourceId, @Nonnull String requestId ); + void enqueue( @Nonnull UUID subscriptionResourceId, @Nonnull String requestId ) throws AlreadyQueuedException; /** * Tries to dequeue the entity with the specified ID. If the entity does not diff --git a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/impl/CustomQueuedRemoteFhirResourceRepositoryImpl.java b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/impl/CustomQueuedRemoteFhirResourceRepositoryImpl.java index 2f95535c..2adef87b 100644 --- a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/impl/CustomQueuedRemoteFhirResourceRepositoryImpl.java +++ b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/impl/CustomQueuedRemoteFhirResourceRepositoryImpl.java @@ -29,13 +29,20 @@ */ import org.dhis2.fhir.adapter.fhir.data.model.QueuedRemoteSubscriptionRequest; +import org.dhis2.fhir.adapter.fhir.data.repository.AlreadyQueuedException; import org.dhis2.fhir.adapter.fhir.data.repository.CustomQueuedRemoteFhirResourceRepository; import org.dhis2.fhir.adapter.fhir.data.repository.IgnoredSubscriptionResourceException; -import org.hibernate.exception.ConstraintViolationException; import org.hibernate.query.NativeQuery; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.dao.support.DataAccessUtils; +import org.springframework.dao.support.PersistenceExceptionTranslator; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.DefaultTransactionDefinition; import javax.annotation.Nonnull; import javax.persistence.EntityManager; @@ -45,6 +52,8 @@ import java.time.Instant; import java.util.UUID; +import static org.springframework.transaction.TransactionDefinition.PROPAGATION_REQUIRES_NEW; + /** * Implementation of {@link CustomQueuedRemoteFhirResourceRepository}. * @@ -57,18 +66,25 @@ public class CustomQueuedRemoteFhirResourceRepositoryImpl implements CustomQueue @PersistenceContext private EntityManager entityManager; - public CustomQueuedRemoteFhirResourceRepositoryImpl( @Nonnull EntityManager entityManager ) + private PlatformTransactionManager platformTransactionManager; + + private PersistenceExceptionTranslator persistenceExceptionTranslator; + + public CustomQueuedRemoteFhirResourceRepositoryImpl( @Nonnull EntityManager entityManager, + @Nonnull PlatformTransactionManager platformTransactionManager, @Nonnull @Qualifier( "&entityManagerFactory" ) PersistenceExceptionTranslator persistenceExceptionTranslator ) { this.entityManager = entityManager; + this.platformTransactionManager = platformTransactionManager; + this.persistenceExceptionTranslator = persistenceExceptionTranslator; } - @Transactional + @Transactional( rollbackFor = AlreadyQueuedException.class ) @Override @SuppressWarnings( "unchecked" ) - public boolean enqueue( @Nonnull UUID subscriptionResourceId, @Nonnull String fhirResourceId, @Nonnull String requestId ) + public void enqueue( @Nonnull UUID subscriptionResourceId, @Nonnull String fhirResourceId, @Nonnull String requestId ) throws AlreadyQueuedException { final Query query = entityManager.createNativeQuery( "INSERT INTO fhir_queued_remote_resource(remote_subscription_resource_id,fhir_resource_id,request_id,queued_at) " + - "VALUES (:subscriptionResourceId,:fhirResourceId,:requestId,:queuedAt) ON CONFLICT ON CONSTRAINT fhir_queued_remote_resource_pk DO NOTHING RETURNING request_id" ) + "VALUES (:subscriptionResourceId,:fhirResourceId,:requestId,:queuedAt)" ) .setParameter( "subscriptionResourceId", subscriptionResourceId ).setParameter( "fhirResourceId", fhirResourceId ) .setParameter( "requestId", requestId ).setParameter( "queuedAt", Instant.now() ); // avoid invalidation of complete 2nd level cache @@ -76,31 +92,76 @@ public boolean enqueue( @Nonnull UUID subscriptionResourceId, @Nonnull String fh try { - return query.getResultList().stream().anyMatch( requestId::equals ); + query.executeUpdate(); } catch ( PersistenceException e ) { - if ( e.getCause() instanceof ConstraintViolationException ) + final RuntimeException runtimeException = DataAccessUtils.translateIfNecessary( e, persistenceExceptionTranslator ); + if ( runtimeException instanceof DataIntegrityViolationException ) { - logger.error( "Could not process enqueue request for subscription resource {} and FHIR resource {} due to constraint violation: {}", - subscriptionResourceId, fhirResourceId, e.getCause().getMessage() ); - throw new IgnoredSubscriptionResourceException( "Subscription resource " + subscriptionResourceId + " does no longer exist.", e ); + final DataIntegrityViolationException dataIntegrityViolationException = + (DataIntegrityViolationException) runtimeException; + if ( SqlExceptionUtils.isUniqueKeyViolation( dataIntegrityViolationException.getMostSpecificCause() ) ) + { + throw new AlreadyQueuedException(); + } + if ( SqlExceptionUtils.isForeignKeyViolation( dataIntegrityViolationException.getMostSpecificCause() ) ) + { + logger.error( "Could not process enqueue request for subscription resource {} and FHIR resource {} due to constraint violation: {}", + subscriptionResourceId, fhirResourceId, e.getCause().getMessage() ); + throw new IgnoredSubscriptionResourceException( "Subscription resource " + subscriptionResourceId + " does no longer exist.", e ); + } } - throw e; + throw runtimeException; } } - @Transactional @Override public boolean dequeued( @Nonnull UUID subscriptionResourceId, @Nonnull String fhirResourceId ) { // First an enqueue must be tried. There may still be a pending not committed enqueue. // This must be deleted. The pending enqueue will block this enqueue until it has been committed. - enqueue( subscriptionResourceId, fhirResourceId, "?" ); + TransactionStatus transactionStatus = platformTransactionManager + .getTransaction( new DefaultTransactionDefinition( PROPAGATION_REQUIRES_NEW ) ); + try + { + enqueue( subscriptionResourceId, fhirResourceId, "?" ); + } + catch ( AlreadyQueuedException e ) + { + // can be ignored + } + finally + { + if ( transactionStatus.isRollbackOnly() ) + { + platformTransactionManager.rollback( transactionStatus ); + } + else + { + platformTransactionManager.commit( transactionStatus ); + } + } - final Query query = entityManager.createQuery( "DELETE FROM QueuedRemoteFhirResource " + - "WHERE id.remoteSubscriptionResource.id=:subscriptionResourceId AND id.fhirResourceId=:fhirResourceId" ) - .setParameter( "subscriptionResourceId", subscriptionResourceId ).setParameter( "fhirResourceId", fhirResourceId ); - return (query.executeUpdate() > 0); + transactionStatus = platformTransactionManager + .getTransaction( new DefaultTransactionDefinition() ); + try + { + final Query query = entityManager.createQuery( "DELETE FROM QueuedRemoteFhirResource " + + "WHERE id.remoteSubscriptionResource.id=:subscriptionResourceId AND id.fhirResourceId=:fhirResourceId" ) + .setParameter( "subscriptionResourceId", subscriptionResourceId ).setParameter( "fhirResourceId", fhirResourceId ); + return (query.executeUpdate() > 0); + } + finally + { + if ( transactionStatus.isRollbackOnly() ) + { + platformTransactionManager.rollback( transactionStatus ); + } + else + { + platformTransactionManager.commit( transactionStatus ); + } + } } } diff --git a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/impl/CustomQueuedRemoteSubscriptionRequestRepositoryImpl.java b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/impl/CustomQueuedRemoteSubscriptionRequestRepositoryImpl.java index afb33517..2fab3a65 100644 --- a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/impl/CustomQueuedRemoteSubscriptionRequestRepositoryImpl.java +++ b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/impl/CustomQueuedRemoteSubscriptionRequestRepositoryImpl.java @@ -29,13 +29,20 @@ */ import org.dhis2.fhir.adapter.fhir.data.model.QueuedRemoteSubscriptionRequest; +import org.dhis2.fhir.adapter.fhir.data.repository.AlreadyQueuedException; import org.dhis2.fhir.adapter.fhir.data.repository.CustomQueuedRemoteSubscriptionRequestRepository; import org.dhis2.fhir.adapter.fhir.data.repository.IgnoredSubscriptionResourceException; -import org.hibernate.exception.ConstraintViolationException; import org.hibernate.query.NativeQuery; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.dao.support.DataAccessUtils; +import org.springframework.dao.support.PersistenceExceptionTranslator; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.DefaultTransactionDefinition; import javax.annotation.Nonnull; import javax.persistence.EntityManager; @@ -45,6 +52,8 @@ import java.time.Instant; import java.util.UUID; +import static org.springframework.transaction.TransactionDefinition.PROPAGATION_REQUIRES_NEW; + /** * Implementation of {@link CustomQueuedRemoteSubscriptionRequestRepository}. * @@ -57,48 +66,100 @@ public class CustomQueuedRemoteSubscriptionRequestRepositoryImpl implements Cust @PersistenceContext private EntityManager entityManager; - public CustomQueuedRemoteSubscriptionRequestRepositoryImpl( @Nonnull EntityManager entityManager ) + private PlatformTransactionManager platformTransactionManager; + + private PersistenceExceptionTranslator persistenceExceptionTranslator; + + public CustomQueuedRemoteSubscriptionRequestRepositoryImpl( @Nonnull EntityManager entityManager, + @Nonnull PlatformTransactionManager platformTransactionManager, @Nonnull @Qualifier( "&entityManagerFactory" ) PersistenceExceptionTranslator persistenceExceptionTranslator ) { this.entityManager = entityManager; + this.platformTransactionManager = platformTransactionManager; + this.persistenceExceptionTranslator = persistenceExceptionTranslator; } - @Transactional + @Transactional( rollbackFor = AlreadyQueuedException.class ) @Override @SuppressWarnings( "unchecked" ) - public boolean enqueue( @Nonnull UUID subscriptionResourceId, @Nonnull String requestId ) + public void enqueue( @Nonnull UUID subscriptionResourceId, @Nonnull String requestId ) throws AlreadyQueuedException { - final Query query = entityManager.createNativeQuery( "INSERT INTO fhir_queued_remote_subscription_request(id,request_id,queued_at) " + - "VALUES (:id,:requestId,:queuedAt) ON CONFLICT ON CONSTRAINT fhir_queued_remote_subscription_request_pk DO NOTHING RETURNING request_id" ) + final Query query = entityManager.createNativeQuery( "INSERT INTO fhir_queued_remote_subscription_request" + + "(id,request_id,queued_at) VALUES (:id,:requestId,:queuedAt)" ) .setParameter( "id", subscriptionResourceId ).setParameter( "requestId", requestId ).setParameter( "queuedAt", Instant.now() ); // avoid invalidation of complete 2nd level cache query.unwrap( NativeQuery.class ).addSynchronizedEntityClass( QueuedRemoteSubscriptionRequest.class ); try { - return query.getResultList().stream().anyMatch( requestId::equals ); + query.executeUpdate(); } catch ( PersistenceException e ) { - if ( e.getCause() instanceof ConstraintViolationException ) + final RuntimeException runtimeException = DataAccessUtils.translateIfNecessary( e, persistenceExceptionTranslator ); + if ( runtimeException instanceof DataIntegrityViolationException ) { - logger.error( "Could not process enqueue request for subscription resource {} due to constraint violation: {}", - subscriptionResourceId, e.getCause().getMessage() ); - throw new IgnoredSubscriptionResourceException( "Subscription resource " + subscriptionResourceId + " does no longer exist.", e ); + final DataIntegrityViolationException dataIntegrityViolationException = + (DataIntegrityViolationException) runtimeException; + if ( SqlExceptionUtils.isUniqueKeyViolation( dataIntegrityViolationException.getMostSpecificCause() ) ) + { + throw new AlreadyQueuedException(); + } + if ( SqlExceptionUtils.isForeignKeyViolation( dataIntegrityViolationException.getMostSpecificCause() ) ) + { + logger.error( "Could not process enqueue request for subscription resource {} due to constraint violation: {}", + subscriptionResourceId, e.getCause().getMessage() ); + throw new IgnoredSubscriptionResourceException( "Subscription resource " + subscriptionResourceId + " does no longer exist.", e ); + } } - throw e; + throw runtimeException; } } - @Transactional @Override public boolean dequeued( @Nonnull UUID subscriptionResourceId ) { // First an enqueue must be tried. There may still be a pending not committed enqueue. // This must be deleted. The pending enqueue will block this enqueue until it has been committed. - enqueue( subscriptionResourceId, "?" ); + TransactionStatus transactionStatus = platformTransactionManager + .getTransaction( new DefaultTransactionDefinition( PROPAGATION_REQUIRES_NEW ) ); + try + { + enqueue( subscriptionResourceId, "?" ); + } + catch ( AlreadyQueuedException e ) + { + // can be ignored + } + finally + { + if ( transactionStatus.isRollbackOnly() ) + { + platformTransactionManager.rollback( transactionStatus ); + } + else + { + platformTransactionManager.commit( transactionStatus ); + } + } - final Query query = entityManager.createQuery( "DELETE FROM QueuedRemoteSubscriptionRequest WHERE id=:id" ) - .setParameter( "id", subscriptionResourceId ); - return (query.executeUpdate() > 0); + transactionStatus = platformTransactionManager + .getTransaction( new DefaultTransactionDefinition() ); + try + { + final Query query = entityManager.createQuery( "DELETE FROM QueuedRemoteSubscriptionRequest WHERE id=:id" ) + .setParameter( "id", subscriptionResourceId ); + return (query.executeUpdate() > 0); + } + finally + { + if ( transactionStatus.isRollbackOnly() ) + { + platformTransactionManager.rollback( transactionStatus ); + } + else + { + platformTransactionManager.commit( transactionStatus ); + } + } } } diff --git a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/impl/SqlExceptionUtils.java b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/impl/SqlExceptionUtils.java new file mode 100644 index 00000000..ead861e0 --- /dev/null +++ b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/data/repository/impl/SqlExceptionUtils.java @@ -0,0 +1,75 @@ +package org.dhis2.fhir.adapter.fhir.data.repository.impl; + +/* + * Copyright (c) 2004-2018, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import javax.annotation.Nullable; +import java.sql.SQLException; + +/** + * Utility class for handling SQL exception types. + * + * @author volsch + */ +public abstract class SqlExceptionUtils +{ + protected static final String UNIQUE_KEY_VIOLATION_ERROR_CODE = "23505"; + + protected static final String FOREIGN_KEY_VIOLATION_ERROR_CODE = "23503"; + + public static boolean isUniqueKeyViolation( @Nullable Throwable exception ) + { + if ( exception == null ) + { + return false; + } + if ( !(exception instanceof SQLException) ) + { + return false; + } + return UNIQUE_KEY_VIOLATION_ERROR_CODE.equals( ((SQLException) exception).getSQLState() ); + } + + public static boolean isForeignKeyViolation( @Nullable Throwable exception ) + { + if ( exception == null ) + { + return false; + } + if ( !(exception instanceof SQLException) ) + { + return false; + } + return FOREIGN_KEY_VIOLATION_ERROR_CODE.equals( ((SQLException) exception).getSQLState() ); + } + + private SqlExceptionUtils() + { + super(); + } +} diff --git a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/AbstractRule.java b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/AbstractRule.java index 45be74e5..20bac03e 100644 --- a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/AbstractRule.java +++ b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/AbstractRule.java @@ -228,7 +228,7 @@ public void setTransformInScript( ExecutableScript transformInScript ) this.transformInScript = transformInScript; } - @Column( name = "contained_allowed", nullable = false ) + @Column( name = "contained_allowed", nullable = false, columnDefinition = "BOOLEAN DEFAULT FALSE NOT NULL" ) public boolean isContainedAllowed() { return containedAllowed; diff --git a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/ExecutableScriptArg.java b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/ExecutableScriptArg.java index a01de593..c03805e8 100644 --- a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/ExecutableScriptArg.java +++ b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/ExecutableScriptArg.java @@ -122,7 +122,7 @@ public void setArgument( ScriptArg argument ) } @Basic - @Column( name = "enabled", nullable = false ) + @Column( name = "enabled", nullable = false, columnDefinition = "BOOLEAN DEFAULT TRUE NOT NULL" ) public boolean isEnabled() { return enabled; diff --git a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/MappedTrackedEntity.java b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/MappedTrackedEntity.java index 05b14b56..8178b9c5 100644 --- a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/MappedTrackedEntity.java +++ b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/MappedTrackedEntity.java @@ -96,7 +96,7 @@ public void setDescription( String description ) } @Basic - @Column( name = "enabled" ) + @Column( name = "enabled", nullable = false, columnDefinition = "BOOLEAN DEFAULT TRUE NOT NULL" ) public boolean isEnabled() { return enabled; diff --git a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/ScriptArg.java b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/ScriptArg.java index 77593824..4f534cd7 100644 --- a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/ScriptArg.java +++ b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/ScriptArg.java @@ -125,7 +125,7 @@ public void setMandatory( boolean mandatory ) } @Basic - @Column( name = "array_value", nullable = false ) + @Column( name = "array_value", nullable = false, columnDefinition = "BOOLEAN DEFAULT FALSE NOT NULL" ) public boolean isArray() { return array; diff --git a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/System.java b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/System.java index e519c627..7d514a32 100644 --- a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/System.java +++ b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/System.java @@ -103,7 +103,7 @@ public void setSystemUri( String systemUri ) } @Basic - @Column( name = "enabled", nullable = false ) + @Column( name = "enabled", nullable = false, columnDefinition = "BOOLEAN DEFAULT TRUE NOT NULL" ) public boolean isEnabled() { return enabled; @@ -127,7 +127,7 @@ public void setDescription( String description ) } @Basic - @Column( name = "description_protected", nullable = false, updatable = false ) + @Column( name = "description_protected", nullable = false, updatable = false, columnDefinition = "BOOLEAN DEFAULT FALSE NOT NULL" ) public boolean isDescriptionProtected() { return descriptionProtected; diff --git a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/VersionedBaseMetadata.java b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/VersionedBaseMetadata.java index bd15da1f..54192177 100644 --- a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/VersionedBaseMetadata.java +++ b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/metadata/model/VersionedBaseMetadata.java @@ -76,7 +76,7 @@ public void setId( UUID id ) } @Version - @Column( name = "version", nullable = false ) + @Column( name = "version", nullable = false, columnDefinition = "BIGINT DEFAULT 0 NOT NULL" ) public Long getVersion() { return version; @@ -88,7 +88,7 @@ public void setVersion( Long version ) } @Basic - @Column( name = "created_at", nullable = false, updatable = false ) + @Column( name = "created_at", nullable = false, updatable = false, columnDefinition = "TIMESTAMP(3) WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP() NOT NULL" ) public Instant getCreatedAt() { return createdAt; @@ -112,7 +112,7 @@ public void setLastUpdatedBy( String lastUpdatedBy ) } @Basic - @Column( name = "last_updated_at", nullable = false ) + @Column( name = "last_updated_at", nullable = false, columnDefinition = "TIMESTAMP(3) WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP() NOT NULL" ) @LastModifiedDate public Instant getLastUpdatedAt() { diff --git a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/remote/impl/RemoteRestHookProcessorImpl.java b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/remote/impl/RemoteRestHookProcessorImpl.java index 7135919b..afe4c4ba 100644 --- a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/remote/impl/RemoteRestHookProcessorImpl.java +++ b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/remote/impl/RemoteRestHookProcessorImpl.java @@ -30,6 +30,7 @@ import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; import org.dhis2.fhir.adapter.fhir.data.model.ProcessedRemoteFhirResource; +import org.dhis2.fhir.adapter.fhir.data.repository.AlreadyQueuedException; import org.dhis2.fhir.adapter.fhir.data.repository.IgnoredSubscriptionResourceException; import org.dhis2.fhir.adapter.fhir.data.repository.ProcessedRemoteFhirResourceRepository; import org.dhis2.fhir.adapter.fhir.data.repository.QueuedRemoteFhirResourceRepository; @@ -50,8 +51,12 @@ import org.springframework.jms.core.JmsTemplate; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.TransactionDefinition; +import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.DefaultTransactionDefinition; import javax.annotation.Nonnull; import java.time.Instant; @@ -90,6 +95,8 @@ public class RemoteRestHookProcessorImpl implements RemoteRestHookProcessor private final Map bundleRetrievers = new HashMap<>(); + private final PlatformTransactionManager platformTransactionManager; + private final JmsTemplate webHookRequestQueueJmsTemplate; private final JmsTemplate fhirResourceQueueJmsTemplate; @@ -105,6 +112,7 @@ public RemoteRestHookProcessorImpl( @Nonnull RemoteProcessorConfig processorConf @Nonnull ProcessedRemoteFhirResourceRepository processedRemoteFhirResourceRepository, @Nonnull QueuedRemoteFhirResourceRepository queuedRemoteFhirResourceRepository, @Nonnull ObjectProvider> bundleRetrievers, + @Nonnull PlatformTransactionManager platformTransactionManager, @Nonnull @Qualifier( "webHookRequestQueueJmsTemplate" ) JmsTemplate webHookRequestQueueJmsTemplate, @Nonnull @Qualifier( "fhirResourceQueueJmsTemplate" ) JmsTemplate fhirResourceQueueJmsTemplate ) { @@ -114,6 +122,7 @@ public RemoteRestHookProcessorImpl( @Nonnull RemoteProcessorConfig processorConf this.remoteSubscriptionResourceUpdateRepository = remoteSubscriptionResourceUpdateRepository; this.processedRemoteFhirResourceRepository = processedRemoteFhirResourceRepository; this.queuedRemoteFhirResourceRepository = queuedRemoteFhirResourceRepository; + this.platformTransactionManager = platformTransactionManager; this.webHookRequestQueueJmsTemplate = webHookRequestQueueJmsTemplate; this.fhirResourceQueueJmsTemplate = fhirResourceQueueJmsTemplate; @@ -126,32 +135,47 @@ public RemoteRestHookProcessorImpl( @Nonnull RemoteProcessorConfig processorConf } @HystrixCommand - @Transactional @Override public void received( @Nonnull UUID remoteSubscriptionResourceId, @Nonnull String requestId ) { - logger.debug( "Checking for a queued entry of remote subscription resource {}.", remoteSubscriptionResourceId ); + final TransactionStatus transactionStatus = platformTransactionManager.getTransaction( new DefaultTransactionDefinition() ); try { - if ( !queuedRemoteSubscriptionRequestRepository.enqueue( remoteSubscriptionResourceId, requestId ) ) + logger.debug( "Checking for a queued entry of remote subscription resource {}.", remoteSubscriptionResourceId ); + try + { + queuedRemoteSubscriptionRequestRepository.enqueue( remoteSubscriptionResourceId, requestId ); + } + catch ( AlreadyQueuedException e ) { logger.debug( "There is already a queued entry for remote subscription resource {}.", remoteSubscriptionResourceId ); return; } + catch ( IgnoredSubscriptionResourceException e ) + { + // has already been logger with sufficient details + return; + } + + logger.debug( "Enqueuing entry for remote subscription resource {}.", remoteSubscriptionResourceId ); + webHookRequestQueueJmsTemplate.convertAndSend( new RemoteRestHookRequest( remoteSubscriptionResourceId, ZonedDateTime.now() ), message -> { + // only one message for a remote subscription resource must be processed at a specific time (grouping) + message.setStringProperty( "JMSXGroupID", remoteSubscriptionResourceId.toString() ); + return message; + } ); + logger.info( "Enqueued entry for remote subscription resource {}.", remoteSubscriptionResourceId ); } - catch ( IgnoredSubscriptionResourceException e ) + finally { - // has already been logger with sufficient details - return; + if ( transactionStatus.isRollbackOnly() ) + { + platformTransactionManager.rollback( transactionStatus ); + } + else + { + platformTransactionManager.commit( transactionStatus ); + } } - - logger.debug( "Enqueuing entry for remote subscription resource {}.", remoteSubscriptionResourceId ); - webHookRequestQueueJmsTemplate.convertAndSend( new RemoteRestHookRequest( remoteSubscriptionResourceId, ZonedDateTime.now() ), message -> { - // only one message for a remote subscription resource must be processed at a specific time (grouping) - message.setStringProperty( "JMSXGroupID", remoteSubscriptionResourceId.toString() ); - return message; - } ); - logger.info( "Enqueued entry for remote subscription resource {}.", remoteSubscriptionResourceId ); } @HystrixCommand @@ -215,26 +239,36 @@ protected void receiveAuthenticated( @Nonnull RemoteRestHookRequest remoteRestHo { // persist processed remote FHIR resource and processedRemoteFhirResourceRepository.process( new ProcessedRemoteFhirResource( remoteSubscriptionResource, versionedId, processedAt ), p -> { + final TransactionStatus transactionStatus = platformTransactionManager.getTransaction( new DefaultTransactionDefinition( TransactionDefinition.PROPAGATION_NOT_SUPPORTED ) ); try { - if ( queuedRemoteFhirResourceRepository.enqueue( remoteSubscriptionResource.getId(), sr.getId(), requestId ) ) + queuedRemoteFhirResourceRepository.enqueue( remoteSubscriptionResource.getId(), sr.getId(), requestId ); + fhirResourceQueueJmsTemplate.convertAndSend( + new RemoteFhirResource( remoteSubscriptionResource.getId(), sr.getId(), sr.getVersion(), sr.getLastUpdated() ) ); + logger.debug( "FHIR Resource {} of remote subscription resource {} has been enqueued.", + sr.getId(), remoteSubscriptionResource.getId() ); + count.incrementAndGet(); + } + catch ( AlreadyQueuedException e ) + { + logger.debug( "FHIR Resource {} of remote subscription resource {} is still queued.", + sr.getId(), remoteSubscriptionResource.getId() ); + } + catch ( IgnoredSubscriptionResourceException e ) + { + // has already been logger with sufficient details + } + finally + { + if ( transactionStatus.isRollbackOnly() ) { - fhirResourceQueueJmsTemplate.convertAndSend( - new RemoteFhirResource( remoteSubscriptionResource.getId(), sr.getId(), sr.getVersion(), sr.getLastUpdated() ) ); - logger.debug( "FHIR Resource {} of remote subscription resource {} has been enqueued.", - sr.getId(), remoteSubscriptionResource.getId() ); - count.incrementAndGet(); + platformTransactionManager.rollback( transactionStatus ); } else { - logger.debug( "FHIR Resource {} of remote subscription resource {} is still queued.", - sr.getId(), remoteSubscriptionResource.getId() ); + platformTransactionManager.commit( transactionStatus ); } } - catch ( IgnoredSubscriptionResourceException e ) - { - // has already been logger with sufficient details - } } ); } } ); diff --git a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/transform/impl/AbstractFhirToDhisTransformer.java b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/transform/impl/AbstractFhirToDhisTransformer.java index 002dd309..7f146d3e 100644 --- a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/transform/impl/AbstractFhirToDhisTransformer.java +++ b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/transform/impl/AbstractFhirToDhisTransformer.java @@ -236,7 +236,7 @@ protected Optional getTrackedEntityInstanceByIdentifier( { return Optional.empty(); } - identifier = createFullQualifiedTrackedEntityInstanceIdentifier( context, identifier ); + identifier = createFullQualifiedTrackedEntityInstanceIdentifier( context, baseResource, identifier ); final TrackedEntityAttributes trackedEntityAttributes = getScriptVariable( scriptVariables, ScriptVariable.TRACKED_ENTITY_ATTRIBUTES, TrackedEntityAttributes.class ); final TrackedEntityAttribute identifierAttribute = trackedEntityAttributes.getOptional( rule.getTrackedEntity().getTrackedEntityIdentifierReference() ) @@ -264,9 +264,14 @@ protected Optional getTrackedEntityInstanceByIdentifier( return result.stream().peek( tei -> tei.setIdentifier( finalIdentifier ) ).findFirst(); } - protected String createFullQualifiedTrackedEntityInstanceIdentifier( @Nonnull FhirToDhisTransformerContext context, String identifier ) + protected String createFullQualifiedTrackedEntityInstanceIdentifier( @Nonnull FhirToDhisTransformerContext context, IBaseResource baseResource, String identifier ) { - final ResourceSystem resourceSystem = context.getFhirRequest().getResourceSystem( context.getFhirRequest().getResourceType() ); + final FhirResourceType fhirResourceType = FhirResourceType.getByResource( baseResource ); + if ( fhirResourceType == null ) + { + return identifier; + } + final ResourceSystem resourceSystem = context.getFhirRequest().getResourceSystem( fhirResourceType ); if ( (resourceSystem != null) && StringUtils.isNotBlank( resourceSystem.getCodePrefix() ) ) { identifier = resourceSystem.getCodePrefix() + identifier; diff --git a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/transform/impl/trackedentity/FhirToTrackedEntityTransformer.java b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/transform/impl/trackedentity/FhirToTrackedEntityTransformer.java index 36d43d32..3fd9042c 100644 --- a/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/transform/impl/trackedentity/FhirToTrackedEntityTransformer.java +++ b/fhir/src/main/java/org/dhis2/fhir/adapter/fhir/transform/impl/trackedentity/FhirToTrackedEntityTransformer.java @@ -229,9 +229,14 @@ protected TrackedEntityInstance createResource( @Nonnull FhirToDhisTransformerCo return null; } - if ( rule.getTeiLookupScript() != null ) + final IBaseResource resource; + if ( rule.getTeiLookupScript() == null ) + { + resource = getScriptVariable( scriptVariables, ScriptVariable.INPUT, IBaseResource.class ); + } + else { - final IBaseResource resource = getScriptExecutor().execute( rule.getTeiLookupScript(), context.getFhirRequest().getVersion(), scriptVariables, IBaseResource.class ); + resource = getScriptExecutor().execute( rule.getTeiLookupScript(), context.getFhirRequest().getVersion(), scriptVariables, IBaseResource.class ); if ( resource == null ) { return null; @@ -244,7 +249,7 @@ protected TrackedEntityInstance createResource( @Nonnull FhirToDhisTransformerCo { return null; } - identifier = createFullQualifiedTrackedEntityInstanceIdentifier( context, identifier ); + identifier = createFullQualifiedTrackedEntityInstanceIdentifier( context, resource, identifier ); final TrackedEntityInstance trackedEntityInstance = new TrackedEntityInstance( getScriptVariable( scriptVariables, ScriptVariable.TRACKED_ENTITY_TYPE, TrackedEntityType.class ), id, true ); diff --git a/fhir/src/test/resources/test.properties b/fhir/src/test/resources/test.properties index bfef2a46..5fb4ef5d 100644 --- a/fhir/src/test/resources/test.properties +++ b/fhir/src/test/resources/test.properties @@ -26,7 +26,6 @@ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # - spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1 spring.datasource.username=sa spring.datasource.driver-class-name=org.h2.Driver diff --git a/pom.xml b/pom.xml index 1b438531..6d5ac22b 100644 --- a/pom.xml +++ b/pom.xml @@ -210,6 +210,13 @@ guava 25.0-jre + + + com.github.tomakehurst + wiremock + 2.19.0 + test +