private void Awake()
    {
        instance = this;

        baseSeed = PlayerPrefs.GetInt(seedPlayerprefsKey.Value, -1);
        if (baseSeed < 0)
        {
            baseSeed = Random.Range(0, int.MaxValue);
        }
        baseRandom = new System.Random(baseSeed);

        cliemtDestinationSeed   = baseRandom.Next();
        optionalObjectiveSeed   = baseRandom.Next();
        cliemtDestinationRandom = new System.Random(cliemtDestinationSeed);
        optionalObjectiveRandom = new System.Random(optionalObjectiveSeed);
    }
        public async Task TestResourceHasValidReferenceShouldUseExistingSeed()
        {
            var seedManager = new RandomSeedManager();
            var repository  = new IotaFhirRepository(
                IotaResourceProvider.Repository,
                new FhirJsonTryteSerializer(),
                new InMemoryResourceTracker(),
                seedManager);

            var reference = $"did:iota:JHAGDJAHDJAHGDAJHGD";
            await seedManager.AddReferenceAsync(reference, Seed.Random());

            var observation = new Observation {
                Subject = new ResourceReference(reference)
            };
            var resource = await repository.CreateResourceAsync(observation);

            Assert.AreEqual(1, seedManager.References.Count);
        }
        public async Task TestResourceCreationOnTangleShouldAssignHashesAsIds()
        {
            var resourceTracker = new InMemoryResourceTracker();
            var seedManager     = new RandomSeedManager();
            var repository      = new IotaFhirRepository(
                IotaResourceProvider.Repository,
                new FhirJsonTryteSerializer(),
                resourceTracker,
                seedManager);
            var resource = await repository.CreateResourceAsync(FhirResourceProvider.Patient);

            Assert.AreEqual(1, Regex.Matches(resource.Id, Id.PATTERN).Count);
            Assert.AreEqual(resource.Id, resource.VersionId);
            Assert.AreEqual(resource.VersionId, resource.Meta.VersionId);

            Assert.AreEqual(DateTime.UtcNow.Day, resource.Meta.LastUpdated?.DateTime.Day);
            Assert.AreEqual(DateTime.UtcNow.Month, resource.Meta.LastUpdated?.DateTime.Month);
            Assert.AreEqual(DateTime.UtcNow.Year, resource.Meta.LastUpdated?.DateTime.Year);

            Assert.IsTrue(InputValidator.IsTrytes(resource.Id));
            Assert.AreEqual(1, resourceTracker.Entries.Count);
            Assert.IsTrue(seedManager.References.Any(e => e.Key == $"did:iota:{resource.Id}"));
        }