Example #1
0
        public void GivenATransactionContextAndImagingStudyWithNewEndpointReference_WhenProcessedForStudyWithEndpoint_ThenEndpointIsAdded()
        {
            ImagingStudy imagingStudy = FhirResourceBuilder.CreateNewImagingStudy(DefaultStudyInstanceUid, new List <string>()
            {
                DefaultSeriesInstanceUid
            }, new List <string>()
            {
                DefaultSopInstanceUid
            }, DefaultPatientResourceId);

            // Simulate the imaging study with an existing endpoint.
            Endpoint existingEndpoint           = FhirResourceBuilder.CreateEndpointResource(id: "2345", name: "new wado-rs");
            var      existingEndpointResourceId = new ServerResourceId(ResourceType.Endpoint, existingEndpoint.Id);
            var      existingEndpointReference  = existingEndpointResourceId.ToResourceReference();

            imagingStudy.Endpoint.Add(existingEndpointReference);

            Endpoint endpoint           = FhirResourceBuilder.CreateEndpointResource();
            var      endpointResourceId = new ServerResourceId(ResourceType.Endpoint, endpoint.Id);
            var      endpointReference  = endpointResourceId.ToResourceReference();

            FhirTransactionContext context = FhirTransactionContextBuilder.DefaultFhirTransactionContext(FhirTransactionContextBuilder.CreateDicomDataset());

            context.Request.Endpoint = FhirTransactionRequestEntryGenerator.GenerateDefaultNoChangeRequestEntry <Endpoint>(endpointResourceId);

            _imagingStudyPropertySynchronizer.Synchronize(context, imagingStudy);

            Assert.Collection(
                imagingStudy.Endpoint,
                endPoint => Assert.Equal(existingEndpointReference, endPoint),
                endPoint => Assert.Equal(endpointReference, endPoint));
        }
        public static void ValidateRequestEntryMinimumRequirementForWithChange(
            FhirTransactionRequestMode expectedRequestMode,
            string path,
            Bundle.HTTPVerb?expectedMethod,
            FhirTransactionRequestEntry actualEntry)
        {
            // For request entry with no change, use the method below.
            Assert.NotEqual(FhirTransactionRequestMode.None, expectedRequestMode);

            Assert.NotNull(actualEntry);
            Assert.Equal(expectedRequestMode, actualEntry.RequestMode);

            if (expectedRequestMode == FhirTransactionRequestMode.Create)
            {
                // If the request mode is create, then it should be client generated resource id.
                Assert.IsType <ClientResourceId>(actualEntry.ResourceId);
            }
            else if (expectedRequestMode == FhirTransactionRequestMode.Update)
            {
                // Otherwise, it should be server generated resource id.
                ServerResourceId serverResourceId = Assert.IsType <ServerResourceId>(actualEntry.ResourceId);

                Assert.Equal(path, serverResourceId.ToString());
            }

            Assert.NotNull(actualEntry.Request);
            Assert.Equal(expectedMethod, actualEntry.Request.Method);
            Assert.Equal(path, actualEntry.Request.Url);

            if (expectedMethod != Bundle.HTTPVerb.DELETE)
            {
                Assert.NotNull(actualEntry.Resource);
            }
        }
Example #3
0
        public async Task GivenATransactionContextAndImagingStudyWithExistingEndpointReference_WhenProcessedForStudy_ThenEndpointResourceIsNotAddedAsync()
        {
            ImagingStudy imagingStudy = FhirResourceBuilder.CreateNewImagingStudy(DefaultStudyInstanceUid, new List <string>()
            {
                DefaultSeriesInstanceUid
            }, new List <string>()
            {
                DefaultSopInstanceUid
            }, DefaultPatientResourceId);
            Endpoint endpoint           = FhirResourceBuilder.CreateEndpointResource();
            var      endpointResourceId = new ServerResourceId(ResourceType.Endpoint, endpoint.Id);
            var      endpointReference  = endpointResourceId.ToResourceReference();

            FhirTransactionContext context = FhirTransactionContextBuilder.DefaultFhirTransactionContext(FhirTransactionContextBuilder.CreateDicomDataset());

            context.Request.Endpoint = FhirTransactionRequestEntryGenerator.GenerateDefaultNoChangeRequestEntry <Endpoint>(endpointResourceId);

            imagingStudy.Endpoint.Add(endpointReference);

            await _imagingStudyPropertySynchronizer.SynchronizeAsync(context, imagingStudy);

            Assert.Collection(
                imagingStudy.Endpoint,
                endPoint => Assert.Equal(endpointReference, endPoint));
        }
        public static void ValidateRequestEntryMinimumRequirementForNoChange(ServerResourceId expectedResourceId, FhirTransactionRequestEntry actualEntry)
        {
            Assert.NotNull(actualEntry);
            Assert.Equal(FhirTransactionRequestMode.None, actualEntry.RequestMode);

            // No update means the resource already exists and nothing has changed,
            // so it should still have server generated resource id.
            ServerResourceId serverResourceId = Assert.IsType <ServerResourceId>(actualEntry.ResourceId);

            Assert.Equal(expectedResourceId, serverResourceId);

            Assert.Null(actualEntry.Request);
        }
        public void GivenDifferentServerResourceId_WhenHashCodeIsComputed_ThenHashCodeShouldBeDifferent(ResourceType resourceType, string resourceId)
        {
            var newServerResourceId = new ServerResourceId(resourceType, resourceId);

            Assert.NotEqual(ServerResourceId.GetHashCode(), newServerResourceId.GetHashCode());
        }
        public void GivenSameServerResourceId_WhenHashCodeIsComputed_ThenTheSameHashCodeShouldBeGenerated()
        {
            var newServerResourceId = new ServerResourceId(DefaultResourceType, DefaultResourceId);

            Assert.Equal(ServerResourceId.GetHashCode(), newServerResourceId.GetHashCode());
        }
 public static FhirTransactionRequestEntry GenerateDefaultNoChangeRequestEntry <TResource>(ServerResourceId resourceId)
     where TResource : Resource, new()
 {
     return(new FhirTransactionRequestEntry(
                FhirTransactionRequestMode.None,
                request: null,
                resourceId,
                new TResource()));
 }
 public static FhirTransactionRequestEntry GenerateDefaultUpdateRequestEntry <TResource>(ServerResourceId resourceId)
     where TResource : Resource, new()
 {
     return(new FhirTransactionRequestEntry(
                FhirTransactionRequestMode.Update,
                new Bundle.RequestComponent()
     {
         Method = Bundle.HTTPVerb.PUT,
     },
                resourceId,
                new TResource()));
 }