Пример #1
0
        public Attempt <IValueSet> Patch(ValueSetPatchParameters parameters)
        {
            return(this.AttemptValueSetAlteration(parameters.ValueSetGuid, PatchAlteration));

            void PatchAlteration(ValueSetDescriptionBaseDto vsd)
            {
                if (GetValueSetStatus(vsd.StatusCD) != ValueSetStatus.Draft)
                {
                    throw new ValueSetOperationException(
                              $"Could not add or remove codes from ValueSet.  ValueSet must have a status of `{ValueSetStatus.Draft.ToString()}`.  ValueSet had a status of {vsd.StatusCD}");
                }

                vsd.SourceDSC     = parameters.ValueSetMeta.SourceDescription;
                vsd.ValueSetNM    = parameters.Name;
                vsd.AuthorityDSC  = parameters.ValueSetMeta.AuthorityDescription;
                vsd.ClientCD      = parameters.ValueSetMeta.ClientCode;
                vsd.DefinitionDSC = parameters.ValueSetMeta.DefinitionDescription;

                var updateOp = new Operation {
                    OperationType = OperationType.Update, Value = vsd
                };

                var operations = new List <Operation> {
                    updateOp
                };

                var work = this.PrepareAddRemoveCodes(
                    parameters.ValueSetGuid,
                    parameters.CodesToAdd.ToList(),
                    parameters.CodesToRemove.ToList());

                operations.AddRange(work.Operations);

                var uow = this.uowManager.CreateUnitOfWork(operations);

                uow.Commit();

                var bulkInsertUow = this.uowManager.CreateBulkCopyUnitOfWork(work.NewCodeDtos);

                bulkInsertUow.Commit();
            }
        }
Пример #2
0
        public Attempt <IValueSet> Patch(ValueSetPatchParameters parameters)
        {
            return(this.clientTermValueSetRepository.GetValueSet(parameters.ValueSetGuid)
                   .Select(
                       vs =>
            {
                if (!vs.Name.Equals(parameters.Name, StringComparison.OrdinalIgnoreCase) && !this.NameIsUnique(parameters.Name))
                {
                    return Attempt <IValueSet> .Failed(new ArgumentException($"A value set named '{parameters.Name}' already exists."));
                }

                if (!this.ValidateValueSetMeta(parameters.ValueSetMeta, out var msg))
                {
                    return Attempt <IValueSet> .Failed(new ArgumentException(msg));
                }

                return this.clientTermValueSetRepository.Patch(parameters);
            })
                   .Else(Attempt <IValueSet>
                         .Failed(new InvalidOperationException(FormattableString.Invariant($"ValueSet with ValueSetGUID {parameters.ValueSetGuid} was not found.")))));
        }