예제 #1
0
        public void CreateCDAPackage()
        {
            // ------------------------------------------------------------------------------
            // Set up signing certificate and identifiers
            // ------------------------------------------------------------------------------

            // Load certificate used to sign the CDA document
            X509Certificate2 signingCert = X509CertificateUtil.GetCertificate(
                "Signing Certificate Find Value",
                X509FindType.FindBySubjectName,
                StoreName.My,
                StoreLocation.CurrentUser,
                true);

            // ------------------------------------------------------------------------------
            // Create CDAPackage
            // ------------------------------------------------------------------------------

            // Create an approver
            var approver = new Approver()
            {
                PersonId         = new Uri("http://ns.electronichealth.net.au/id/hi/hpii/1.0/8003610000000000"),
                PersonFamilyName = "Jacobs",
                PersonGivenNames = new List <string> {
                    "Adam", "Barry"
                },
                PersonNameSuffixes = new List <string> {
                    "MD", "JR"
                },
                PersonTitles = new List <string> {
                    "MR", "DR"
                }
            };

            // Create a CDAPackage instance
            var package = new CDAPackage(approver);

            // Create the CDA root document for the CDA package
            package.CreateRootDocument(File.ReadAllBytes("CdaDocumentXmlFile.xml"));

            // Add an image attachment
            package.AddDocumentAttachment(
                "ImageAttachment1.jpg",
                File.ReadAllBytes("ImageAttachment1.jpg")
                );

            // Add another image attachment
            package.AddDocumentAttachment(
                "ImageAttachment2.png",
                File.ReadAllBytes("ImageAttachment2.png")
                );

            // Create the CDA package zip
            CDAPackageUtility.CreateZip(package, "CdaPackageOutputFilePath.zip", signingCert);
        }
예제 #2
0
        /// <summary>
        /// Extract the package data.
        /// </summary>
        /// <param name="cdaPackageData"></param>
        /// <returns></returns>
        public CdaPackageData ExtractPackageData(byte[] cdaPackageData)
        {
            // NOTE will throw a validation exception if the signature is not valid
            CDAPackage cdaPackage = CDAPackageUtility.Extract(cdaPackageData, certificate =>
            {
                // NO-OP assume the certificate is valid
            });

            // Load the document
            XmlDocument cdaDocument = GetCdaDocumentFromPackage(cdaPackage);

            // Extract the package data
            return(ExtractPackageData(cdaDocument));
        }
예제 #3
0
        private static XmlDocument GetCdaDocumentFromPackage(CDAPackage cdaPackage)
        {
            CDAPackageFile cdaDocumentFile = cdaPackage.CDADocumentRoot;

            XmlDocument cdaDocument = new XmlDocument();

            using (var memoryStream = new MemoryStream(cdaDocumentFile.FileContent)
            {
                Position = 0
            })
            {
                cdaDocument.Load(memoryStream);
            }

            return(cdaDocument);
        }