Multiple Choice Questions in CDISC ODM
We regurarly get questions about “multiple choice” or “check all that apply” questions in CDISC ODM, i.e. questions that seemingly have a codelist, but for which it is allowed to check or select more than one answer.
Consider the question: “Did you suffer any of the following tropical diseases in the last five years? Please check all that apply”
The ODM specification does not tell us how to treat such questions. Obviously, we cannot use a CodeList, as there is also a rule that states that within an ItemGroupData, the same ItemOID may only occur once.
So the following is not allowed:
<ItemGroupData ItemGroupOID="..."> <ItemData ItemOID="**IT.TROPICAL_DISEASE**" Value="Malaria"/> <ItemData ItemOID="**IT.TROPICAL_DISEASE**" Value="Schistosomiasis"/> </ItemGroupData>
Also using a list of comma-separated values is not a good idea, as the value itself may contain a comma. So the following is also not good:
<ItemGroupData ItemGroupOID="..."> <ItemData ItemOID="IT.TROPICAL_DISEASE" Value="Malaria, Schistosomiasis"/> </ItemGroupData>
So, what can we do?
In such cases, it is always a good idea to take a step back and go back to the basics. What is a multiple-choice list?
Essentially, it is a list of items for which each can have the value “true” or “false”, e.g. “Yes, I did have malaria”, and “No, I did not have Dengue”. So let us treat this as a list of items with boolean values! ODM does support the “boolean” data type as of v.1.3. So we could write the following in the “Study” part of the ODM:
<ItemDef OID="IT.CHAGAS" Name="Chagas disease" DataType="boolean"/> <ItemDef OID="IT.DENGUE" Name="Dengue" DataType="boolean"/> <ItemDef OID="IT.LEISHMANIASIS" Name="Leishmaniasis" DataType="boolean"/> <ItemDef OID="IT.MALARIA" Name="Malaria" DataType="boolean"/> <ItemDef OID="IT.ONCHORCIASIS" Name="Onchocerciasis (river blindness)" DataType="boolean"/> <ItemDef OID="IT.SCHISTOSMIASIS" Name="Schistosomiasis (snail fever)" DataType="boolean"/>
Essentially, it is besser to explicitely have the question itself in the “Question” child element, especially when the study runs in several countries with different languages. For example:
<ItemDef OID="IT.SCHISTOSMIASIS" Name="Schistosomiasis (snail fever)" DataType="boolean"> <Question> <TranslatedText xml:lang="en">Schistosomiasis (snail fever)</TranslatedText> <TranslatedText xml:lang="de">Schistosomiasis (Bilharziose)</TranslatedText> </Question> </ItemDef>
Now, at first sight, this might seem to be a bit tricky, as we have to group Items to ItemGroups, using “ItemRef”. So:
<ItemGroupDef OID="IG.TROPICAL_DISEASES" Name="Tropical Diseases"> <ItemRef ItemOID="IT.CHAGAS" Mandatory="Yes"/> <ItemRef ItemOID="IT.DENGUE" Mandatory="Yes"/> <ItemRef ItemOID="IT.LEISHMANIASIS" Mandatory="Yes"/> <ItemRef ItemOID="IT.MALARIA" Mandatory="Yes"/> <ItemRef ItemOID="IT.ONCHORCIASIS" Mandatory="Yes"/> <ItemRef ItemOID="IT.SCHISTOSMIASIS" Mandatory="Yes"/> </ItemGroupDef>
Now, as you have see I have set “Mandatory” to “Yes” in each case. This ensures that in the ClinicalData, there MUST be an ItemData for each of the six items, each containing a value of “true” or “false”. The best way to implement this in a form would be to have two checkboxes after each question with the choices “Yes” and “No”. Like that, I am sure that the subject did not forget an item, i.e. really thought about it whether he/she has suffered or not of the specific disease in the last first years. If I had set the “Mandatory” to “No”, there does not have to be an “ItemData” for each question, but I could then implement it as having only one checkbox after each disease item, which is checked when the patient has suffered from the disease. The disadvantage of that is that I will never know whether the subject really did not suffer of Dengue, or that the subject forget to answer the question.
Personally, I prefer the former, as it is clearer and ensures that the subject really looked at each of the items. I.e. the data quality will be better. Of course, it is more work for the subject to fill in the form.
Now, you will say “where is the overal question 'Did you suffer any of the following tropical diseases in the last five years?'”?
Well, that can be described in the “Description” element of “ItemGroupDef”. For example:
<ItemGroupDef OID="IG.TROPICAL_DISEASES" Name="Tropical Diseases"> <Description> <TranslatedText xml:lang="en">Did you suffer any of the following tropical diseases in the last five years?</TranslatedText> <TranslatedText xml:lang="de">Haben Sie sich an eine der folgenden Krankheiten erkrankt in den letzten fünf Jahren?</TranslatedText> </Description> <ItemRef ItemOID="IT.CHAGAS" Mandatory="Yes"/> <ItemRef ItemOID="IT.DENGUE" Mandatory="Yes"/> <ItemRef ItemOID="IT.LEISHMANIASIS" Mandatory="Yes"/> <ItemRef ItemOID="IT.MALARIA" Mandatory="Yes"/> <ItemRef ItemOID="IT.ONCHORCIASIS" Mandatory="Yes"/> <ItemRef ItemOID="IT.SCHISTOSMIASIS" Mandatory="Yes"/> </ItemGroupDef>
Maybe you will now say “OK Jozef, but you have overstretched the interpretation of the ODM specification a bit”, and I must admit that this may be true.
However, I think this is currently the cleanest way of implementing multiple choice or “check all that apply” questions using the current version of the ODM. It is in my opinion also an implementation that is easily mappable to the CDISC SDTM, e.g. using our popular SDTM-ETL software. In SDTM-ETL, you just drag-and-drop the whole ItemGroup to the SDTM cell (probably MHTERM in this case), and in the following wizard, check the box “Generalize for all Items in the ItemGroup”.
Of course, for a next version of the ODM, the team will look into this again, and maybe come with an even better solution. One of the things were are thinking about anyway is about “nested” ItemGroups, i.e. “ItemGroups within ItemGroups”.