Validation rules for Product Monographs in the Extensible Markup Language (XML) format

May 28, 2021

Health Canada has updated the validation rules for Product Monographs (PMs) in the Extensible Markup Language (XML) format following a time period of production testing. These rules are built in accordance with the information provided in the following documents:

  • Guidance Document: Preparation of Product Monographs in the Extensible Markup Language Format
  • Food and Drug Administration: Structured Product Labeling (SPL) Implementation Guide with Validation Procedures

The purpose of the validation rules is to help ensure sponsors provide a valid XML file (and associated images) to Health Canada, and to reduce errors and follow-up with Sponsors. Sponsors are encouraged to use a commercially available tool to validate their XML PM prior to filing them to Health Canada.

Health Canada validates each XML PM as it is received. An XML PM Validation Report describing all errors, warnings and information statements will be emailed to the sponsor as a.pdf file attachment. Though eCTD submissions will not be held up at this time, sponsors are expected to resolve all errors in a timely manner.

Beginning June 14, 2021, Health Canada will be using XML PM Validation Rules version 2.0.

Should you have any questions regarding the content of this document, please email us at hc.dhpr-rmps.sc@canada.ca

Health Canada XML PM Validation Rules Version 2.0
ID# Rule Name Rule Description Severity
1 General
1.01 XML file XML files must be well formed and valid against the schema. Error
1.02 Image file type Referenced image files must be JPEG with the.jpeg extension. Error
1.03 File location All referenced image files must exist in the same folder as the XML file. Error
1.04 XML file name XML files must be named with the (Globally Unique Identifiers) GUID from the <document> <ID> root attribute. Error
1.05 GUID

Values for <setID> root attribute and <id> root attribute must not be empty, be unique and be a GUID.

GUIDs must follow the canonical structure, content and formatting rules: displayed in five groups separated by hyphens, in the form 8-4-4-4-12 for a total of 36 characters (32 alphanumeric characters and four hyphens) and permitted characters only include a-f,0-9,-

Note: Rule does not apply to <representedOrganization> root attribute and <assignedOrganization> root attribute.

Error
1.06 Date format Date values associated with <effectiveTime> must be provided in the format YYYYMMDD. Error
1.07 Controlled vocabulary Coded values and display names must be equal to the associated CV. Error
1.08 Controlled vocabulary Coded values must include a valid codeSystem attribute or root attribute and must be present only in allowable context as outlined in Appendix 1. Error
1.09 Controlled Vocabulary

Coded value terms used should have Status = "Active" from the CV system. Other status values will lead to Warnings or Errors. The overall rule severity will be the highest severity of the non-Active values based on the following table:

  • Status Code Value | Severity
  • Active | Pass
  • Deprecated | Warning
  • Temporary | Warning
  • Inactive | Error
  • <other> | Error
 
1.10 Display name

displayName attributes must be equal to the language-specific CV display name.

This does not apply to:

  • <representedOrganization> <Id> root attribute 2.16.840.1.113883.2.20.6.31.
  • <assignedOrganization> <Id> root attribute 2.16.840.1.113883.2.20.6.31.
Error
1.11 Identifier extensions <id> extension attributes must not contain spaces. Error
1.12 Empty elements <text>, <title>, <caption> and <content> must not be empty between opening and closing tags. Error
1.13 Characteristics <characteristics> must not have a classCode attribute. Error
1.14 Content in major section headings

Major section headings listed below must not be immediately followed by <text> or <paragraph>:

  • Code = "0TP" (TITLE PAGE)
  • Code = "pi00" (PART I: HEALTH PROFESSIONAL INFORMATION)
  • Code = "pii00" (PART II: SCIENTIFIC INFORMATION)
  • Code = "pim00" (PATIENT MEDICATION INFORMATION)
Error
1.15 Non-applicable data elements and attributes

The following elements and attributes must not be used:

  • <performance>
  • <actDefinition>
  • <product>
  • <manufacturedMaterialKind>
  • <confidentialityCode>
Error
1.16 Comments No comments (i.e. "<!-- -->") are allowed. Error
2 XML Prolog
2.01 XML version <?xml> version attribute must be equal to "1.0". The encoding attribute must equal "UTF-8". Error
2.02 Stylesheet <?xml-stylesheet> href attribute must be equal to "https://raw.githubusercontent.com/HealthCanada/HPFB/master/product-monograph/style-sheet/spl_canada.xsl". Error
2.03 Processing instructions Only <?xml> and <?xml-stylesheet> XML declarations are allowed. Error
3 Document
3.01 Schema location

<document> xmlns attribute must be equal to "urn:hl7-org:v3".

