Skip to content

QTI export support

Context

In addition to Word exports for the assessment builder, Question and Test Interoperability (QTI) exports should be implemented to support assessments on learning management systems (LMSs).

Use Case:

As an Instructor, I want to be able to import QTI files, including both individual QTI zip files and lists of questions in QTI format from a zip folder. So that I can add these questions for import to a LMS platform.

As a User, I can: Export a Single Question:

  • Go to "Browser Questions."
  • Find the question you want to export.
  • Open the question.
  • Click the "Export to QTI" button on the top right.

Export a List of Questions:

  • Add questions to a list.
  • Go to the lists page.
  • Select the list containing your questions.
  • Click "Export" and choose "Export to QTI."

Export a Part of a List: -Open the list containing the questions.

  • Select the questions you want to export.
  • Click "Export" and choose "Export to QTI."
  • A zip file will be downloaded.
  • In all cases, a zip file will be downloaded

The zip file is now ready to import into the chosen LMS platform. The steps for this will depend on the chosen LMS.

An example of Importing QTI zip files to Canvas (LMS): In Canvas LMS, go to a course page.

  • Click "Settings" and select "Import course content."
  • Upload the zip file containing your questions.
  • Add the questions to a question bank.

Edit or Create a Quiz:

  • After the import is complete, go to "Quizzes."
  • Create a new quiz or open an existing one and edit it.

Add Questions to the Quiz:

  • In the "Questions" tab of the quiz, click "Find Questions."
  • Select the question bank where you imported your questions.
  • Choose the questions you want to add.
  • Click "Add Questions."
  • Verify Question Inclusion:
  • The selected questions should now appear listed inside the quiz.

Proposal

The SCORM exporter for LMSs should be replaced with QTI. This will allow questions created in the assessment builder to be tested by a variety of users of multiple platforms. The following LMSs should be considered (in order of priority):

  1. Canvas
  2. Blackboard
  3. D2L
  4. Moodle

Based on an investigation done into the baseline version supported for the above LMSs, QTI 2.1 has the best support. All but Moodle use QTI natively, while Moodle supports Blackboard question exports.

Design

This feature should follow the existing UI used by Word and SCORM exports, where a published question can be exported into a zip file that's downloaded onto the users machine.

As QTI handles the actual design and layout of questions and content, as well as assessment of responses, these are not part of the scope.

The QTI exports should be compliant with LMS expectations and work with platforms that support QTI 2.1.

Important

We need to test the export result in the LMSs as early as possible in the development process so we can understand the end result and how much we can control in Wax and the strcuture of the QTI export.

Technical approach (options)

A question was raised by HHMI regarding converting Word documents into QTI exports to be used with LMSs. This lead to an investigation, yielding three possible paths. We recommend approach 1 below because it gives us the most control over the end result, it's preferable for code maintenance, and we can use some of the code from the SCORM development.

1. Write a custom Wax to QTI converter

This implementation would be based on the content and information above. It would give us full control over the workflow and versioning of the exports, as we would be able to customise the outputs to our internal Wax json format. However, we would need to write the QTI exporter engine. There are some resources already available in the codebase to ease the start and structure of the export. Therefore it wouldn’t be a clean start.

2. Adapt Word exporter to support third party

Some third parties do support converting Word documents into QTI. Some services are paid, others are free for Windows, and others require command line tools to be used, mostly not written in JavaScript/for Node (https://github.com/murraylax/canvasquizzeR, https://github.com/gpoore/text2qti). These have different input requirements, whether it be the file type or content format. This means we would need to know which third party to specifically target, giving the client an option to control their ideal third party provider and versioning. Additionally there is a risk that is option does not met the dependency licence required by HHMI. Dev time should be reduced, as we would adapt the existing Word exporter for a specific third party. In the end, the client may not like this solution as the assessment builder would not provide a clean, simple zip file to use, and they have to do extra steps on their end to get the resource.

3. Use a plugin as a dependency

Ideally we are looking for something that takes in json, but we can adapt around that and input whatever is needed. This has a minor advantage of doing the exporter dev in-house, as we would still need to translate Wax to their desired input, but this would still have faster dev time, although not significantly so. I tried to look through yarn’s packages for a “qti” dependency we could install, and easily export the zip when requested. Instead, I found packages that rendered QTI files and extracted information. For now, this does not seem the likely route, unless there does exist such a package with an odd label.

Implementation based on approach 1: Write a custom Wax to QTI converter

The approach that was planned for this exporter was to adapt the existing SCORM exporter, due to similarities in structure and functionality. The SCORM exporter is a Wax-to-React converter, and uses custom JavaScript to handle answers and grade the user based on the decisions made on the requirements. This would be the main difference between the two; QTI has the grading done by the system itself, and has question choices built in natively to handle quizzes. This allows us to convert the part of the SCORM exporter that handles questions to rather wrap content in the relevant question XML, instead of handling the question manually. Of course there would still be some major rewrites, but the existing SCORM exporter is a good starting point.

The JSON-to-XML converter can be used too, in conjunction with the SCORM exporter, which could rather convert Wax to simple JSON, then the JSON gets converted to QTI's XML.

This is a sample of a QTI question:

<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_v2p1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p1 http://www.imsglobal.org/xsd/qti/qtiv2p1/imsqti_v2p1.xsd" identifier="choiceMultiple" title="Composition of Water" adaptive="false" timeDependent="false">
	<responseDeclaration identifier="RESPONSE" cardinality="multiple" baseType="identifier">
		<correctResponse>
			<value>H</value>
			<value>O</value>
		</correctResponse>
		<mapping lowerBound="0" upperBound="2" defaultValue="-2">
			<mapEntry mapKey="H" mappedValue="1"/>
			<mapEntry mapKey="O" mappedValue="1"/>
			<mapEntry mapKey="Cl" mappedValue="-1"/>
		</mapping>
	</responseDeclaration>
	<outcomeDeclaration identifier="SCORE" cardinality="single" baseType="float"/>
	<itemBody>
		<choiceInteraction responseIdentifier="RESPONSE" shuffle="true" maxChoices="0">
			<prompt>
			Which of the following elements are used to form water?
			</prompt>
			<simpleChoice identifier="H" fixed="false">Hydrogen</simpleChoice>
			<simpleChoice identifier="He" fixed="false">Helium</simpleChoice>
			<simpleChoice identifier="C" fixed="false">Carbon</simpleChoice>
			<simpleChoice identifier="O" fixed="false">Oxygen</simpleChoice>
			<simpleChoice identifier="N" fixed="false">Nitrogen</simpleChoice>
			<simpleChoice identifier="Cl" fixed="false">Chlorine</simpleChoice>
		</choiceInteraction>
	</itemBody>
	<responseProcessing template="http://www.imsglobal.org/question/qti_v2p1/rptemplates/map_response"/>
</assessmentItem>

Here are a few resources to guide through QTI development:

Sidenote: the current SCORM exporter does not support the new images that are stored in the file system (rather than the database), and any new changes that may have been done to Wax. But most of the core functionality should be ready for porting.

Scheduling

Highest priority in Phase 2 development

Edited by Natasha Budd