コード例 #1
0
 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
                                              ));
 }
コード例 #2
0
        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);
        }
コード例 #3
0
        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;
            }
        }