<document> xsi:schemaLocation attribute must be equal to " https://raw.githubusercontent.com/HealthCanada/HPFB/master/product-monograph/schema/SPL.xsd".

Error
3.02 Document identifier

<document> <id> root attribute must not be empty, be unique and be a GUID.

Error
3.03 Document Type

Values for <document> <code> must be taken from CV codeSystem 2.16.840.1.113883.2.20.6.10. Specifically:

  • The code attribute value must be equal to a CV Code.
  • The displayName attribute must be equal to the language-specific CV display name for that Code.
Error
3.04 Language

Values for <languageCode> must be taken from CV codeSystem 2.16.840.1.113883.2.20.6.29. Specifically:

  • The code attribute value must be equal to a CV Code.
  • The displayName attribute must be equal to the language-specific CV display name for that Code.
Error
3.05 setId <setId> root attribute must not be empty, be unique and be a GUID. Error
3.06 Version number <versionNumber> value attribute must be an integer greater than zero. Error
4 Organization (Market Authorization Holder / Importer or Distributor)
4.01 Company

Values for <representedOrganization> and <assignedOrganization> must be taken from CV root 2.16.840.1.113883.2.20.6.31. Specifically:

  • The <id> extension attribute value must be equal to a CV Code.
  • The <name> must be equal to the language-specific CV display name for that Code.
Error
4.02 Country

Values for <country> must be taken from CV codeSystem 2.16.840.1.113883.2.20.6.17. Specifically:

  • The code attribute value must be equal to a CV Code.
  • The displayName attribute must be equal to the language-specific CV display name for that Code.
Error
4.03 Market Authorization Holder

<representedOrganization> […] <addr> must not be empty for:

  • <streetAddressLine>
  • <city>
  • <state>
  • <postalCode>
  • <country>
Error
4.04 Distributor or importer <representedOrganization> with <country> code attribute not equal to "CAN" must contain <assignedOrganization> <contactParty> information. Error
4.05 Canadian distributor or importer <assignedOrganization> […] <country> code attribute must be equal to "CAN". Error
4.06 Distributor or importer address

<assignedOrganization> […] <addr> must not be empty for:

  • <streetAddressLine>
  • <city>
  • <state>
  • <postalCode>
  • <country>
Error
4.07 Postal code format

<postalCode> must contain alphanumeric characters.

Canadian postal codes must be in "A1A 1A1" format with a single white space separating the third and fourth characters.

Warning
4.08 Contact information

There must be three <telecom> elements with value attributes starting with the following:

  • "tel:+"
  • "mailto:"
  • "http:" or "https:"
Warning
4.09 email address <telecom> value attribute for "mailto:" must be in local-part@domain format. Warning
5 Manufactured Product
5.01 Drug Identification Number (DIN) <manufacturedProduct> <code> is required. The code attribute value must be an 8-digit number that may contain leading zeros. Warning
5.02 Brand name <manufacturedProduct> <name> must not be empty. Warning
5.03 Dosage form

Values for <formCode> must be taken from CV codeSystem 2.16.840.1.113883.2.20.6.3. Specifically:

  • The code attribute value must be equal to a CV Code.
  • The displayName attribute must be equal to the language-specific CV display name for that Code.
Error
5.04 Non-proprietary name A <genericMedicine> <name> is required. Warning
5.05 Ingredient name

Values for <ingredientSubstance> <code> must be taken from CV codeSystem 2.16.840.1.113883.2.20.6.14.

Specifically:

  • The code attribute value must be equal to a CV Code.
  • The displayName attribute must be equal to the language-specific CV display name for that Code.
Error
5.06 Ingredient name <ingredientSubstance> <name> must equal the <ingredientSubstance> <code> displayName attribute. Error
5.07 Ingredient code Within a <manufacturedProduct> the <ingredientSubstance> <code> code attribute must only be used once. Error
5.08 Ingredient role

Values for <ingredient> must be taken from CV codeSystem 2.16.840.1.113883.2.20.6.39. Specifically:

  • The classCode attribute must be equal to the language-specific CV display name.
Error
5.09 Active ingredient strength If <ingredient> classCode attribute equals "ACTIB", "ACTIM" or "ACTIR" then <quantity> <numerator> and <quantity> <denominator> must not be empty. Error
5.10 Ingredient strength The value attribute and unit attribute must not be empty for <quantity> <numerator> and <quantity> <denominator>. Error
5.11 Ingredient strength

Values for <quantity> <numerator> must be taken from CV codeSystem 2.16.840.1.113883.2.20.6.15.

Specifically:

  • The unit attribute must be equal to the CV code.
Error
5.12 Ingredient strength

