Skip to content

Revisions

Alexander Henket edited this page May 20, 2024 · 17 revisions

05/20/2024, AH/BF, v4.1.0-beta.2

  • Issue#25 Fix iframe rendering like pdf so trailing information is rendering

09/14/2023, AH/MS, v4.1.0-beta.1

  • Issue#18 Adds support for ClinicalDocument.sdtc:statusCode
  • Issue#15 Add support for reordering of section display using parameter section-order

05/10/2023, AH/MS, v4.1.0 alpha 2

  • Adds French (fr-fr) as supported language
  • Issue#13 Fixes a string in Dutch (nl-nl)

07/06/2021, AH/MS, v4.1.0 alpha 1

  • This alpha release adds USCDI v1 rendering support. Its main purpose is to collect feedback at C-CDA IAT, but feedback through issues here is welcome too. See documentation for more information.

05/25/2021, AH, v4.0.2 beta 11

  • Issue#6 Fixed java NullPointerException (NPE) deriving from Xalans interpretation of global variables when used in translate() functions

09/24/2020, AH, v4.0.2 beta 10

  • Further improved security updates for PDF and IE

09/23/2020, AH, v4.0.2 beta 9

  • Improved HTML conditionals for IE 9 and below versus up
  • Eliminated use of exslt:node-set thus restoring IE 11 and below compatibility. This required externalizing a lookup table for combinations of NarrativeBlock elements/attributes as part of the security mechanism. The file this table was externalized into is cda_narrativeblock.xml
  • Retested against Microsoft Internet Explorer 9, 10, 11, Microsoft Edge (before and after move to chromium), Google Chrome, Firefox, Safari
    • There is one issue left with IE 10 and 11: See issue#5

09/20/2020, AH, v4.0.2 beta 8

  • Update check now includes lte IE 9 instead of lt IE 9 so we also cover Internet Explorer 9 itself.

09/10/2020, AH, v4.0.2 beta 7

  • Add IE 9 or up check to iframe. If not IE or below 9: warn user

09/10/2020, AH, v4.0.2 beta 6

  • Reimplemented the security mitigation from beta 5 by allowing all Base64 mimetypes in the iframe again but adding the sandbox attribute to avoid opening too much for what that iframe can do.
  • Add IE 9 or up check to iframe. If not IE or below 9: warn user

09/09/2020, AH, v4.0.2 beta 5

  • Add security mitigation for base64 encoded contents to only render in case of application/pdf. Before this patch any Base64 encoded contents would be rendered in an iframe regardless of its mimetype. This left the door open for 'active' contents like text/html with embedded javascript to do potentially malicious things.

05/01/2020, AH, v4.0.2 beta 4

  • Improved performance of label retrieval by using xsl:key
  • Improved graceful fallback for label retrieval when default language is not en-us
  • Added various strings gathered through other uses of the same localization file

12/01/2019, AH, v4.0.2 beta 3

  • Improved rendering of ClinicalDocument.confidentiality so the lock icon matches the font size

10/23/2019, AH, v4.0.2 beta 2

  • Previous beta only supported authenticator. Support for legalAuthenticator has been added

06/19/2019, AH, v4.0.2 beta 1

  • Circumvention for a warning from XSL 1.0 processors: "Non-text output nodes are ignored when writing an attribute, comment or PI."
  • Added support for (legal) authenticator sdtc:signatureText. This renders a small signature icon with mouse over text that reads that a signature is present, but that this signature has not been verified. If a thumbnail is present is will trail that title.

01/17/2019 AH, v4.0.1

  • Approved all changes in beta 1 and beta 2 as-is except for the addition of IHE PCC MCV. The StrucDoc WG feels that this addition needs some more thought before a decision on re-adding it can be made.
  • Added support for patient/languageCommunication
  • Added support for patientRole/providerOrganization
  • Added support for informationRecipient/intendedRecipient/receivedOrganization
  • Updated rendering of nonXMLBody and observationMedia to check for Base64 content before checking text/plain. This fixes support for Base64 encoded text/plain.

