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))); }
/// <summary> /// Updates the system item set up. /// </summary> /// <param name="itemkey">The itemkey.</param> /// <param name="medicationItem">The medication item.</param> /// <returns>Task<BusinessResult<Model.MedicationItem>>.</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)); }
/// <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)); }