Values for <quantity> <denominator> must be taken from CV codeSystem 2.16.840.1.113883.2.20.6.15.

Specifically:

  • The unit attribute must be equal to the CV code.
Error
5.13 Quantity Within a <manufacturedProduct> all <quantity> <denominator> value attributes and unit attributes must be the same. Error
5.14 Active ingredient strength range

When <quantity> <numerator> is expressed as a range:

  • <ingredient> classCode attribute must equal "ACTIB", "ACTIM" or "ACTIR".
  • <numerator> xsi:type attribute must equal "URG_PQ".
  • <numerator> <low> unit attribute must equal the <numerator> <high> unit attribute.
  • <denominator> value attribute and the <denominator> unit attribute must equal "1".
Error
6 Packaging Status (single formulation)
6.01 Packaging Each <manufacturedProduct> must contain <asContent>. Error
6.02 Package identifier <containerPackagedProduct> <code> code attribute must not be empty. Information
6.03 Package description quantity Each <manufacturedProduct> <asContent> <quantity> must contain <numerator> value attribute and <denominator> value attribute. Error
6.04 Package description <quantity> <numerator> value attribute must be greater than zero and unit attribute must not be empty. Error
6.05 Package description units <quantity> <numerator> unit attribute must be a code from CV codeSystem 2.16.840.1.113883.2.20.6.15. Error
6.06 Inner package description The outermost occurrence of the <asContent> <quantity> <numerator> unit attribute must equal the <ingredient> <quantity> <denominator> unit attribute. Error
6.07 Package description hierarchy

If any <asContent> contains a nested <asContent> then the upper <quantity> <denominator> unit attribute must equal the lower <asContent> <quantity> <numerator> unit attribute.

Note that the unit attribute may be empty, representing "1".

Warning
6.08 Inner package description

Outermost occurrence of <asContent> <quantity> <denominator> value attribute must be equal to 1.

Outermost occurrence <asContent> <quantity> <denominator> unit attribute, if present, must be equal to 1.

Error
6.09 Package type

Values for <formCode> must be taken from CV codeSystem 2.16.840.1.113883.2.20.6.32.

Specifically:

  • The code attribute value must be equal to a CV Code.
  • The displayName attribute must be equal to the language-specific CV display name for that Code.
Error
6.10 Packaging type Any <containerPackagedProduct> <formCode> code attribute may only appear once in a given packaging hierarchy. E.g. a box may not contain a box. Error
6.11 Packaging Status <manufacturedProduct> <asContent> <subjectOf> <marketingAct> <effectiveTime> must contain <low> value attribute in YYYYMMDD format. Warning
7 Packaging Status (multiple formulations)  
7.01 Product part If <formCode> code attribute is equal to "C43197" then at least one <part> must be provided. Error
7.02 Overall package description If a <manufacturedProduct> contains <part> then the <manufacturedProduct> <asContent> <quantity> <numerator> must have a unit attribute and value attribute equal to 1. Error
7.03 Overall package description

If a <manufacturedProduct> contains <part> then:

  • <manufacturedProduct> must contain <part> <quantity> <numerator> value attribute
  • <manufacturedProduct> must contain <part> <quantity> <denominator> value attribute
Error
7.04 Total product quantity <part><quantity><numerator> unit attribute must equal <part><partProduct><asContent> <quantity><numerator> unit attribute. Error
7.05 As content data element If <part> does not contain <asContent> (i.e. no internal part-specific packaging is described) then <part><quantity><numerator> unit attribute must equal "1". Error
7.06 Package identifier <part> […] <containerPackagedProduct> <code> code attribute must not be empty. Information
8 Package Availabile
8.01 Package available The innermost occurrence <asContent> must have one <marketingAct> <code>. Error
8.02 Package available

Values for <marketingAct> <code> must be taken from CV codeSystem 2.16.840.1.113883.2.20.6.11.

Specifically:

  • The code attribute value must be equal to a CV Code.
  • The displayName attribute must be equal to the language-specific CV display name for that Code.
Error
9 Product Status
9.01 Regulatory activity type

Values for <approval> <code> must be taken from CV codeSystem 2.16.840.1.113883.2.20.6.37.

Specifically:

  • The code attribute value must be equal to a CV Code.
  • The displayName attribute must be equal to the language-specific CV display name for that Code.
Error
9.02 Regulatory activity type <manufacturedProduct> must have one <approval> <code>. Error
9.03 Territorial authority

<approval> […] <territory> <code> code attribute must be taken from CV codeSystem 2.16.840.1.113883.2.20.6.17 and be equal to "CAN".

Specifically:

  • The code attribute value must be equal to a CV Code.
  • The displayName attribute must be equal to the language-specific CV display name for that Code.
Error
9.04 Control Number <approval> <id> must not be empty. The <id> extension attribute must be a 6-digit number. Warning
9.05 Product Status If <manufacturedProduct> <subjectOf> <marketingAct> <effectiveTime> contains <high> value attribute, it must be in YYYYMMDD format and be greater than the <manufacturedProduct> <subjectOf> <marketingAct><effectiveTime> <low> value attribute. Warning
10 Product Characteristics
10.01 Product characteristics

Value for <characteristic> <code> must be taken from CV codeSystem 2.16.840.1.113883.2.20.6.23.

Specifically:

  • The code attribute value must be equal to a CV Code.
  • The displayName attribute must be equal to the language-specific CV display name for that Code.
Error
10.02 Characteristic types

Value for <characteristic> <value> must be taken from CV codeSystem as listed below.

Specifically:

  • The code attribute value must be equal to a CV Code.
  • The displayName attribute must be equal to the language-specific CV display name for that Code.
  • Product Type: 2.16.840.1.113883.2.20.6.53
  • Colour: 2.16.840.1.113883.2.20.6.24
  • Shape: 2.16.840.1.113883.2.20.6.25
  • Score: 2.16.840.1.113883.2.20.6.4
  • Flavour: 2.16.840.1.113883.2.20.6.26
  • Pharmaceutical Standard: 2.16.840.1.113883.2.20.6.5
  • Schedule: 2.16.840.1.113883.2.20.6.2
  • Therapeutic Class: 2.16.840.1.113883.2.20.6.6
Error
10.03 Characteristic value type

<characteristic> <code> code attribute value must correspond with the <characteristic> <value> xsi:type attribute value using the Table.

Error
10.04 Numeric value types When <characteristic> <value> xsi:type is "PQ" (SIZE) the value attribute must be an integer greater than zero and the <characteristic> <value> unit attribute must not be empty. Error
11 Route of Administration
11.01 Route of Administration

Value for <substanceAdministration> <routeCode> must be taken from CV codeSystem 2.16.840.1.113883.2.20.6.7.

Specifically:

  • The code attribute value must be equal to a CV Code.
  • The displayName attribute must be equal to the language-specific CV display name for that Code.
Error
12 Narrative Content
12.01 Product Monograph template

Values for <section> <code> must be taken from CV codeSystem 2.16.840.1.113883.2.20.6.60 or 2.16.840.1.113883.2.20.6.63. Specifically:

The code attribute value must be equal to a CV Code.

The displayName attribute must be equal to the language-specific CV display name for that Code.

Error
12.02 Sections

The following major section headings must be provided:

  • Code = "0TP" (TITLE PAGE)
  • Code = "pi00" (PART I: HEALTH PROFESSIONAL INFORMATION)
  • Code = "pii00" (PART II: SCIENTIFIC INFORMATION)
  • Code = "1RMLC" (RECENT MAJOR LABEL CHANGES)
Error
12.03 Sections

The following major section headings should be provided:

  • Code = "pim00" (PATIENT MEDICATION INFORMATION)
  • Code = "0NOC" (NOTICE OF COMPLIANCE WITH CONDITIONS)
  • Code = "0BBD" (BIOSIMILAR BIOLOGIC DRUG) applies only to 2.16.840.1.113883.2.20.6.63
Warning
12.04 Section headings

<section> displayName attribute must equal the <title>.

This rule does not apply to:

  • Where <code> equals "UA"
  • Where <code> equals "pmi##" when "##" is greater than "01"
  • Where <code> equals "CG"
Error
12.05 Id root <section> <id> root attribute must not contain extensions or other data elements. Error
12.06 Id root <id> root attribute must not be empty, be unique and be a GUID. Error
12.07 Section effective time <section> must have an <effectiveTime> with the format YYYYMMDD. Error
12.08 Section headings <section> ID attribute must not be empty. Warning
12.09 Narrative text Narrative text must be enclosed under <paragraph>, <list>, or <table> elements. Text must not be enclosed directly within the <text> element. Error
13 Cross-references
13.01 Internal cross-references

If <linkHtml> href attribute value begins with '#' then it must reference one of the following.

  • <section> ID attribute
  • <paragraph> ID attribute
  • <table> ID attribute
  • <list> ID attribute
  • <content> ID attribute
  • <renderMultiMedia> ID attribute
  • <id> root attribute
Error
13.02 External cross-references If <linkHtml> href attribute value does not begin with '#' then it must be a properly formatted web reference. Error
14 Title Page
14.01 Approval date structure <section> <code> code attribute value equal to "0tp1.3" must exist even if <paragraph> is empty. Error
14.02 Textual date format