01/14/2019 AH, v4.0.1 beta 2

  • Added support for patient/languageCommunication
  • Added support for patientRole/providerOrganization
  • Added support for informationRecipient/intendedRecipient/receivedOrganization
  • As requested per GForge#20000, added support for IHE PCC MCV, Revision 1.2, Trial Implementation, November 2, 2018. Implementation coverage is based on AllScripts stylesheet implementation (license Apache License, Version 2.0):
Table 5.1.X-1: styleCode
Covered? styleCode Description Suggested Rendering (Hints)
No. TODO? How? xEmptySection Section is empty When showing other than complete content, do something special to show that the entire section is empty. See Section 3.1.5.3.1 for an example.
No. TODO? How? xHistoric Content is Historic When showing content that was assessed, these data should be hidden. See Section 3.1.5.3.2 for an example.
No. TODO? How? xAssessed Content Assessed/Discussed this visit When showing content that was assessed, these data shall be shown. See Section 3.1.5.3.2 for an example.
No. TODO? How? xDetail Extra Detail – not necessarily for Patients When showing patient related views, this content may be omitted. See Section 3.1.5.3.3 for an example.
No. TODO? How? xDate Content is a Date Show as a date.
No. TODO? How? xDateTime Content is a Date with Time Show as a date with time.
No. TODO? How? xCode Content is a code from some code system. Show as a code.
No. TODO? How? xPhone Content is a telephone number Show as a phone number.
No. TODO? How? xEmail Content is an email address Show as an email address.
No. TODO? How? xAddress Content is a Street Address Shows an address.
No. TODO? How? xPersonName Content is a person name Show as the name of a person.
No. TODO? How? xIdentifier Content is an identifier Show as an identifier.
Yes. Rendered with red font color xAlert The content contains information of importance that needs to be used to alert the reader, for example level of severity considered life threatening. Show in some manner to indicate an Alert.
Yes. Rendered with red font color xAbnormal The content contains information that may be considered to be not within what are considered to be normal values. Show in some manner to indicate a value that is not normal.
No. TODO? How? Just display:none or with javascript for unhide? xHidden Content may typically be repetitive and unnecessary to display. Hide the content.
Yes. Rendered in italics xLabel The content is a label of some data, e.g., Refills: Show content as a label.
Yes. No specifics xValue The content contains a data that is a value, e.g., 98.6 Show content as a clinical item status value.
Yes. No specifics xReaction The content represents text about a reaction. Show content as a reaction.
Yes. No specifics xComment The content is comment text. Show as a comment.
Yes. text-align: center xCenter Text to be centered Alignment should be centered.
Yes. text-align: right xRight Text to be right justified Alignment should be right.
Yes. text-align:left xLeft Text to be left justified Alignment should be left.
Yes. font-family: monospace xMono Text to be output in a monospace font Render in a monospace font.
Yes. background-color: yellow; color: black; xHighlight Text to be highlighted Render with highlight.
Yes. render an hr element xHR A horizontal line is to be drawn Render a horizontal line.
Yes xRowNormal For example, to indicate an odd numbered row of a table. Render table row as normal.
Yes xRowAlt For example, to indicate an even numbered row of a table. Render table row as alternate.
Yes xIndent Render content indented.
Yes xSecondary This content is of secondary importance. Render in some manner to indicate this content is of secondary importance, for example in a lighter font color.
Yes xRowGroup This is used on table rows to show that children and parent objects are related Keep lines from appearing between child objects and their parents in a table together
Yes xContentWrapping This is used to keep the text in the first column from wrapping under the bullets that appear for child objects inside of a table Prevent text from wrapping under child objects

11/13/2018 AH, v4.0.1 beta 1 Updated rendering of nonXMLBody and observationMedia to check for Base64 content before checking text/plain. This fixes support for Base64 encoded text/plain.

