Skip to content
This repository has been archived by the owner on Oct 12, 2023. It is now read-only.

Commit

Permalink
Merge pull request #198 from nrejack/form_events_xsd
Browse files Browse the repository at this point in the history
Adding validation for formEvents.xml
  • Loading branch information
senrabc committed Apr 7, 2016
2 parents 8aae266 + 0b4d857 commit dbe740e
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 2 deletions.
2 changes: 2 additions & 0 deletions redi/redi.py
Original file line number Diff line number Diff line change
Expand Up @@ -706,6 +706,8 @@ def parse_form_events(form_events_file):
logger.info("Form events file contains {} lines." \
.format(str(sum(1 for line in raw))))

validate_xml_file_and_extract_data(form_events_file, pkg_resources.resource_filename(
'redi', 'utils/formEvents.xsd'))
data = etree.parse(form_events_file)
event_sum = len(data.findall(".//event"))
logger.debug(str(event_sum) + " total events read into tree.")
Expand Down
33 changes: 33 additions & 0 deletions redi/utils/formEvents.xsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?xml version ="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="redcapProject">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="form" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="formDateField" type="xs:string"/>
<xs:element name="formFieldDetected" type="xs:string" minOccurs="0"/>
<xs:element name="formQuantifiedField" type="xs:string" minOccurs="0"/>
<xs:element name="formCompletedFieldName" type="xs:string"/>
<xs:element name="formCompletedFieldValue" type="xs:int"/>
<xs:element name="formImportedFieldName" type="xs:string" minOccurs="0"/>
<xs:element name="formImportedFieldValue" type="xs:string" minOccurs="0"/>
<xs:element name="formFieldNotes" type="xs:string" minOccurs="0"/>
<xs:element name="formFieldVerbatim" type="xs:string" minOccurs="0"/>
<xs:element name="event" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
4 changes: 2 additions & 2 deletions test/TestParseAll.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ def test_parse_form_events(self):
<name>cbc</name>
<formDateField>cbc_lbdtc</formDateField>
<formCompletedFieldName>cbc_complete</formCompletedFieldName>
<formImportedFieldName>cbc_nximport</formImportedFieldName>
<formCompletedFieldValue>2</formCompletedFieldValue>
<formImportedFieldName>cbc_nximport</formImportedFieldName>
<formImportedFieldValue>Y</formImportedFieldValue>
<event>
<name>1_arm_1</name>
Expand All @@ -62,8 +62,8 @@ def test_parse_form_events(self):
<name>chemistry</name>
<formDateField>chem_lbdtc</formDateField>
<formCompletedFieldName>chemistry_complete</formCompletedFieldName>
<formImportedFieldName>chem_nximport</formImportedFieldName>
<formCompletedFieldValue>2</formCompletedFieldValue>
<formImportedFieldName>chem_nximport</formImportedFieldName>
<formImportedFieldValue>Y</formImportedFieldValue>
<event>
<name>1_arm_1</name>
Expand Down

0 comments on commit dbe740e

Please sign in to comment.