Build a CDA document

Add the CDA body

Now we need to create the body for our CDA document and append it underneath our header. Our CDA body section will be composed of a ‘component element that contains a ‘structuredBody’ sub-element.

  1. Add the following lines of code to the main() function:

That’s it! Your shiny new CDA body should look like this in the resulting annotations:


Here is a copy-and-paste version of the entire main() function, should you need it:

function main(Data)
   local Doc = cda.new()
   local CD = Doc.ClinicalDocument

   -- CDA Header 
   FillHeader(CD)
   local RT = CD:addElement('recordTarget')
   FillPatient(RT)
   local A = CD:addElement('author')
   FillAuthor(A)
   local C = CD:addElement('custodian')
   FillCustodian(C)

   -- CDA Body
   local Body = CD:addElement('component')
   local SB = Body:addElement('structuredBody')

   net.http.respond{body=tostring(Doc)}

   -- TEST CODE: write CDA to file (in Iguana install dir)
   -- unformatted xml
   if iguana.isTest() then
      local f = io.open('cda_xml.xml','w+')
      f:write(tostring(Doc))
      f:close()
      -- formatted with xsl stylesheet
      f = io.open('cda_web.xml','w+')
      f:write('\n')
      f:write(tostring(Doc))
      f:close()
   end
end

Review and Validate

Use the NIST Validation Tool (or the Lantana validation tool) to check our new changes to the cda_xml.xml file.

The confusing error message from our previous step is gone! Now the report simply confirms that our CDA body is not complete: