Here is a snapshot of a VS dataset. It validates with no errors nor warnings in OpenCDISC (2.0).
See something special?
Now I let the "Smart Dataset-XML Viewer" validate the data using the following web services:
- check whether a CDISC unit is a correct unit for a given (VS) test code
- check whether a Vital signs "position" (VSPOS) is a correct "position" for a given (VS) test code
- mm[Hg] is not a valid unit for VSTESTCD=SYSBP (second row)
(remark that this data point came from an EHR, where UCUM notation is mandatory, but CDISC still does not allow UCUM...)
- cm is not a valid unit for VSSTRESU with VSTESTCD=SYSBP (same row)
- cm is not a valid unit for VSORRESU with VSTESTCD=SYSBP
obviously a data management error (although a mapping error cannot be excluded)
- SITTING is not a valid VSPOS ("position") with VSTESTCD=HEIGHT
The reason is that the latter does not implement this kind of plausibility rules. It e.g. just checks whether "cm" is a valid member of the [UNIT] codelist (which it is). But of course it is not applicable to a blood pressure.
Now, one could implement such plausibility rules in software (hardcode it as OpenCDISC mostly does for other rules), but why do that (with zero transparency) when a web service is available?
I must explicitely thank Anthony Chow (CDISC) who published these rules in the form of an Excel worksheet (see "CT Mapping/Alignment Across CodeLists" at the CDISC-CT website).
All I did was move this information into a database and write the RESTful web service for it.
This kind of functionality is exactly what CDISC users want to see in SHARE. My implementation is just a prototype of "proof of concept", and of course I am talking with CDISC about how this kind of web services can be provided by the real SHARE.