Пример #1
0
        private void SetupPatientRepository(CareContextRepresentation alreadyLinked, CareContextRepresentation unlinkedCareContext)
        {
            var testPatient =
                new Patient
            {
                PhoneNumber  = phoneNumber,
                Uuid         = openMrsPatientReferenceNumber,
                Identifier   = openMrsPatientIdentifier,
                Gender       = Faker().PickRandom <Gender>(),
                Name         = name,
                CareContexts = new[]
                {
                    alreadyLinked,
                    unlinkedCareContext
                }
            };

            patientRepository.Setup(x => x.PatientWithAsync(testPatient.Identifier))
            .ReturnsAsync(Option.Some(testPatient));
        }
Пример #2
0
        private async void ShouldReturnPatientForAlreadyLinkedPatient()
        {
            var alreadyLinked =
                new CareContextRepresentation(Faker().Random.Uuid().ToString(), Faker().Random.String());
            var unlinkedCareContext = new List <CareContextRepresentation> {
                new CareContextRepresentation(Faker().Random.Uuid().ToString(), Faker().Random.String())
            };
            var expectedPatient = BuildExpectedPatientByExpectedMatchTypes(
                expectedCareContextRepresentation: unlinkedCareContext,
                expectedMatchTypes: Match.ConsentManagerUserId);
            var discoveryRequest = discoveryRequestBuilder.Build();

            SetupPatientRepository(alreadyLinked, unlinkedCareContext.First());
            SetupLinkRepositoryWithLinkedPatient(alreadyLinked, openMrsPatientIdentifier);

            var(discoveryResponse, error) = await patientDiscovery.PatientFor(discoveryRequest);

            discoveryResponse.Patient.Should().BeEquivalentTo(expectedPatient);
            discoveryRequestRepository.Verify(
                x => x.Add(It.Is <HipService.Discovery.Model.DiscoveryRequest>(
                               r => r.TransactionId == transactionId && r.ConsentManagerUserId == consentManagerUserId)),
                Times.Once);
            error.Should().BeNull();
        }
Пример #3
0
        private void SetupLinkRepositoryWithLinkedPatient(
            CareContextRepresentation linkedCareContextRepresentation, params string[] patientIds)
        {
            var linkedCareContexts =
                linkedCareContextRepresentation switch
            {
                null => new List <CareContextRepresentation> {
                    new CareContextRepresentation(Faker().Random.Uuid().ToString(), Faker().Random.String())
                },
                _ => new List <CareContextRepresentation> {
                    linkedCareContextRepresentation
                }
            };
            var linkedAccounts = patientIds.Select(p =>
                                                   new LinkedAccounts(p,
                                                                      Faker().Random.Hash(),
                                                                      consentManagerUserId,
                                                                      It.IsAny <string>(),
                                                                      linkedCareContexts.Select(c => c.ReferenceNumber).ToList())
                                                   );

            linkPatientRepository.Setup(e => e.GetLinkedCareContexts(consentManagerUserId))
            .ReturnsAsync(new Tuple <IEnumerable <LinkedAccounts>, Exception>(linkedAccounts, null));
        }
Пример #4
0
        private async void ShouldReturnPatientForAlreadyLinkedPatient()
        {
            var patientDiscovery = new PatientDiscovery(
                matchingRepository.Object,
                discoveryRequestRepository.Object,
                linkPatientRepository.Object,
                patientRepository.Object,
                logger.Object);
            var phoneNumber           = Faker().Phone.PhoneNumber();
            var verifiedIdentifiers   = new[] { new Identifier(IdentifierType.MOBILE, phoneNumber) };
            var unverifiedIdentifiers = new[] { new Identifier(IdentifierType.MR, Faker().Random.String()) };
            var patientId             = Faker().Random.String();
            var name          = Faker().Name.FullName();
            var alreadyLinked =
                new CareContextRepresentation(Faker().Random.Uuid().ToString(), Faker().Random.String());
            var unlinkedCareContext =
                new CareContextRepresentation(Faker().Random.Uuid().ToString(), Faker().Random.String());
            var expectedPatient = new PatientEnquiryRepresentation(
                patientId,
                name,
                new[] { unlinkedCareContext },
                new[] { Match.ConsentManagerUserId.ToString() });
            var transactionId  = Faker().Random.String();
            var patientRequest = new PatientEnquiry(patientId,
                                                    verifiedIdentifiers,
                                                    unverifiedIdentifiers,
                                                    name,
                                                    HipLibrary.Patient.Model.Gender.M,
                                                    2019);
            var discoveryRequest  = new DiscoveryRequest(patientRequest, RandomString(), transactionId, DateTime.Now);
            var sessionId         = Faker().Random.Hash();
            var linkedCareContext = new[] { alreadyLinked.ReferenceNumber };
            var testLinkAccounts  = new LinkedAccounts(patientId,
                                                       sessionId,
                                                       Faker().Random.Hash(),
                                                       It.IsAny <string>(),
                                                       linkedCareContext.ToList());
            var testPatient =
                new HipLibrary.Patient.Model.Patient
            {
                PhoneNumber  = phoneNumber,
                Identifier   = patientId,
                Gender       = Faker().PickRandom <HipLibrary.Patient.Model.Gender>(),
                Name         = name,
                CareContexts = new[]
                {
                    alreadyLinked,
                    unlinkedCareContext
                }
            };

            linkPatientRepository.Setup(e => e.GetLinkedCareContexts(patientId))
            .ReturnsAsync(new Tuple <IEnumerable <LinkedAccounts>, Exception>(
                              new List <LinkedAccounts> {
                testLinkAccounts
            },
                              null));
            patientRepository.Setup(x => x.PatientWith(testPatient.Identifier))
            .Returns(Option.Some(testPatient));

            var(discoveryResponse, error) = await patientDiscovery.PatientFor(discoveryRequest);

            discoveryResponse.Patient.Should().BeEquivalentTo(expectedPatient);
            discoveryRequestRepository.Verify(
                x => x.Add(It.Is <HipService.Discovery.Model.DiscoveryRequest>(
                               r => r.TransactionId == transactionId && r.ConsentManagerUserId == patientId)),
                Times.Once);
            error.Should().BeNull();
        }