/// <summary>
        /// Set document inforamtion in clinical document model for saving document via document service
        /// </summary>
        /// <param name="clinicalDocumentInputModel"></param>
        /// <returns></returns>
        private async Task <string> SaveClinicalDocumentDetailsForDocumentService(ClinicalDocumentInputModel clinicalDocumentInputModel)
        {
            string status = string.Empty;
            //GUID doesnt needs assignment
            Guid key;

            //Map the busniess model to the documeny service model
            DocumentMetadata metadata = _iMapper.Map <DocumentMetadata>(clinicalDocumentInputModel);

            //Check if the document blob is null
            if (clinicalDocumentInputModel.Document != null && clinicalDocumentInputModel.Document.Length > 0)
            {
                //check if the mimetype and sourcesystem is null or contain white spaces
                if (!string.IsNullOrWhiteSpace(clinicalDocumentInputModel.MimeType) && !string.IsNullOrWhiteSpace(clinicalDocumentInputModel.SourceSystem))
                {
                    // Call document service
                    (status, key) = await _iDocumentServiceHelper.UploadDocuments(metadata);

                    if (status == _localizer["DocumentServiceSuccessMessage"])
                    {
                        //Document saved successfully by Doc service
                        clinicalDocumentInputModel.DocumentReceived = true;
                        clinicalDocumentInputModel.DocumentId       = key;
                    }
                    else
                    {
                        //Document service failed while saving document
                        clinicalDocumentInputModel.DocumentReceived = true;
                    }
                }
                else
                {
                    //Document blob received, but either of mime type or source system is missing
                    clinicalDocumentInputModel.DocumentReceived = true;
                }
            }
            else
            {
                //document not received
                clinicalDocumentInputModel.DocumentReceived = false;
            }

            return(status);
        }
        /// <summary>
        /// SaveClinicalDetails
        /// </summary>
        /// <param name="clinicalDocumentInputModel">clinicalDocumentInputModel</param>
        /// <returns>response</returns>
        public async Task <ClinicalDocumentOutputModel> SaveClinicalDetails(ClinicalDocumentInputModel clinicalDocumentInputModel)
        {
            string status = await SaveClinicalDocumentDetailsForDocumentService(clinicalDocumentInputModel);

            //Map ClinicalDocumentInputModel to ClinicalDocuments entity
            entities.ClinicalDocumentMetadata clinicalDocuments = _iMapper.Map <entities.ClinicalDocumentMetadata>(clinicalDocumentInputModel);

            //Save metadat details
            var details = await _iClinicalDocumentUnitOfWork.SaveClinicalDetails(clinicalDocuments);

            //check for null or empty
            if (!string.IsNullOrEmpty(details))
            {
                //If the metadata details are saved but have error saving the document
                return(SaveClinicalDocumentsResponse(status, details));
            }
            else
            {
                throw new Exception(message: _localizer["Exception_Error_Message"]);
            }
        }
示例#3
0
        public async Task <IActionResult> SaveClinicaldetails([FromBody] DocumentDetailRequest documentDetailRequest)
        {
            DocumentDetailResponse clinicalDetailsResponse = null;

            //Map Contract request model to clinical document input model
            ClinicalDocumentInputModel clinicalDocumentInputModel = _iMapper.Map <ClinicalDocumentInputModel>(documentDetailRequest);

            // Save document details
            ClinicalDocumentOutputModel clinicalDetails = await _iClinicalDocumentBusinessLogic.SaveClinicalDetails(clinicalDocumentInputModel);

            if (clinicalDetails != null)
            {
                //Map clinical document output model to Contract response model
                clinicalDetailsResponse = _iMapper.Map <DocumentDetailResponse>(clinicalDetails);

                //return response
                return(Ok(clinicalDetailsResponse));
            }
            else
            {
                //return badrequest
                return(BadRequest(_localizer["BadRequestErrorMessage"]));
            }
        }