Validation rules for Product Monographs in the Extensible Markup Language (XML) format
Date: September 1, 2022
Our file number: 9999
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.
Version of the XML PM Validation Rules: 2.1
Effective date: 2022-09-01
Should you have any questions regarding the content of this document, please email us at xmlpm-pmxml@hc-sc.gc.ca.
Date | Version | Summary of changes |
---|---|---|
2022-09-01 | 2.1 | 2.02 - Revised Stylesheet location |
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. |
- |
1.10 | Display name | displayName attributes must be equal to the language-specific CV display name. This does not apply to:
|
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>:
|
Error |
1.15 | Non-applicable data elements and attributes | The following elements and attributes must not be used:
|
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://health-products.canada.ca/product-monograph/style-sheet/v_#_#/spl_canada.xsl". |
Error |
2.03 | Processing instructions | Only <?xml> and <?xml-stylesheet> XML declarations are allowed. | Error |
2.04 | Style Sheet Version | Values for style sheet version "v_#_#" must be taken from CV codeSystem 2.16.840.1.113883.2.20.6.65 and must be equal to a CV Code. The overall rule severity will be the highest severity of the non-Active values based on the following table. |
- |
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 |
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:
|
Error |
3.04 | Language | Values for <languageCode> must be taken from CV codeSystem 2.16.840.1.113883.2.20.6.29. Specifically:
|
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:
|
Error |
4.02 | Country | Values for <country> must be taken from CV codeSystem 2.16.840.1.113883.2.20.6.17. Specifically:
|
Error |
4.03 | Market Authorization Holder | <representedOrganization> […] <addr> must not be empty for:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
Error |
6 | Packaging status | ||
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:
|
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 (multi-part products) | ||
7.01 | Rule repealed | Rule repealed | - |
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:
|
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 | Rule repealed | Rule repealed | - |
8.02 | Rule repealed | Rule repealed | - |
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:
|
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:
|
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:
|
Error |
10.02 | Characteristic types | Value for <characteristic> <value> must be taken from CV codeSystem as listed below. Specifically:
|
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:
|
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:
|
Error |
12.03 | Sections | The following major section headings should be provided:
|
Warning |
12.04 | Section headings | <section> displayName attribute must equal the <title>. This rule does not apply to:
|
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.
|
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:
|
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 |
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 | Inactive |
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 | Inactive |
2.16.840.1.113883.2.20.6.63 | Master Template - 2020 | <Section> <Code> Codesystem Attribute |
Page details
- Date modified: