public async Task <IActionResult> AddSystemItem(SystemItemSetupRequest request)
        {
            _logger.LogDebug("Add Item request received, data: {@NewSystemItemRequest}", request);
            if (ModelState.IsValid)
            {
                var itemSetupCreationResult = await _formularyManager.AddSystemItem(request);

                if (itemSetupCreationResult.OperationResult == CreateUpdateResultEnum.ErrorAlreadyExists)
                {
                    _logger.LogError("Error in saving Item with Item ID {ItemID}:",
                                     request.ItemId);
                    return(BadRequest($"Record already exists with Item ID {request.ItemId}"));
                }

                if (itemSetupCreationResult.OperationResult == CreateUpdateResultEnum.ValidationFailed ||
                    itemSetupCreationResult.OperationResult == CreateUpdateResultEnum.UnknownError)
                {
                    _logger.LogError(
                        "Error in saving ItemSetup due to validation failure for data {@Facility}",
                        request);
                    return(BadRequest($"Error in saving ItemSetup."));
                }
                _logger.LogInformation("Entity has been saved and entity object  {@Itemsetup}:", itemSetupCreationResult.Object);

                //todo: to be updated for Guid
                var timeStamp = (DateTime.Now.Ticks >> 20);              // lose smallest 20 bits
                var autoValue = Convert.ToInt32(timeStamp % 1000000000); // lost left digits to bring in integer range and convert to int

                var eventMessage = new FormularyUpdatedIntegrationEvent()
                {
                    IsActive    = true,
                    FormularyId = autoValue,
                    ItemId      = autoValue,
                    Description = request.Description
                };
                var headers =
                    _httpContextAccessor.HttpContext.Request.Headers
                    .ToDictionary <KeyValuePair <string, StringValues>, string, string>(item => item.Key,
                                                                                        item => item.Value);
                _eventBus.Publish(_configuration[Constants.Topic_Publish_Formulary_Update], eventMessage, headers);
                return(new CreatedResult(
                           itemSetupCreationResult.Object.ToString(),
                           itemSetupCreationResult.Object));
            }
            _logger.LogError("ModelState validation failed :{@Data}", request);
            return(BadRequest(new ModelStateRequestValidationAdaptor(ModelState)));
        }
        public async Task CreateFacilityNegativeBadRequestTest()
        {
            //Arrange
            _mockFormularyManager.Reset();
            _mockFormularyManager
            .Setup(b => b.AddSystemItem(It.IsAny <SystemItemSetupRequest>()))
            .ReturnsAsync(() =>
                          new BusinessResult <SystemItemSetupRequest>(new SystemItemSetupRequest(),
                                                                      CreateUpdateResultEnum.ValidationFailed));
            var badRequest = new SystemItemSetupRequest();
            //Act
            var result = await _subject.AddSystemItem(badRequest);

            var createdResult = result as ObjectResult;

            //Assert
            Assert.NotNull(createdResult);
            Assert.Equal(400, createdResult.StatusCode);
            _mockFormularyManager.Verify();
        }
        public async Task <IActionResult> UpdateItemSetUpById(Guid itemkey, [FromBody] SystemItemSetupRequest medicationItem)
        {
            if (ModelState.IsValid)
            {
                _logger.LogDebug("Update Item SetUp called with {@EditSyatemItemSetUp}", medicationItem);
                var systemItemUpdate = await _systemItemSetUpManager.UpdateSystemItemSetUp(itemkey, medicationItem);

                if (systemItemUpdate.OperationResult == CreateUpdateResultEnum.NotFound)
                {
                    _logger.LogError("No Result Found for item  {itemkey}.", itemkey);
                    return(NotFound($"Item with itemkey key {itemkey} not found."));
                }
                if (systemItemUpdate.OperationResult != CreateUpdateResultEnum.Success)
                {
                    _logger.LogError("There was an error updating System item setup.");
                    return(BadRequest("There was an error updating System item setup."));
                }

                _logger.LogInformation("Update Item SetUp successfully done with result : {EditSyatemItemSetUp}", systemItemUpdate);
                return(Ok(systemItemUpdate.Object));
            }
            return(BadRequest(new ModelStateRequestValidationAdaptor(ModelState)));
        }
Beispiel #4
0
        /// <summary>
        /// Updates the system item set up.
        /// </summary>
        /// <param name="itemkey">The itemkey.</param>
        /// <param name="medicationItem">The medication item.</param>
        /// <returns>Task&lt;BusinessResult&lt;Model.MedicationItem&gt;&gt;.</returns>
        public async Task <BusinessResult <SystemItemSetupRequest> > UpdateSystemItemSetUp(Guid itemkey, SystemItemSetupRequest medicationItem)
        {
            var itemEntity = await _itemRepository.GetItemById(itemkey);

            if (itemEntity == null)
            {
                return(new BusinessResult <SystemItemSetupRequest>(null, CreateUpdateResultEnum.NotFound));
            }

            //set value for item
            itemEntity.ItemID                 = medicationItem.ItemId;
            itemEntity.AlternateItemID        = medicationItem.AlternateItemID;
            itemEntity.LastModifiedByActorKey = Guid.NewGuid();
            itemEntity.LastModifiedDateTime   = DateTime.UtcNow;

            //set value for medication item
            itemEntity.MedicationItem.MedicationItemKey           = itemkey;
            itemEntity.MedicationItem.ActiveFlag                  = medicationItem.ActiveFlag;
            itemEntity.MedicationItem.MedicationClassKey          = medicationItem.MedicationClassKey;
            itemEntity.MedicationItem.Description                 = medicationItem.Description;
            itemEntity.MedicationItem.GLAccountKey                = medicationItem.GenralLedgerAccountKey;
            itemEntity.MedicationItem.DispenseFormLookupKey       = medicationItem.DispensingFormKey;
            itemEntity.MedicationItem.DispenseUnitLookupKey       = medicationItem.DispensingUnitKey;
            itemEntity.MedicationItem.StrengthAmount              = medicationItem.StrengthAmount;
            itemEntity.MedicationItem.ConcentrationVolumeAmount   = medicationItem.ConcentrationVolumeAmount;
            itemEntity.MedicationItem.TotalVolumeAmount           = medicationItem.TotalVolumeAmount;
            itemEntity.MedicationItem.StrengthUnitOfMeasureKey    = medicationItem.StrengthUnitOfMessureKey;
            itemEntity.MedicationItem.TotalVolumeUnitOfMeasureKey = medicationItem.TotalVolumeUnitOfMessureKey;
            itemEntity.MedicationItem.ChargeCode                  = medicationItem.ChargeCode;
            itemEntity.MedicationItem.HighRiskFlag                = medicationItem.HighRiskFlag;
            itemEntity.MedicationItem.LASAFlag               = medicationItem.LASAFlag;
            itemEntity.MedicationItem.DrugFlag               = medicationItem.DrugFlag;
            itemEntity.MedicationItem.FreezerFlag            = medicationItem.FreezerFlag;
            itemEntity.MedicationItem.ChemotherapyFlag       = medicationItem.ChemotherapyFlag;
            itemEntity.MedicationItem.RefrigeratedFlag       = medicationItem.RefrigeratedFlag;
            itemEntity.MedicationItem.NonFormularyFlag       = medicationItem.NonFormularyFlag;
            itemEntity.MedicationItem.HazToxicFlag           = medicationItem.HazToxicFlag;
            itemEntity.MedicationItem.HazAerosolFlag         = medicationItem.HazAerosolFlag;
            itemEntity.MedicationItem.HazOxidizerFlag        = medicationItem.HazOxidizerFlag;
            itemEntity.MedicationItem.HazChemicalFlag        = medicationItem.HazChemicalFlag;
            itemEntity.MedicationItem.HazAcidFlag            = medicationItem.HazAcidFlag;
            itemEntity.MedicationItem.HazBaseFlag            = medicationItem.HazBaseFlag;
            itemEntity.MedicationItem.ChemoAgentFlag         = medicationItem.ChemoAgentFlag;
            itemEntity.MedicationItem.BioHazFlag             = medicationItem.BioHazFlag;
            itemEntity.MedicationItem.LastModifiedByActorKey = Guid.NewGuid();
            itemEntity.MedicationItem.LastModifiedDateTime   = DateTime.UtcNow;

            //TODO: for ndc
            //var productIdentificationEntity = _mapper.Map<ICollection<ProductIdentification>,ICollection<ProductIdentificationEntity>>(medicationItem.ProductIdentifications);
            //itemEntity.MedicationItem.ProductIdentifications = productIdentificationEntity;

            //List<PreferredOrdering> preferredOrderingList = new List<PreferredOrdering>();

            //foreach (var item in medicationItem.ProductIdentifications)
            //{
            //    PreferredOrdering preferredOrdering = new PreferredOrdering();
            //    preferredOrdering.PreferredOrderingKey = item.preferredOrderingKey;
            //    preferredOrdering.IsPreferred = item.PreferredNDC;
            //    preferredOrdering.ItemKey = medicationItem.ItemKey;
            //    preferredOrdering.ProductIDKey = item.ProductIdentificationKey;
            //    preferredOrderingList.Add(preferredOrdering);
            //}

            //List<PreferredOrderingEntity> dhjhf = new List<PreferredOrderingEntity>();
            //var preferredOrderingEntity = _mapper.Map(preferredOrderingList,dhjhf);
            //itemEntity.PreferredOrderings = preferredOrderingEntity;

            var updateResult = await _itemRepository.UpdateSystemItemSetUp(itemEntity);

            if (updateResult)
            {
                return(new BusinessResult <SystemItemSetupRequest>(
                           _mapper.Map <ItemEntity, SystemItemSetupRequest>(itemEntity), CreateUpdateResultEnum.Success));
            }

            return(new BusinessResult <SystemItemSetupRequest>(null, CreateUpdateResultEnum.ValidationFailed));
        }