10/02/2018 AH, v4.0.0 Administrative rename to final product after StrucDoc committee approval

09/26/2018 AH, v4.0.0 beta 8

  • Fixed an issue that for certain ids would cause a warning "Non-text output nodes are ignored when writing an attribute, comment, or PI" and/or "Cannot write an attribute node when no element start tag is open"
  • Fixed an issue for caption elements under anything but a table, e.g. a list, where the text content would be duplicated

08/31/2018 AH, v4.0.0 beta 7

  • Consistency update. Changed all US English label names to use Camel Casing
  • Added OID labels for SNOMED CT, ICD-10-NL, ICD-10-DE, ICD-10-CM
  • Added support for originalText and translation rendering on coded elements, regardless of nullFlavor status
  • Fixed a bug that would occur when AD.useablePeriod exists and added rendering support when it does

08/27/2018 AH, v4.0.0 beta 6

  • Improved rendering of empty (sub)sections
  • Added various more OID translations like the NHS Number
  • Extended the l10.xsd to include an enumeration for language, and made attributes required
  • Fixed all uppercase language codes in l10n file
  • Improved rendering of confidentialityCode in the title when the code is not from x_BasicConfidentialityKind
  • Removed illegal css instruction "float: top;" on documentheader, documentbody and documentfooter
  • Hide expand/collapse triangle for sections upon print

08/16/2018 AH, v4.0.0 beta 5

  • Added support to switch sectionNumbering on or off (default)
  • Added support for collapsing/expanding all or selected (sub) sections
  • Fix for empty elements causing XHTML grief
  • Improved rendered warning for potential malicious contents
  • Improved rendering of inFulFillment
  • Improved rendering of names by eliminating leading/trailing spaces, and by rendering only the first name in the header. All names are in the footer.
  • Improved rendering of addresses by pulling buildingNumberSuffix into the address line

08/05/2018 AH, v4.0.0 beta 4

  • Added support to mask or skip patient ids based on a comma separated list of @root values. Masking will cause xxx-xxx-xxx to appear with a mouse over that states "masked"
  • Now renders subsection almost the same way as top level sections including any overriding authors/informants/subjects, section numbering. The difference lies in increasing left indenting for every subsection

06/19/2018 AH, v4.0.0 beta 3

  • Fixed a bug in rendering ClinicalDocument/confidentialityCode causing it not to get rendered
  • Based on physician feedback: header labels are now all bold (was normal), header values are now all normal (was italic). This leads to more focus on what's important
  • Based on physician feedback: Patient-IDs now all go on a new line when the view becomes too small to be on one line (was: line wrapped). This is always true for print Based on physician feedback: More space between Patient header parts
  • Based on physician feedback: Updated encounter/code label from "Code" to "Type" as it caused confusion
  • Smarter interval of time rendering: when both low/high are on the same date, renders date only once, so "January 12, 2018 10AM -0500 - 11PM -0500" instead of "from January 12, 2018 10AM -0500 to January 12, 2018 11PM -0500"
  • Now renders id/@assigningAuthorityName as title on an id. This was not rendered at all before. May need better solutions for that info in future update
  • Smart rendering of addresses. Now skips rendering of streetName, houseNumber, houseNumberNumeric when there is a streetAddressLine. Now renders postalCode next to city (leading/trailing depending on CDA order)
  • Fixed rendering issue in outlining of authenticator and legalAuthenticator in the footer

05/23/2018 AH, v4.0.0 beta 2

  • Rerouted rendering of narrative block renderMultiMedia to rendering of nonXMLBody so there's now one block of logic and security checks on that. At the same time this extends the support for types of renderMultiMedia as originally only gif and jpeg were supported. At least some ELGA examples now render their PDF contents correctly.
  • Fixed rendering of caption elements when not under a table
  • Fixed duplicate rendering of ids for footnotes
  • Updated all @name based anchors to @id based anchors for xhtml alignment

