CCDA record to PDF - C#
PDF from HTML Template sample in C# demonstrating ‘CCDA record to PDF’
Program.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Xml;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace ByteScoutWebApiExample
{
class Program
{
// The authentication key (API Key).
// Get your own by registering at https://app.pdf.co
const String API_KEY = "********************************";
static void Main(string[] args)
{
// --TemplateID--
/*
Please follow below steps to create your own HTML Template and get "templateId".
1. Add new html template in app.pdf.co/templates/html
2. Copy paste your html template code into this new template. Sample HTML templates can be found at "https://github.com/bytescout/pdf-co-api-samples/tree/master/PDF%20from%20HTML%20template/TEMPLATES-SAMPLES"
3. Save this new template
4. Copy it’s ID to clipboard
5. Now set ID of the template into “templateId” parameter
*/
// HTML template using built-in template
// see https://app.pdf.co/templates/html/2/edit
var templateId = 425; //Replace with your template Id
// Data to fill the template
var reportData = _ExtractDataFromCCDA("./result_covid.xml");
string templateData = JsonConvert.SerializeObject(reportData, Newtonsoft.Json.Formatting.Indented);
// Destination PDF file name
string destinationFile = @".\result.pdf";
// Create standard .NET web client instance
WebClient webClient = new WebClient();
// Set API Key
webClient.Headers.Add("x-api-key", API_KEY);
webClient.Headers.Add("Content-Type", "application/json");
try
{
// URL for `HTML to PDF` API call
string url = Uri.EscapeUriString(string.Format(
"https://api.pdf.co/v1/pdf/convert/from/html?name={0}",
Path.GetFileName(destinationFile)));
// Prepare requests params as JSON
Dictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add("name", Path.GetFileName(destinationFile));
parameters.Add("templateId", templateId);
parameters.Add("templateData", templateData);
// Convert dictionary of params to JSON
string jsonPayload = JsonConvert.SerializeObject(parameters);
// Execute request
string response = webClient.UploadString(url, jsonPayload);
// Parse JSON response
JObject json = JObject.Parse(response);
if (json["error"].ToObject<bool>() == false)
{
// Get URL of generated PDF file
string resultFileUrl = json["url"].ToString();
webClient.Headers.Remove("Content-Type"); // remove the header required for only the previous request
// Download the PDF file
webClient.DownloadFile(resultFileUrl, destinationFile);
Console.WriteLine("Generated PDF document saved as \"{0}\" file.", destinationFile);
}
else
{
Console.WriteLine(json["message"].ToString());
}
}
catch (WebException e)
{
Console.WriteLine(e.ToString());
}
webClient.Dispose();
Console.WriteLine();
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
/// <summary>
/// Extract Data From C-CDA
/// </summary>
private static ResultVM _ExtractDataFromCCDA(string path)
{
var oRet = new ResultVM();
var doc = new XmlDocument();
doc.Load(path);
XmlElement root = doc.DocumentElement;
XmlNode observationNode = root.SelectSingleNode("entry").SelectSingleNode("organizer").SelectSingleNode("component").SelectSingleNode("observation");
// Get Title
oRet.Title = root.SelectSingleNode("code").Attributes["displayName"].Value;
oRet.Description = observationNode.SelectSingleNode("code").Attributes["displayName"].Value;
oRet.ValuePerUnit = observationNode.SelectSingleNode("value").Attributes["displayName"].Value;
oRet.Interpretation = observationNode.SelectSingleNode("interpretationCode").Attributes["code"].Value == "A" ? "Abnornal" : "Normal";
oRet.ReferenceRange = observationNode.SelectSingleNode("referenceRange").SelectSingleNode("observationRange").SelectSingleNode("text").InnerText;
return oRet;
}
}
}
ResultVM.cs
namespace ByteScoutWebApiExample
{
public class ResultVM
{
public string Title { get; set; }
public string Description { get; set; }
public string ValuePerUnit { get; set; }
public string Interpretation { get; set; }
public string ReferenceRange { get; set; }
}
}
result_template.html
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Results</title>
</head>
<body>
<h3>Covid Result</h3>
<hr />
<table border="1" cellspacing="0" cellpadding="10">
<thead>
<tr>
<th>Description</th>
<th>Value / Unit</th>
<th>Interpretation</th>
<th>Reference Range</th>
</tr>
</thead>
<tbody>
<tr>
<th colspan="4">{{Title}}</th>
</tr>
<tr ID="LabResult3">
<td>{{Description}}</td>
<td>{{ValuePerUnit}}</td>
<td>{{Interpretation}}</td>
<td>{{ReferenceRange}}</td>
</tr>
</tbody>
</table>
</body>
</html>
PDF.co Web API: the Web API with a set of tools for documents manipulation, data conversion, data extraction, splitting and merging of documents. Includes image recognition, built-in OCR, barcode generation and barcode decoders to decode bar codes from scans, pictures and pdf.
Download Source Code (.zip)
return to the previous page explore PDF from HTML Template endpoint
Copyright © 2016 - 2023 PDF.co