public HttpClient GetHttpClient(Kno2ConfigurationDTO configurationDTO) { return(HttpClientHelper.CreateHttpClient(baseUri: configurationDTO.BaseUri, defaultAccept: "application/json", clientId: configurationDTO.ClientId, clientSecret: configurationDTO.ClientSecret, appId: configurationDTO.AppId, authUri: configurationDTO.AuthUri, grantType: "client_credentials", emrSessionValue: configurationDTO.EmrSessionValue )); }
public Kno2ConfigurationDTO GetKno2Configuration() { Kno2ConfigurationDTO ret = new Kno2ConfigurationDTO { AppId = ConfigurationManager.AppSettings["AppId"], AuthUri = new Uri(ConfigurationManager.AppSettings["AuthUri"], UriKind.Relative), BaseUri = new Uri(ConfigurationManager.AppSettings["BaseUri"]), ClientId = ConfigurationManager.AppSettings["ClientId"], ClientSecret = ConfigurationManager.AppSettings["ClientSecret"], EmrSessionValue = ConfigurationManager.AppSettings["EmrSessionValue"], FromAddress = ConfigurationManager.AppSettings["FromAddress"], Subject = ConfigurationManager.AppSettings["Subject"], }; return(ret); }
public void SendKno2Message(MessageDTO message) { try { //config DTO Kno2ConfigurationDTO configDTO = this.GetKno2Configuration(); //Get the httpClient that will be used for the transmissions HttpClient httpClient = this.GetHttpClient(configDTO); //Validate the addresses (probably optional) Dictionary <string, bool> addressValidationResults = ApiHelper.ValidateAddresses(httpClient: httpClient, directoryValidateUri: this.DirectoryValidate(), addresses: new[] { message.ToAddress, configDTO.FromAddress }); // Request the available document types (cacheable) IEnumerable <string> documentTypes = ApiHelper.RequestDocumentTypes(httpClient: httpClient, documentTypesUri: this.DocumentTypesUri()); // Request a message draft id var outboundMessage = ApiHelper.RequestMessageDraft(httpClient: httpClient, messageUri: this.MessagesUri() ); var attachmentIds = new List <string>(); FileType fileType = message.FileType; //get a new file name string fileName = FileHelpers.GenerateAttachmentName(fileType); //upload the attachment var attachment = ApiHelper.UploadAttachment(httpClient: httpClient, attachmentsUri: this.AttachmentsUri(outboundMessage.Id), fileName: fileName, attachment: new AttachmentResource { NativeFileName = fileName, NativeFileBytes = message.FileBytes, DocumentType = documentTypes.First(), AttachmentMeta = new AttachmentMetaResource { DocumentTitle = message.DocumentTitle, DocumentType = documentTypes.First(), DocumentDate = DateTime.UtcNow, DocumentDescription = message.DocumentDescription, Confidentiality = Confidentiality.Normal } } ); // Request the attachment meta data var attachments = new List <AttachmentResource>(); string id = attachment.Id; var metadata = ApiHelper.RequestAttachmentMetadata(httpClient: httpClient, attachmentsUri: this.AttachmentsUri(messageId: outboundMessage.Id, attachmentId: id) ); attachments.Add(metadata); // Send the message (draft) outboundMessage.Attachments = attachments; outboundMessage.Subject = configDTO.Subject; outboundMessage.ToAddress = message.ToAddress; outboundMessage.FromAddress = configDTO.FromAddress; outboundMessage.Comments = message.Comments; outboundMessage.Body = message.Body; outboundMessage.Patient = new Patient { BirthDate = message.BirthDate, FirstName = message.FirstName, Gender = message.Gender, LastName = message.LastName, MiddleName = message.MiddleName, PatientId = message.PatientId, }; ApiHelper.SendDraft(httpClient: httpClient, messageUri: this.MessagesUri(outboundMessage.Id), messageResource: outboundMessage); ApiHelper.SendRelease(httpClient: httpClient, messageSendUri: this.MessageSendUri(outboundMessage.Id), messageResource: outboundMessage ); } catch (AggregateException ex) { StringBuilder sb = new StringBuilder(); foreach (var innerException in ex.InnerExceptions) { sb.AppendLine(innerException.Message); sb.AppendLine(innerException.StackTrace); innerException.Message.ToConsole(); if (innerException.InnerException != null) { sb.AppendLine(innerException.InnerException.Message); sb.AppendLine(innerException.InnerException.StackTrace); } } throw new Exception(sb.ToString()); } catch (Exception ex) { throw ex; } }