@@ -33,52 +33,120 @@ static void setup() {
3333 }
3434
3535 @ Test
36- void validFHIR () {
37- ClassLoader loader = Thread .currentThread ().getContextClassLoader ();
38- InputStream inputStream = loader .getResourceAsStream ("examples/validFHIR.json" );
39- ByteArrayOutputStream result = new ByteArrayOutputStream ();
40- byte [] buffer = new byte [1024 ];
41- try {
42- for (int length ; (length = inputStream .read (buffer )) != -1 ;) {
43- result .write (buffer , 0 , length );
44- }
45- String rawInput = result .toString ("UTF-8" );
46- ValidatorResponse validatorResult = validator .validate (rawInput );
47- assertTrue ((validatorResult .isSuccessful ()));
48- } catch (IOException e ) {
49- // TODO Auto-generated catch block
50- e .printStackTrace ();
51- }
36+ void validBundle () {
37+ String FHIRDocument = Utils .getResourceContent ("examples/validBundle.json" );
38+ ValidatorResponse validatorResult = validator .validate (FHIRDocument );
39+ assertTrue ((validatorResult .isSuccessful ()));
40+ List <ValidatorErrorMessage > errorMessages = validatorResult .getErrorMessages ();
41+ assertEquals (errorMessages .size (), 0 );
5242 }
5343
5444 @ Test
55- void invalidFHIR () {
56- ClassLoader loader = Thread .currentThread ().getContextClassLoader ();
57- InputStream inputStream = loader .getResourceAsStream ("examples/invalidFHIR.json" );
58- ByteArrayOutputStream result = new ByteArrayOutputStream ();
59- byte [] buffer = new byte [1024 ];
60- try {
61- for (int length ; (length = inputStream .read (buffer )) != -1 ;) {
62- result .write (buffer , 0 , length );
63- }
64- String rawInput = result .toString ("UTF-8" );
65- ValidatorResponse validatorResult = validator .validate (rawInput );
66- assertFalse ((validatorResult .isSuccessful ()));
67- ValidatorErrorMessage expectedMessage1 = ValidatorErrorMessage .builder ()
68- .msg ("Bundle.entry[0] - Bundle entry missing fullUrl" )
69- .severity ("error" )
70- .build ();
71- ValidatorErrorMessage expectedMessage2 = ValidatorErrorMessage .builder ()
72- .msg ("Bundle.entry[0] - Except for transactions and batches, each entry in a Bundle must have a fullUrl which is the identity of the resource in the entry " )
73- .severity ("error" )
74- .build ();
75- List <ValidatorErrorMessage > errorMessages = validatorResult .getErrorMessages ();
76- assertTrue (errorMessages .contains (expectedMessage1 ));
77- assertTrue (errorMessages .contains (expectedMessage2 ));
78- } catch (IOException e ) {
79- // TODO Auto-generated catch block
80- e .printStackTrace ();
81- }
45+ void invalidBundle () {
46+ String FHIRDocument = Utils .getResourceContent ("examples/invalidBundle.json" );
47+ ValidatorResponse validatorResult = validator .validate (FHIRDocument );
48+ assertFalse ((validatorResult .isSuccessful ()));
49+ ValidatorErrorMessage expectedMessage1 = ValidatorErrorMessage .builder ()
50+ .msg ("Bundle.entry[0] - Bundle entry missing fullUrl" )
51+ .severity ("error" )
52+ .build ();
53+ ValidatorErrorMessage expectedMessage2 = ValidatorErrorMessage .builder ()
54+ .msg ("Bundle.entry[0] - Except for transactions and batches, each entry in a Bundle must have a fullUrl which is the identity of the resource in the entry " )
55+ .severity ("error" )
56+ .build ();
57+ List <ValidatorErrorMessage > errorMessages = validatorResult .getErrorMessages ();
58+ assertEquals (errorMessages .size (), 2 );
59+ assertTrue (errorMessages .contains (expectedMessage1 ));
60+ assertTrue (errorMessages .contains (expectedMessage2 ));
61+ }
62+
63+ @ Test
64+ void warningBundle () {
65+ String FHIRDocument = Utils .getResourceContent ("examples/warningBundle.json" );
66+ ValidatorResponse validatorResult = validator .validate (FHIRDocument );
67+ assertTrue ((validatorResult .isSuccessful ()));
68+ ValidatorErrorMessage expectedMessage1 = ValidatorErrorMessage .builder ()
69+ .msg ("Bundle.entry[4].resource.ofType(PractitionerRole).code[0].coding[0] - Unknown code in fragment CodeSystem 'https://fhir.nhs.uk/CodeSystem/NHSDigital-SDS-JobRoleCode#S8000:G8000:R8000' for 'https://fhir.nhs.uk/CodeSystem/NHSDigital-SDS-JobRoleCode#S8000:G8000:R8000'" )
70+ .severity ("warning" )
71+ .build ();
72+ List <ValidatorErrorMessage > errorMessages = validatorResult .getErrorMessages ();
73+ assertEquals (errorMessages .size (), 1 );
74+ assertTrue (errorMessages .contains (expectedMessage1 ));
75+ }
76+
77+ @ Test
78+ void mixedErrorWarningBundle () {
79+ String FHIRDocument = Utils .getResourceContent ("examples/mixedErrorWarning.json" );
80+ ValidatorResponse validatorResult = validator .validate (FHIRDocument );
81+ assertFalse ((validatorResult .isSuccessful ()));
82+ ValidatorErrorMessage expectedMessage1 = ValidatorErrorMessage .builder ()
83+ .msg ("Bundle.entry[0] - Bundle entry missing fullUrl" )
84+ .severity ("error" )
85+ .build ();
86+ ValidatorErrorMessage expectedMessage2 = ValidatorErrorMessage .builder ()
87+ .msg ("Bundle.entry[0] - Except for transactions and batches, each entry in a Bundle must have a fullUrl which is the identity of the resource in the entry " )
88+ .severity ("error" )
89+ .build ();
90+ ValidatorErrorMessage expectedMessage3 = ValidatorErrorMessage .builder ()
91+ .msg ("Bundle.entry[4].resource.ofType(PractitionerRole).code[0].coding[0] - Unknown code in fragment CodeSystem 'https://fhir.nhs.uk/CodeSystem/NHSDigital-SDS-JobRoleCode#S8000:G8000:R8000' for 'https://fhir.nhs.uk/CodeSystem/NHSDigital-SDS-JobRoleCode#S8000:G8000:R8000'" )
92+ .severity ("warning" )
93+ .build ();
94+ ValidatorErrorMessage expectedMessage4 = ValidatorErrorMessage .builder ()
95+ .msg ("Bundle.entry[4].resource.ofType(PractitionerRole).code[0].coding[0].display - value should not start or finish with whitespace" )
96+ .severity ("warning" )
97+ .build ();
98+ List <ValidatorErrorMessage > errorMessages = validatorResult .getErrorMessages ();
99+ assertEquals (errorMessages .size (), 4 );
100+ assertTrue (errorMessages .contains (expectedMessage1 ));
101+ assertTrue (errorMessages .contains (expectedMessage2 ));
102+ assertTrue (errorMessages .contains (expectedMessage3 ));
103+ assertTrue (errorMessages .contains (expectedMessage4 ));
104+ }
105+
106+ @ Test
107+ void validParameters () {
108+ String FHIRDocument = Utils .getResourceContent ("examples/validParameters.json" );
109+ ValidatorResponse validatorResult = validator .validate (FHIRDocument );
110+ assertTrue ((validatorResult .isSuccessful ()));
111+ List <ValidatorErrorMessage > errorMessages = validatorResult .getErrorMessages ();
112+ assertEquals (errorMessages .size (), 0 );
113+ }
114+
115+ @ Test
116+ void invalidParameters () {
117+ String FHIRDocument = Utils .getResourceContent ("examples/invalidParameters.json" );
118+ ValidatorResponse validatorResult = validator .validate (FHIRDocument );
119+ assertFalse ((validatorResult .isSuccessful ()));
120+ List <ValidatorErrorMessage > errorMessages = validatorResult .getErrorMessages ();
121+ ValidatorErrorMessage expectedMessage1 = ValidatorErrorMessage .builder ()
122+ .msg ("Parameters.parameter[0] - inv-1: 'A parameter must have one and only one of (value, resource, part)' Rule 'A parameter must have one and only one of (value, resource, part)' Failed" )
123+ .severity ("error" )
124+ .build ();
125+ assertEquals (errorMessages .size (), 1 );
126+ assertTrue (errorMessages .contains (expectedMessage1 ));
127+ }
128+
129+ @ Test
130+ void validOperationOutcome () {
131+ String FHIRDocument = Utils .getResourceContent ("examples/validOperationOutcome.json" );
132+ ValidatorResponse validatorResult = validator .validate (FHIRDocument );
133+ assertTrue ((validatorResult .isSuccessful ()));
134+ List <ValidatorErrorMessage > errorMessages = validatorResult .getErrorMessages ();
135+ assertEquals (errorMessages .size (), 0 );
136+ }
137+
138+ @ Test
139+ void invalidOperationOutcome () {
140+ String FHIRDocument = Utils .getResourceContent ("examples/invalidOperationOutcome.json" );
141+ ValidatorResponse validatorResult = validator .validate (FHIRDocument );
142+ assertFalse ((validatorResult .isSuccessful ()));
143+ List <ValidatorErrorMessage > errorMessages = validatorResult .getErrorMessages ();
144+ ValidatorErrorMessage expectedMessage1 = ValidatorErrorMessage .builder ()
145+ .msg ("OperationOutcome - OperationOutcome.issue: minimum required = 1, but only found 0 (from http://hl7.org/fhir/StructureDefinition/OperationOutcome)" )
146+ .severity ("error" )
147+ .build ();
148+ assertEquals (errorMessages .size (), 1 );
149+ assertTrue (errorMessages .contains (expectedMessage1 ));
82150 }
83151
84152 @ Test
0 commit comments