05/09/2018 AH, v4.0.0 beta 1

  • Updates to the color scheme and a few other visual aids for accessibility alignment with American Foundation for the Blind Section 508
  • Added new parameters for color: bgcolor-th and bgcolor-td
  • Added new parameters for skipping the rendering of the CDA header info at the top of the document (dohtmlheader) and/or footer (dohtmlfooter)
  • Fix for visibility in the TOC of empty sections as specified by the StrucDoc WG with section/@nullFlavor
  • Fix in documentationOf: don't render @classCode if ACT as that doesn't hold information, and improved serviceEvent/performer contact detail rendering
  • Fix for missing space in rendering of time intervals
  • Update localization function for the compressed l10n structure
  • Update menu behavior. Now only expands sublevels (if any) when hovering the parent

04/11/2018 AH

  • Updated rendering of documentationOf/serviceEvent/@classCode so it does not render if it is 'ACT'
  • Fixed a bug in rendering documentationOf/serviceEvent/code (it was inadvertently not rendered)
  • Added rendering of documentationOf/serviceEvent/performer name in the document header
  • Added rendering of documentationOf/serviceEvent/performer contact details in the document footer
  • Fixed l10n for keys typeCode-PRP, typeCode-PPRP and typeCode-SPRP. Each last P should have been an F.
  • Little tweak to author to avoid rendering of additional commas when certain content is missing
  • Skip timestamp seconds when they are 00. Skip minutes and seconds when they are 00:00. Both for readability.

03/24/2018 AH

  • Added parameter menu-depth with min 1, max 3, default 1 (the way it always has been) -- temporarily left on 3 for browser testing

02/16/2018 AH

  • Moved header authenticator so it is right above legalAuthenticator instead of just under participant
  • Improved readability. Moved contact details for all header participants (recordTarget, author, informant, authenticator, legalAuthenticator, ...) to the right instead of underneath the participant name.