Beispiel #5
0
        /// <summary>
        /// To add system Formulary
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <BusinessResult <SystemItemSetupRequest> > AddSystemItem(SystemItemSetupRequest request)
        {
            var existingItem = await _itemReository.GetItemByCode(request.ItemId);

            if (existingItem != null)
            {
                return(new BusinessResult <SystemItemSetupRequest>(null, CreateUpdateResultEnum.ErrorAlreadyExists));
            }

            var key = Guid.NewGuid();

            var itemEntity = new ItemEntity
            {
                ItemKey                = key,
                TenantKey              = Guid.NewGuid(),
                CreatedByActorKey      = Guid.NewGuid(),
                CreatedDateTime        = DateTimeOffset.Now,
                LastModifiedDateTime   = DateTime.UtcNow,
                LastModifiedByActorKey = Guid.NewGuid(),
                ItemID             = request.ItemId,
                AlternateItemID    = request.AlternateItemID,
                MedicationItemFlag = true
            };

            itemEntity.CreatedDateTime = DateTimeOffset.Now;

            var medEntity = new MedicationItemEntity
            {
                MedicationItemKey                   = key,
                TenantKey                           = Guid.NewGuid(),
                CreatedByActorKey                   = Guid.NewGuid(),
                CreatedDateTime                     = DateTimeOffset.Now,
                LastModifiedDateTime                = DateTime.UtcNow,
                LastModifiedByActorKey              = Guid.NewGuid(),
                MedicationClassKey                  = request.MedicationClassKey,
                Description                         = request.Description,
                GLAccountKey                        = request.GenralLedgerAccountKey,
                DispenseFormLookupKey               = request.DispensingFormKey,
                DispenseUnitLookupKey               = request.DispensingUnitKey,
                StrengthAmount                      = request.StrengthAmount,
                ConcentrationVolumeAmount           = request.ConcentrationVolumeAmount,
                TotalVolumeAmount                   = request.TotalVolumeAmount,
                TotalVolumeUnitOfMeasureKey         = request.TotalVolumeUnitOfMessureKey,
                StrengthUnitOfMeasureKey            = request.StrengthUnitOfMessureKey,
                ConcentrationVolumeUnitOfMeasureKey = request.ConcentrationVolumeUnitOfMessureKey,
                ChargeCode                          = request.ChargeCode,
                HighRiskFlag                        = request.HighRiskFlag,
                ChemotherapyFlag                    = request.ChemotherapyFlag,
                NonFormularyFlag                    = request.NonFormularyFlag,
                LASAFlag         = request.LASAFlag,
                RefrigeratedFlag = request.RefrigeratedFlag,
                DrugFlag         = request.DrugFlag,
                ChemoAgentFlag   = request.ChemoAgentFlag,
                BioHazFlag       = request.BioHazFlag,
                HazAerosolFlag   = request.HazAerosolFlag,
                HazBaseFlag      = request.HazBaseFlag,
                HazAcidFlag      = request.HazAcidFlag,
                HazChemicalFlag  = request.HazChemicalFlag,
                HazOxidizerFlag  = request.HazOxidizerFlag,
                HazToxicFlag     = request.HazToxicFlag,
                FreezerFlag      = request.FreezerFlag,
                ActiveFlag       = request.ActiveFlag
            };

            itemEntity.MedicationItem = medEntity;

            var systemFormulary = _mapper.Map <SystemFormulary>(request);

            systemFormulary.ItemKey           = itemEntity.ItemKey;
            systemFormulary.MedicationItemKey = itemEntity.MedicationItem.MedicationItemKey;


            if (await _itemReository.AddSystemItem(itemEntity) /*&& await _medicationItemRepository.AddMedicationItem(medEntity)*/)
            {
                return(new BusinessResult <SystemItemSetupRequest>(systemFormulary,
                                                                   CreateUpdateResultEnum.Success));
            }
            return(new BusinessResult <SystemItemSetupRequest>(null, CreateUpdateResultEnum.ValidationFailed));
        }