fhir-crucible / crucible

🔥 Crucible web application for testing FHIR servers
77 stars 25 forks source link

Crucible - FHIR Testing ... Test Validation and Test Verification #209

Closed Interopguy closed 7 years ago

Interopguy commented 7 years ago

The following example is a single occurrence and a random deep dive on a single test case (it is representative of the types of issues being located and reported on - be advised we cannot report on or provide documented input to all the related/similar issues being identified throughout Crucible). Our report is more to provide an overall assessment and software quality review into the test "process" than this particular error submission.

For the purpose of this report we will be speaking to Crucible production release against STU3 version 1.6.

For the purpose of this report the SUT (System Under Test) could be any HL7 FHIR STU3 version 1.6 implementation with server side validation turned on (so the server is validating the exchange of messages between a client and server).

For our report we will be using the test - "X010 Condition: Create New" (found under the Clinical Resource Test Suite) (Crucible message attached as an example).


1. Value sets and coded values - FHIR defines Languages Value Set here (http://hl7.org/fhir/2016Sep/valueset-languages.html)
Sample Crucible message ... denotes en-US as being used.
xml version="1.0" encoding="utf-8"
Condition xmlns="http://hl7.org/fhir"
language value="en-US"

Sample of valid FHIR Client message ... according to FHIR published standards
xml version="1.0" encoding="utf-8"
Condition xmlns="http://hl7.org/fhir"
language value="en"


2. Value sets and coded values identifier and identifier-type (http://hl7.org/fhir/valueset-identifier-type.html) - includes coded values for display value
Sample Crucible message ... denotes random generated values as being used.
display value="LBCEub3uT+9Du/AjZ5+4Ww=="

Sample of valid FHIR Client message ... according to FHIR published standards
display value="Filler Identifier"


3. Value sets and coded values category (http://hl7.org/fhir/valueset-condition-category.html)
Sample Crucible message ... denotes random generated values as being used.
display value="lo7PNT44qxChlTvBu8rmEA=="

Sample of valid FHIR Client message ... according to FHIR published standards
display value="Finding"


4. Value sets and coded values severity (http://snomed.info/sct)
Sample Crucible message ... denotes random generated values as being used.
display value="Xl7yj5HCtO+8/O7tW+/B4g=="

Sample of valid FHIR Client message ... according to FHIR published standards
display value="Mild"


5. Value sets and coded values onsetRange (http://hl7.org/fhir/2016Sep/datatypes.html#Range)
Sample Crucible message ... denotes random generated values as being used.
unit value="TdXRLbDXmoEdj58YZag4Nw=="

Sample of valid FHIR Client message ... according to FHIR published standards
unit value="drams"


6. Complex but related data values such as abatementRange (low and high values)
e.g. the low value is higher than the high value (fails simple validation rules)
Sample Crucible message ... denotes random generated values as being used.
low value value="0.14087090599202667"
high value value="0.0935924878064125"

A common adage among Testers is our need to ensure we "Test-the-Test" - (ISO refers to this as Test Calibration) as a custodian of quality assurance reporting - "we" as the testing community are held to higher degree and a level of quality and assurances above all others. Reporting either a false-positive or a false-negative can have dire consequences.

ConditionCreate_Original.txt

jawalonoski commented 7 years ago
  1. While en-US is not in the valueset, it is in BCP-47 which this valueset is supposed to represent. This has been brought up before and is in fact an error in FHIR.

2-5. Yes, we use randomly generated strings. There is no invariant that demands that the display value must match the code. So in fact, this is perfectly acceptable according to the FHIR standard.

  1. Thank you for finding this error.