02/15/2018 AH

  • Fixed rendering of serviceEvent/code, location/healthCareFacility/id, order/code, order/priorityCode, consent/code, consent/statusCode
  • Fixed casing of "inFulfillmentOf" and added call to it under documentationOf (GForge#3169)
  • Render recordTarget regardless of nullFlavor in id. (GForge#3590)
  • Added support for encompassingEncounter dischargeDispositionCode, sdtc:admissionReferralSourceCode, encounterParticipant
  • Added support for ClinicalDocument/versionNumber, ClinicalDocument/setId, and relatedDocument (it was not called)
  • (CDA R2.1) Added support for hl7:admissionReferralSourceCode
  • (CDA R2.1) Added support for Person/desc as div under name
  • (CDA R2.1) Added support for Person/birthTime
  • (CDA R2.1) Added support for relatedDocument/@inversionInd
  • (CDA R2.1) Added support for serviceEvent/statusCode
  • (CDA R2.1) Added support for section subject/relatedSubject/subject/birthTime | deceasedTime | deceasedInd | multipleBirthInd | multipleBirthOrderNumber | raceCode | ehtnicGroupCode

12/15/2017 AH

  • Reimplemented security fix from Rick Geimer, Lantana, that does full checking on narrative table components
  • Fixed capitals in iframe properties WIDTH and HEIGHT
  • Added support for looking up an author organization name based on orgsanization id
  • Fixed getting the relatedDocument/parentDocument/id
  • Enhanced rendering of date/time. Now renders with AM/PM in English and with h or u on 24h clock otherwise if at least hours are present.

10/20/2014 AH

  • Fixed support for recordTarget/patient extensions deceasedInd/deceasedTime and multipleBirthInd/multipleBirthOrderNumber. They were inadvertently called in the HL7 namespace. 10/13/2014 Alexander Henket
  • Fixed @ID by adding it to whatever in scope element (div, sup, sub, a, etc.) as @id. To this end the separate calls were replaced by a central call in mode 'handleSectionTextAttributes'.
  • 10/02/2014 Alexander Henket
    • Fixed linkHtml support as it was calling the wrong named template and thus would not render at all.
  • 08/28/2014 Alexander Henket
    • Adjusted time zone in formatDateTime representation so it just displays as-is when available. The number2name conversion, e.g. PST or CET, would fail part of the year due to daylight savings

17/04/2014 AH

  • Implemented mitigation for the security risk in rendering iframes for an arbritrary reference/@value based on work done in SampleCDAStyleSheet v3.0.0

09/04/2014 AH

  • Implemented minimal mitigation for the security risk in rendering iframes for an arbritrary reference/@value
  • Note that this cda.xsl does not copy arbritrary attributes from section text. The noted risk on calling external images thereby sending HTTP Referer URL is not mitigated

05/30/2013 AH

  • Made parameters out of font-family and font-sizes for the main font, h1-h6, and footers
  • Font-sizes are now all in points rather than pixels and points so more reliable in rendering
  • Fixed getLocalizedString so it now does a lowercase comparison of the language
  • Fixed getLocalizedString for language only situations (without region)
  • Added German translations for Table of Contents and Show/Hide revisions

05/29/2013 AH

  • Internet Explorer update: disabled the use of textEncoding, otherwise it would not render
  • Fixed font-size problem for Internet Explorer 8 - it doesn't inherit size in td tags
  • Fixed table of contents problem for Internet Explorer 8 - wouldn't open
  • Fixed #documentfooter style
  • Pulled bgcolor in the header and footer part into CSS so it may be overridden

05/28/2013 AH

  • Redesigned the setup. Now has three main divs.
    • #documentheader contains basic Patient and Author info
    • #documentbody contains section content
    • #documentfooter contains all relevant CDA header info
  • Updated for CDA release 3 as of Ballot May 2013. Includes datatypes awareness in alle relevant places This update is largely about feature parity
  • Added style documentation tags to facilitate HTML documentation

05/22/2013 AH

  • Added parameter for external css if so desired

06/28/2011 AH

  • Improved show-id by diplaying nullFlavor where applicable

05/31/2011 AH

  • Improved show-code to return translated codes, and finally the original code if originalText and @displayName fail
  • Improved label on bottom participant to include translated assignedEntity/code if available
  • Improved readability of participant/assignedEntity

05/30/2011 AH

  • Participant codes are now displayed by default instead of only when the name is omitted
  • Fixed translation of patientIdLong, by using the literal string instead treating it as a node
  • Improved title on ids in fixed top header by adding a newline between multiple ids
  • Changed behavior of "Waarschuwingen" and "Behandelaanwijzigingen" to display "Er zijn geen ..." if they are not applicable, instead of showing nothing
  • Changed "Behandelaanwijzingen into "Behandelrestricties"

05/03/2011 AH

  • Added language file and a template getLocalizedString to deal with it
  • Added parameter textLang to feed the desired language. Does not work with just a browser, so textLang needs to be set in any environment
  • Replaced all current text in the stylesheet with calls to getLocalizedString
  • Improved layout of page so there's now a fixed header. Shrunk the TOC into a button with hover to open so it doesn't always take up all screen space. The layout is enforced using div with an id To avoid lots of scrolling in the header area this part needed to be predictable and small. All header info except recordTarget is now to the bottom of the document Also the document title was made less big
  • Added support for every styleCode in CDA release 2, not just bold/italics/underline, but also all list styles and e.g. Botrule
  • Added support for footnotes/footnoteRefs
  • Added support for multiple section authors (used to be just one, and support was bugged)
  • Added support for (multiple) section informants
  • Added support for section subject
  • Added support for @ID, @IDREF, @language, and all other style properties from CDA release 2
  • Added support for the display of nonXMLBody with text/plain content
  • Added support for Narrative block
  • Added support for revisions. Deletions will get a strikethrough, Insertions an underline and overline Both get a title saying 'delete' or 'insert'. This feature is off by default, but above the TOC there's a toggle to switch revisions marks on or off. A little Javascript was used for that.
  • Added confidentiality to the title of the document if present and other than N (Normal). If someone took the effort to send the confidentiality it should be 'in your face' as recipient.
  • Added support for multiple section authors (used to be just one, and support was bugged)
  • Added support for (multiple) section informants
  • Added support for section subject
  • Added a switch to diable Javascript in case the environment requires that
  • Improved support for data type II when there's only a root and no extension
  • Improved support for the author organization which not displayed
  • Improved support for telecom and addr use codes. Now supports multiples
  • Improved support for names. Now gets out every node, supporting mixed mode too.
  • Improved readability for the support for lists by combining the two templates
  • Improved support for observationMedia by removing the limitation of just gif and jpeg. If the browser does not support a given type, then at least a question mark is displayed. Before there was nothing
  • Improved support for observationMedia by adding the id (if available) to the alt and title of the image
  • Added support for inline base64 images. HTML actually can deal with that too
  • Improved handling of addresses so it now walks through all nodes, support mixed content. Also, the elements are now handled in the order of the instance and not just US order
  • Improved support for dates by including a language switch. Now just handles en-US and nl-NL, but could handle more Likely more sophisticated support is in order, but this works for our purposes while leaving US conventions intact
  • Improved handling of names, addresses and telecom. The templates gave incorrect results for multiples of these, mixing the contents of the latter with the first. Added name use code to the display of names if available.
  • Fixed the author string in the main document info. It used to '-', but is now "Author" in any supported language

Below is here the list of changes in the versions of the stylesheet up to version 3.1.1. This version of the stylesheet implements all changes done up to version 3.1.1.
  • 05/14/2018 Alexander Henket Better use of variables (GForge#15683)
  • 02/15/2018 Alexander Henket Render recordTarget regardless of nullFlavor in id. Updated rendering of ids with nullFlavors (GForge#3590)
  • 02/15/2018 Alexander Henket Minor formatting fix to table/caption and ul captions. (GForge#3185)
  • 02/15/2018 Alexander Henket Fixed casing of "inFulfillmentOf" and added call to it under documentationOf (GForge#3169)
  • 09/19/2016 Rick Geimer Fixed some iframe issues (attribute typos). Added datauri support for nonXMLBody docs with B64 PDFs (does not work in IE or Edge as of this time, but does work in Chrome and FireFox).
  • 11/12/2014 Rick Geimer Minor formatting fix to authenticator.
  • 04/13/2014 Rick Geimer more security fixes. Added sandbox attribute to iframe. Added td to the list of elements with restricted table attributes (missed that one previously). Fixed some typos. Cleaned up CSS styles. Merged the table templates since they all use the same code. Fixed a bug with styleCode processing that could result in lost data. Added external-image-whitelist param.
  • 04/07/2014 Rick Geimer more security fixes. Limited copy of only legal CDA table attributes to XHTML output.
  • 04/07/2014 Rick Geimer more security fixes. Fixed some bugs from the hot fix on 4/6 ($uc and $lc swapped during some translates). Added limit-external-images param that defaults to yes. When set to yes, no URIs with colons (protocol URLs) or beginning with double slashes (protocol relative URLs) are allowed in observation media. I'll revise later to add a whitelist capability.
  • 04/06/2014 Rick Geimer security hot fixes: Addressed javascript in nonXMLBody/text/reference/@value and non-sanitized copy of all table attributes.
  • 01/05/2011 Jingdong Li updated.
  • 09/17/2010 Jingdong Li updated.
  • 08/25/2010 Jingdong Li updated.
  • 03/30/2010 Jingdong Li updated.
  • 12/11/2009 Kai Heitmann updated.
  • 08/12/2008 Jingdong Li updated.
Clone this wiki locally