<section> <text> must have a single <paragraph> in "YYYY-MM-DD" (e.g. "2020-03-25") format when <section> <code> code attribute value is one of the following:

  • "0tp1.3" ("Date of Initial Approval:") or
  • "0tp1.4" ("Date of Revision:")
Warning
14.03 Control number structure <section> <code> code attribute value equal to "0tp1.5" must exist even if <paragraph> is empty. Error
14.04 Control number If <section> <code> code attribute value equals "0tp1.5" then it must have a single <paragraph> with a 6-digit number. Warning
15 Images
15.01 Image description <observationMedia> <text> must not be empty. Error
15.02 Image data type <observationMedia> <value> xsi:type attribute must be equal to "ED". Error
15.03 Image media type <observationMedia> <value> mediaType must be equal to "image/jpeg". Error
15.04 Reference file name <reference> value attribute must match the file name of a provided image and may not include directory path information. Error
15.05 Image size The size of the image file must not exceed 1 MB. Information
15.06 Unused images <observationMedia> must have an associated <renderMultiMedia> referencedObject attribute. Error
15.07 Invalid reference <renderMultiMedia> referencedObject attribute must match an <observationMedia> ID attribute. Error
Appendix 1- Valid codeSystem attributes or root attribute in allowable contexts
Codesystem Oid Codesystem Name Valid Xml Contexts
2.16.840.1.113883.2.20.6.2 Schedule <Characteristic> <Value> Codesystem Attribute
2.16.840.1.113883.2.20.6.3 Dosage Forms <Formcode> <Code> Codesystem Attribute
2.16.840.1.113883.2.20.6.4 Score <Characteristic> <Value> Codesystem Attribute
2.16.840.1.113883.2.20.6.5 Pharmaceutical Standard <Characteristic> <Value> Codesystem Attribute
2.16.840.1.113883.2.20.6.6 Therapeutic Class <Characteristic> <Value> Codesystem Attribute
2.16.840.1.113883.2.20.6.7 Route of Administration <Substanceadministration> <Routecode> Codesystem Attribute
2.16.840.1.113883.2.20.6.10 Document Type <Document> <Code> Codesystem Attribute
2.16.840.1.113883.2.20.6.11 Package Available <Marketingact> <Code> Codesystem Attribute
2.16.840.1.113883.2.20.6.14 Ingredient Identifier

<Ingredientsubstance> <Code> Codesystem Attribute

<Activemoiety> <Code> Codesystem Attribute

<Definingsubstance> <Code> Codesystem Attribute

2.16.840.1.113883.2.20.6.15

Note : This Oid Is Used for Validation but Does Not Appear in the Xml

Units of Measure

<Quantity> <Numerator> Unit Attribute

<Quantity> <Denominator> Unit Attribute

2.16.840.1.113883.2.20.6.17 Country Code

<Country> Codesystem Attribute

<Approval> [...] <Territory> <Code> Codesystem Attribute

2.16.840.1.113883.2.20.6.23 Product Characteristics <Characteristic> <Code> Codesystem Attribute
2.16.840.1.113883.2.20.6.24 Colour <Characteristic> <Value> Codesystem Attribute
2.16.840.1.113883.2.20.6.25 Shape <Characteristic> <Value> Codesystem Attribute
2.16.840.1.113883.2.20.6.26 Flavour <Characteristic> <Value> Codesystem Attribute
2.16.840.1.113883.2.20.6.29 Language Code <Languagecode> Codesystem Attribute
2.16.840.1.113883.2.20.6.31 Company Identifier

<Representedorganization> <Id> Root Attribute

<Assignedorganization> <Id> Root Attribute

2.16.840.1.113883.2.20.6.32 Package Type <Formcode> Codesystem Attribute
2.16.840.1.113883.2.20.6.37 Regulatory Activity <Approval> <Code> Codesystem Attribute

2.16.840.1.113883.2.20.6.39

Note : This Oid Is Used for Validation but Does Not Appear in the Xml

Ingredient Role <Ingredient> Classcode Attribute
2.16.840.1.113883.2.20.6.53 Product Type <Characteristic> <Value> Codesystem Attribute
2.16.840.1.113883.2.20.6.60 2016 Product Monograph Template - Standard <Section> <Code> Codesystem Attribute
2.16.840.1.113883.2.20.6.63 Master Template - 2020 <Section> <Code> Codesystem Attribute
Report a problem or mistake on this page
Please select all that apply:

Thank you for your help!

You will not receive a reply. For enquiries, contact us.

Date modified: