/
changes.xml
3847 lines (3846 loc) 路 176 KB
/
changes.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0"?>
<document xmlns="http://maven.apache.org/changes/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 ./changes.xsd">
<properties>
<author>James Agnew</author>
<title>HAPI FHIR Changelog</title>
</properties>
<body>
<release version="2.5" date="TBD">
<action type="fix">
<![CDATA[
This release includes significant performance enhancements for the
JPA server. Most importantly, the way that searches are performed
has been re-written to allow the server to perform better when
the database has a large number of results in it. The following
enhancements have been made:
<br/><br/>
<ul>
<li>
Searches with multiple search parameters of different
datatypes (e.g. find patients by name and date of birth)
were previously joined in Java code, now the join is
performed by the database which is faster
</li>
<li>
Searches which returned lots of results previously has all
results streamed into memory before anything was returned to
the client. This is particularly slow if you do a search for
(say) "get me all patients" since potentially thousands or
even millions of patients' IDs were loaded into memory
before anything gets returned to the client. HAPI FHIR
now has a multithreaded search coordinator which returns
results to the client as soon as they are available
</li>
<li>
Search results will be cached and reused (so that if a client
does two searches for "get me all patients matching FOO"
with the same FOO in short succession, we won't query the DB
again but will instead reuse the cached results). Note that
this can improve performance, but does mean that searches can
return slightly out of date results. Essentially what this means
is that the latest version of individual resources will always
be returned despite this cacheing, but newly created resources
that should match may not be returned until the cache
expires. By default this cache has been set to one minute,
which should be acceptable for most real-world usage, but
this can be changed or disabled entirely.
</li>
<li>
Updates which do not actually change the contents of the resource
can optionally be prevented from creating a new version
of the resource in the database
</li>
</ul>
<br/><br/>
Existing users should delete the
<code>HFJ_SEARCH</code>,
<code>HFJ_SEARCH_INCLUDE</code>,
and
<code>HFJ_SEARCH_RESULT</code>
tables from your database before upgrading, as the structure of these tables
has changed and old search results can not be reused.
]]>
</action>
<action type="fix" issue="590">
AuthorizationInterceptor did not correctly handle paging requests
(e.g. requests for the second page of results for a search operation).
Thanks to Eeva Turkka for reporting!
</action>
<action type="add">
Add configuration property to DSTU3 FhirInstanceValidator to
allow client code to change unknown extension handling behaviour.
</action>
<action type="fix" issue="630">
Fix concurrency issues in FhirContext that were causing issues when
starting a context up on Android. Thanks to GitHub issue @Jaypeg85 for
the pull request!
</action>
<action type="fix">
Fix an issue in the JPA server if a resource has been previously
saved containing vocabulary that is no longer valid. This only really
happened if you were using a non-final version of FHIR (e.g. using DSTU3
before it was finalized) but if you were in this situation, upgrading HAPI
could cause you to have old codes that no longer exist in your database. This
fix prevents these from blocking you from accesing those resources.
</action>
<action type="add">
CLI now defaults to DSTU3 mode if no FHIR version is specified
</action>
<action type="add">
Server and annotation-client @History annotation now allows DSTU3+ resource
types in the type= property
</action>
<action type="fix" issue="563">
JSON Parser gave a very unhelpful error message (Unknown attribute 'value' found during parse)
when a scalar value was found in a spot where an object is expected. This has been corrected to
include much more information. Thanks to GitHub user @jasminas for reporting!
</action>
<action type="add">
DaoConfig#setInterceptors() has been un-deprecated. It was previously deprecated as
we thought it was not useful, but uses have been identified so it turns out this method
will live after all. Interceptors registered to this method will now be treated
appropriately if they implement IServerOperationInterceptor too.
</action>
<action type="fix">
JPA server did not correctly support searching on a custom search parameter whose
path pointed to an extension, where the client used a chained value.
</action>
<action type="fix">
Fix issue where the JSON parser sometimes did not encode DSTU3 extensions on the root of a
resource which have a value of type reference.
</action>
<action type="add">
Server now respects the If-Modified-Since header and will return an HTTP 304 if appropriate
for read operations.
</action>
<action type="fix">
JPA server did not correctly process :missing qualifier on date parameters
</action>
<action type="fix" issue="633">
AppacheHttpClient did not always respect the charset in the response
Content-Type header. Thanks to Gijsbert van den Brink for the pull request!
</action>
<action type="fix" issue="636">
Fix XhtmlParser to correctly handle hexadecimal escaped literals. Thanks to
Gijsbert van den Brink for the Pull Request!
</action>
<action type="add">
JPA server now has configurable properties that allow referential integrity
to be disabled for both writes and deletes. This is useful in some cases
where data integrity is not wanted or not possible. It can also be useful
if you want to delete large amounts of interconnected data quickly.
<![CDATA[<br/><br/>]]>
A corresponding flag has been added to the CLI tool as well.
</action>
<action type="fix">
JPA server did not correctly support searching on a custom search parameter whose
path pointed to an extension, where the client used a chained value.
</action>
<action type="fix">
Fix dependency on commons-codec 1.4 in hapi-fhir-structures-dstu3, which was
preventing this library from being used on Android because Android includes
an older version of commons-codec.
</action>
<action type="fix">
JPA server failed to index search parameters on paths containing a decimal
data type
</action>
<action type="fix">
Validator incorrectly rejected references where only an identifier was populated
</action>
<action type="fix" issue="649">
Make error handler in the client more tolerant of errors where no response has
been received by the client when the error happens. Thanks to GitHub
user maclema for the pull request!
</action>
<action type="add">
Add a check in JPA server that prevents completely blank tags, profiles, and security labels
from being saved to the database. These were filtered out anyhow when the
result was returned back to the client but they were persisted which
just wasted space.
</action>
<action type="fix" issue="664">
Loading the build-in profile structures (StructureDefinition, ValueSet, etc) is now done in
a synchronized block in order to prevent multiple loads happening if the server processes
multiple validations in parallel threads right after startup. Previously a heavy load could
cause the server to run out of memory and lock up. Thanks to Karl M Davis
for analysis and help fixing this!
</action>
<action type="fix" issue="652">
Fix bad ValueSet URL in DeviceRequest profile definition for STU3 which
was preventing the CLI from uploading definitions correctly. Thanks to
Joel Schneider for the Pull Request!
</action>
<action type="fix" issue="655">
DateTime datatypes (both DSTU1/2 and RI STU3) did not properly parse
values with MINUTE precision. Thanks to Christian Ohr for the pull
request!
</action>
<action type="add" issue="656">
Improve handling in JPA server when doing code:above and code:below
searches to use a disjunction of AND and IN in order to avoid failures
under certain conditions. Thanks to Michael Lawley for the pul request!
</action>
<action type="fix" issue="660">
Fix an error where the JPA server sometimes failed occasional requests
with a weird NullPointerException when running under very large concurrent
loads. Thanks to Karl M. Davis for reporting, investigating, and ultimately
finding a solution!
</action>
</release>
<release version="2.4" date="2017-04-19">
<action type="add">
This release brings the DSTU3 structures up to FHIR R3 (FHIR 3.0.1) definitions. Note that
there are very few changes between the DSTU3 structures in HAPI FHIR 2.3 and
the ones in HAPI FHIR 2.4 since the basis for the DSTU3 structures in HAPI FHIR
2.3 was the R3 QA FHIR version (1.9.0) but this is the first release of
HAPI FHIR to support the final/complete R3 release.
</action>
<action type="add">
Bump the version of a few dependencies to the
latest versions (dependent HAPI modules listed in brackets):
<![CDATA[
<ul>
<li>Hibernate (JPA): 5.2.7 -> 5.2.9</li>
<li>Hibernate Search (JPA): 5.5.7.CR1 -> 5.2.7.Final</li>
<li>Hibernate Validator (JPA): 5.3.4 -> 5.4.1</li>
<li>Spring (JPA): 4.3.6 -> 4.3.7</li>
<li>Gson (Core): 2.7 -> 2.8.0</li>
<li>Guava (JPA): 19.0 -> 21.0</li>
<li>SLF4j (Core): 1.7.21 -> 1.7.25</li>
<li>Logback (Core): 1.1.7 -> 1.2.2</li>
</ul>
]]>
</action>
<action type="add" issue="602">
hapi-fhir-jpaserver-example now includes the
<![CDATA[<code>Prefer</code>]]> header in the list of
CORS headers. Thanks to GitHub user @elnin0815 for
the pull request!
</action>
<action type="add">
AuthorizationInterceptor can now allow make read or write
authorization decisions on a resource by instance ID
</action>
<action type="fix" issue="208">
Remove SupportingDocumentation resource from DSTU2 structures. This isn't
actually a resource in FHIR DSTU2 and its inclusion causes errors on clients
that don't understand what it is. Thanks to Travis Cummings and Michele Mottini for pointing this out.
</action>
<action type="fix" issue="607">
Web testing UI displayed an error when a transaction was pasted into the UI
for a DSTU2 server. Thanks to Suresh Kumar for reporting!
</action>
<action type="add">
DaoConfig#setAllowInlineMatchUrlReferences() now defaults to
<![CDATA[<code>true</code>]]> since inline conditional references
are now a part of the FHIR specification. Thanks to Jan D臎dek for
pointing this out!
</action>
<action type="add" issue="609">
hapi-fhir-jpaserver-base now exposes a
<![CDATA[<code>FhirInstanceValidator</code> bean named <code>"myInstanceValidatorDstu2"</code>]]>
for DSTU2. A similar bean for DSTU3 was previously implemented.
</action>
<action type="add" issue="453">
hapi-fhir-jpaserver-example project now defaults to STU3 mode instead of
the previous DSTU2. Thanks to Joel Schneider for the pull request!
</action>
<action type="add" issue="534">
JPA server now has a setting on the DaoConfig to force it to treat
certain reference URLs or reference URL patterns as logical URLs instead
of literal ones, meaning that the server will not try to resolve these
URLs. Thanks to Eeva Turkka for the suggestion!
</action>
<action type="add">
Add a utility method to JPA server:
<![CDATA[<code>IFhirResourceDao#removeTag(IIdType, TagTypeEnum, String, String)</code>]]>. This allows client code to remove tags
from a resource without having a servlet request object in context.
</action>
<action type="fix">
JPA server was unable to process custom search parameters where
the path pointed to an extension containing a reference. Thanks
to Ravi Kuchi for reporting!
</action>
<action type="fix" issue="623">
Servers in DSTU2.1 mode were incorrectly using the legacy mimetypes instead
of the new STU3 ones. Thanks to Michael Lawley for the pull request!
</action>
<action type="add" issue="624">
Add an option to ParserOptions that specifies that when parsing a bundle, the
ID found in the Bundle.entry.fullUrl should not override the ID found
in the Resource.id field. Technically these fields must always supply the
same ID in order for a server to be considered conformant, but this option allows
you to deal with servers which are behaving badly. Thanks to
GitHub user CarthageKing for the pul request!
</action>
<action type="fix" issue="617">
Remove unneccesary whitespace in the text areas on the testing
web UI. Thanks to GitHub user @elnin0815 for the pull request!
</action>
<action type="add" issue="613">
In JAX-RS server it is now possible to change the server exception handler
at runtime without a server restart.
Thanks to Sebastien Riviere for the
pull request!
</action>
<action type="fix" issue="610">
Fix a potential race condition when the FhirContext is being accessed by many threads
at the same time right as it is initializing. Thanks to Ben Spencer for the
pull request!
</action>
</release>
<release version="2.3" date="2017-03-18">
<action type="add">
Bump the version of a few dependencies to the
latest versions (dependent HAPI modules listed in brackets):
<![CDATA[
<ul>
<li>Hibernate (JPA): 5.1.0 -> 5.2.7</li>
<li>Hibernate Search (JPA): 5.5.4 ->p; 5.7.0.CR1</li>
<li>Hibernate Validator (JPA): 5.2.4 ->p; 5.3.4</li>
<li>Spring (JPA): 4.3.1 -> 4.3.6</li>
</ul>
]]>
</action>
<action type="add">
The JPA server now supports custom search parameters in DSTU3
mode. This allows users to create search parameters which contain
custom paths, or even override and disable existing search
parameters.
</action>
<action type="fix">
CLI example uploader couldn't find STU3 examples after CI server
was moved to build.fhir.org
</action>
<action type="fix">
Fix issue in JPA subscription module that prevented purging stale
subscriptions when many were present on Postgres
</action>
<action type="fix" issue="532">
Server interceptor methods were being called twice unnecessarily
by the JPA server, and the DaoConfig interceptor registration
framework was not actually useful. Thanks to GitHub user
@mattiuusitalo for reporting!
</action>
<action type="fix" issue="503">
AuthorizationInterceptor on JPA server did not correctly
apply rules on deleting resources in a specific compartment
because the resource metadata was stripped by the JPA server
before the interceptor could see it. Thanks to
Eeva Turkka for reporting!
</action>
<action type="fix" issue="519">
JPA server exported CapabilityStatement includes
double entries for the _id parameter and uses the
wrong type (string instead of token). Thanks to
Robert Lichtenberger for reporting!
</action>
<action type="add" issue="504">
Custom resource types which extend Binary must not
have declared extensions since this is invalid in
FHIR (and HAPI would just ignore them anyhow). Thanks
to Thomas S Berg for reporting!
</action>
<action type="add">
Standard HAPI zip/tar distributions did not include the project
sources and JavaDoc JARs. Thanks to Keith Boone for pointing
this out!
</action>
<action type="fix">
Server AuthorizationInterceptor always rejects history operation
at the type level even if rules should allow it.
</action>
<action type="fix">
JPA server terminology service was not correctly validating or expanding codes
in SNOMED CT or LOINC code systems. Thanks to David Hay for reporting!
</action>
<action type="fix" issue="539">
Attempting to search for an invalid resource type (e.g. GET base/FooResource) should
return an HTTP 404 and not a 400, per the HTTP spec. Thanks to
GitHub user @CarthageKing for the pull request!
</action>
<action type="fix" issue="544">
When parsing a Bundle containing placeholder fullUrls and references
(e.g. "urn:uuid:0000-0000") the resource reference targets did not get
populated with the given resources. Note that as a part of this
change, <![CDATA[<code>IdType</code> and <code>IdDt</code>]]> have been modified
so that when parsing a placeholder ID, the complete placeholder including the
"urn:uuid:" or "urn:oid:" prefix will be placed into the ID part. Previously,
the prefix was treated as the base URL, which led to strange behaviour
like the placeholder being treated as a real IDs. Thanks to GitHub
user @jodue for reporting!
</action>
<action type="add">
Declared extensions with multiple type() options listed in the @Child
annotation caused a crash on startup. Now this is supported.
</action>
<action type="add">
STU3 XHTML parser for narrative choked if the narrative contained
an <![CDATA[<code>&rsquot;</code>]]> entity string.
</action>
<action type="fix" issue="538">
When parsing a quantity parameter on the server with a
value and units but no system (e.g.
<![CDATA[<code>GET [base]/Observation?value=5.4||mg</code>]]>)
the unit was incorrectly treated as the system. Thanks to
@CarthageKing for the pull request!
</action>
<action type="533">
Correct a typo in the JPA ValueSet ResourceProvider which prevented
successful operation under Spring 4.3. Thanks to
Robbert van Waveren for the pull request!
</action>
<action type="remove">
Deprecate the method
<![CDATA[<code>ICompositeElement#getAllPopulatedChildElementsOfType(Class)</code>]]>
as it is no longer used by HAPI and is just an annoying step
in creating custom structures. Thanks to Allan Bro Hansen
for pointing this out.
</action>
<action type="fix" issue="547">
CapturingInterceptor did not buffer the response meaning
that in many circumstances it did not actually capture
the response. Thanks to Jenny Syed of Cerner for
the pull request and contribution!
</action>
<action type="fix" issue="548">
Clean up dependencies and remove Eclipse project files from git. Thanks to
@sekaijin for the pull request!
</action>
<action type="fix">
When performing a conditional create in a transaction in JPA server,
if a resource already existed matching the conditional expression, the
server did not change the version of the resource but did update the body
with the passed in body. Thanks to Artem Sopin for reporting and providing a test
case for this!
</action>
<action type="fix">
Client revincludes did not include the :recurse modifier. Thanks to
Jenny Meinsma for pointing this out on Zulip!
</action>
<action type="add">
JPA server did not return an OperationOutcome in the response for
a normal delete operation.
</action>
<action type="fix">
Fix an issue in JPA server where _history results were kept in memory instead
of being spooled to the database as they should be. Note that as a part of this fix
a new method was added to
<![CDATA[<code>IBundleProvider</code> called <code>getUuid()</code>]]>. This
method may return <![CDATA[<code>null</code>]]> in any current cases.
</action>
<action type="fix">
Expanding a ValueSet in JPA server did not correctly apply
<![CDATA[<code>?filter=</code>]]> parameter when the ValueSet
being expanded had codes included explicitly (i.e. not by
is-a relationship). Thanks to David Hay for reporting!
</action>
<action type="fix">
JPA validator incorrectly returned an HTTP 400 instead of an HTTP 422 when
the resource ID was not present and required, or vice versa. Thanks to
Brian Postlethwaite for reporting!
</action>
<action type="fix">
When using an annotation based client, a ClassCastException would
occur under certain circumstances when the response contained
contained resources
</action>
<action type="fix">
JPA server interceptor methods for create/update/delete provided
the wrong version ID to the interceptors
</action>
<action type="add">
A post-processing hook for subclasses of BaseValidatingInterceptor is now available.
</action>
<action type="add" issue="585">
AuthorizationInterceptor can now authorize (allow/deny) extended operations
on instances and types by wildcard (on any type, or on any instance)
</action>
<action type="add" issue="595">
When RequestValidatingInterceptor is used, the validation results
are now populated into the OperationOutcome produced by
create and update operations
</action>
<action type="add" issue="542">
Add support for the $process-message operation to fluent client.
Thanks to Hugo Soares for the pull request!
</action>
<action type="add" issue="543">
Parser can now be configured when encoding to use a specific
base URL for extensions. Thanks to Sebastien Riviere for the
pull request!
</action>
<action type="fix" issue="568">
Correct the resource paths for the DSTU2.1 validation resources,
allowing the validator to correctly work against those structures.
Thanks to Michael Lawley for the pull request!
</action>
<action type="fix" issue="551">
XML Parser failed to parse large field values (greater than 512 Kb)
on certain platforms where the StAX parser was overridden. Thanks to
GitHub user @Jodue for the pull request!
</action>
<action type="add" issue="575">
Remove an unneccesary database flush when saving large code systems to
the JPA database, improving performance of this operation. Thanks to
Joel Schneider for the pull request and analysis!
</action>
<action type="add">
A new post-processing hook for subclasses of BaseValidatingInterceptor is now
available. The hook exposes the request details on validation failure prior to throwing an
UnprocessableEntityException.
</action>
</release>
<release version="2.2" date="2016-12-20">
<action type="add">
Bump the version of a few dependencies to the
latest versions (dependent HAPI modules listed in brackets):
<![CDATA[
<ul>
<!--<li>spring (JPA): 4.3.1 -> 4.3.4</li>-->
<li>Derby (CLI): 10.12.1.1 -> 10.13.1.1</li>
<li>Jetty (CLI): 9.3.10.v20160621 -> 9.3.14.v20161028</li>
<li>JAnsi (CLI): 1.13 -> 1.14</li>
<li>Phloc Commons (SCH Validator): 4.4.5 -> 4.4.6</li>
</ul>
]]>
</action>
<action type="fix">
Fix issue in AuthorizationIntetceptor where
transactions are blocked even when they
should not be
</action>
<action type="fix">
Fix regression in HAPI FHIR 2.1 JPA
server where some search parameters on
metadata resources did not appear
(e.g. "StructureDefinition.url"). Thanks
to David Hay for reporting!
</action>
<action type="add">
Add ability to JPA server for disabling stale search
expiry. This is useful if you are deploying the server
to a cluster.
</action>
<action type="fix" issue="495">
RestfulServer with no explicitly set FhirContext
fails to detect the presents of DSTU3 structures. Thanks
to GitHub user @vijayt27 for reporting!
</action>
<action type="add">
As the
<![CDATA[<a href="https://github.com/eBay/cors-filter">eBay CORS interceptor</a>]]>
project
has gone dormant, we have introduced a new
HAPI server interceptor which can be used to implement CORS support
instead of using the previously recommended Servlet Filter. All server
examples as well as the CLI have been switched to use this new interceptor.
See the
<![CDATA[<a href="./doc_cors.html">CORS Documentation</a>]]>
for more information.
</action>
<action type="fix" issue="480">
Make the parser configurable so that when
parsing an invalid empty value (e.g.
<![CDATA[<code>{"status":""}</code>]]>) the
parser will either throw a meaningful exception
or log a warning depending on the configured
error handler.
</action>
<action type="fix" issue="276">
Fix issue when serializing resources that have
contained resources which are referred to
from multiple places. Sometimes when serializing
these resources the contained resource section
would contain duplicates. Thanks to Hugo Soares
and Stefan Evinance for reporting and providing
a test case!
</action>
<action type="add" issue="518">
Allow client to gracefully handle running in DSTU3 mode
but with a structures JAR that does not contain a
CapabilityStatement resource. Thanks to Michael Lawley
for the pull request!
</action>
<action type="fix">
Fix a crash in JPA server when searching using an _include if _include targets are
external references (and therefore can't be loaded
by the server). Thanks to Hannes Ulrich for reporting!
</action>
<action type="fix">
HAPI FHIR CLI failed to delete a file when uploading
example resources while running under Windows.
</action>
<action type="fix" issue="521">
Server should reject update if the resource body
does not contain an ID, or the ID does not match
the request URL. Thanks to Jim Steel for reporting!
</action>
<action type="fix" issue="500">
Web Testing UI's next and previous buttons for paging
through paged results did not work after the migration
to using Thymeleaf 3. Thanks to GitHub user @gsureshkumar
for reporting!
</action>
<action type="add" issue="525">
When parsing invalid enum values in STU3,
report errors through the parserErrorHandler,
not by throwing an exception. Thanks to
Michael Lawley for the pull request!
</action>
<action type="add" issue="516">
When parsing DSTU3 resources with enumerated
types that contain invalid values, the parser will now
invoke the parserErrorHandler. For example, when parsing
<![CDATA[
<code>{"resourceType":"Patient", "gender":"foo"}</code>
]]>
the previous behaviour was to throw an InvalidArgumentException.
Now, the parserErrorHandler is invoked. In addition, thw
LenientErrorHandler has been modified so that this one case
will result in a DataFormatException. This has the effect
that servers which receive an invalid enum velue will return
an HTTP 400 instead of an HTTP 500. Thanks to Jim
Steel for reporting!
</action>
<action type="add" issue="520">
DSTU3 context now pulls the FHIR version from the actual
model classes. Thanks to Michael Lawley for the pull request!
</action>
<action type="add">
Enhancements to the tinder-plugin's generic template features
of the <![CDATA[<i>generate-multi-files</i> and <i>generate-single-file</i>
Maven goals as well as the Ant <i>hapi-tinder</i> task.
<ul>
<li>Provides the full Tinder data model by adding composites, valuesets, and profiles to resourcesw.</li>
<li>Supports generating files for resources, composites, valuesets, and profiles</li>
<li>Supports Velocimacro files outside the tinder-plugin JAR</li>
<li>Provides filename prefix as well as suffix properties</li>
<li>Can specify any of the Velocity configuration parameters such as
<i>macro.provide.scope.control</i> which allows safe macro recursion</li>
<li>Templates can now drill down into the referenced children for a ResourceBlockCopy</li>
<li>Normalization of properties across all three generic tasks</li>
</ul>
]]>
</action>
<action type="fix" issue="523">
Fix ordering of validator property handling when an element
has a name that is similar to a shorter name[x] style name.
Thanks to CarthageKing for the pull request!
</action>
<action type="add" issue="510">
Add a docker configuration to the hapi-fhir-jpaservr-example
module. Thanks to Gijsbert van den Brink for the pull request!
</action>
<action type="add" issue="507">
Add utility constructors to MoneyDt. Thanks to James Ren for the
contribution!
</action>
<action type="fix" issue="528">
AuthorizationInterceptor was failing to allow read requests to pass
when a rule authorized those resources by compartment. Thanks to
GitHub user @mattiuusitalo for reporting and supplying
a test case!
</action>
<action type="fix">
Correct a typo in client
<![CDATA[<code>IHttpRequest</code>]]> class: "bufferEntitity" should be "bufferEntity".
</action>
<action type="add">
ErrorHandler is now called (resulting in a warning by default, but can also be an exception) when arsing JSON if
the resource ID is not a JSON string, or an object is found where an array is expected (e.g. repeating field). Thanks
to Jenni Syed of Cerner for providing a test case!
</action>
<action type="fix">
Fix Web Testing UI to be able to handle STU3 servers which
return CapabilityStatement instead of the previously used
"Conformance" resource
</action>
<action type="fix">
CLI example uploader couldn't find STU3 examples after CI server
was moved to build.fhir.org
</action>
<action type="fix">
Fix issue in JPA subscription module that prevented purging stale
subscriptions when many were present on Postgres
</action>
<action type="fix" issue="532">
Server interceptor methods were being called twice unnecessarily
by the JPA server, and the DaoConfig interceptor registration
framework was not actually useful. Thanks to GitHub user
@mattiuusitalo for reporting!
</action>
<action type="fix" issue="503">
AuthorizationInterceptor on JPA server did not correctly
apply rules on deleting resources in a specific compartment
because the resource metadata was stripped by the JPA server
before the interceptor could see it. Thanks to
Eeva Turkka for reporting!
</action>
<action type="fix" issue="519">
JPA server exported CapabilityStatement includes
double entries for the _id parameter and uses the
wrong type (string instead of token). Thanks to
Robert Lichtenberger for reporting!
</action>
<action type="add" issue="504">
Custom resource types which extend Binary must not
have declared extensions since this is invalid in
FHIR (and HAPI would just ignore them anyhow). Thanks
to Thomas S Berg for reporting!
</action>
<action type="add">
Standard HAPI zip/tar distributions did not include the project
sources and JavaDoc JARs. Thanks to Keith Boone for pointing
this out!
</action>
<action type="fix">
Server AuthorizationInterceptor always rejects history operation
at the type level even if rules should allow it.
</action>
<action type="fix">
JPA server terminology service was not correctly validating or expanding codes
in SNOMED CT or LOINC code systems. Thanks to David Hay for reporting!
</action>
<action type="fix" issue="539">
Attempting to search for an invalid resource type (e.g. GET base/FooResource) should
return an HTTP 404 and not a 400, per the HTTP spec. Thanks to
GitHub user @CarthageKing for the pull request!
</action>
<action type="fix" issue="544">
When parsing a Bundle containing placeholder fullUrls and references
(e.g. "urn:uuid:0000-0000") the resource reference targets did not get
populated with the given resources. Note that as a part of this
change, <![CDATA[<code>IdType</code> and <code>IdDt</code>]]> have been modified
so that when parsing a placeholder ID, the complete placeholder including the
"urn:uuid:" or "urn:oid:" prefix will be placed into the ID part. Previously,
the prefix was treated as the base URL, which led to strange behaviour
like the placeholder being treated as a real IDs. Thanks to GitHub
user @jodue for reporting!
</action>
<action type="add">
Declared extensions with multiple type() options listed in the @Child
annotation caused a crash on startup. Now this is supported.
</action>
<action type="add">
STU3 XHTML parser for narrative choked if the narrative contained
an <![CDATA[<code>&rsquot;</code>]]> entity string.
</action>
<action type="fix" issue="538">
When parsing a quantity parameter on the server with a
value and units but no system (e.g.
<![CDATA[<code>GET [base]/Observation?value=5.4||mg</code>]]>)
the unit was incorrectly treated as the system. Thanks to
@CarthageKing for the pull request!
</action>
<action type="533">
Correct a typo in the JPA ValueSet ResourceProvider which prevented
successful operation under Spring 4.3. Thanks to
Robbert van Waveren for the pull request!
</action>
<action type="remove">
Deprecate the method
<![CDATA[<code>ICompositeElement#getAllPopulatedChildElementsOfType(Class)</code>]]>
as it is no longer used by HAPI and is just an annoying step
in creating custom structures. Thanks to Allan Bro Hansen
for pointing this out.
</action>
<action type="fix" issue="547">
CapturingInterceptor did not buffer the response meaning
that in many circumstances it did not actually capture
the response. Thanks to Jenny Syed of Cerner for
the pull request and contribution!
</action>
</release>
<release version="2.1" date="2016-11-11">
<action type="add">
STU3 structure definitions have been updated to the
STU3 latest definitions (1.7.0 - SVN 10129). In
particular, this version supports the new CapabilityStatement
resource which replaces the previous Conformance
resource (in order to reduce upgrade pain, both resource
types are included in this version of HAPI)
</action>
<action type="add">
Bump the version of a few dependencies to the
latest versions (dependent HAPI modules listed in brackets):
<![CDATA[
<ul>
<li>spring-data-orm (JPA): 1.10.2 -> 1.10.4</li>
</ul>
]]>
</action>
<action type="fix">
Fix a fairly significant issue in JPA Server when using the <![CDATA[<code>DatabaseBackedPagingProvider</code>]]>: When paging over the results
of a search / $everything operation, under certain circumstances resources may be missing from the last page of results
that is returned. Thanks to David Hay for reporting!
</action>
<action type="add">
Client, Server, and JPA server now support experimental support
for
<![CDATA[HTTP PATCH]]>
using the XML Patch and JSON Patch syntax as explored during the
September 2016 Baltimore Connectathon. See
<![CDATA[<a href="http://wiki.hl7.org/index.php?title=201609_PATCH_Connectathon_Track_Proposal">this wiki page</a>]]>
for a description of the syntax.
<![CDATA[<br/>]]>
Thanks to Pater Girard for all of his help during the connectathon
in implementing this feature!
</action>
<action type="add">
Android library now uses OkHttp client by default instead
of Apache HttpClient. This should lead to much simpler
support for Android in the future.
</action>
<action type="add">
Both client and server now use the new STU3 mime types by default
if running in STU3 mode (in other words, using an STU3
FhirContext).
</action>
<action type="fix">
In server, when returning a list of resources, the server sometimes failed to add
<![CDATA[<code>_include</code>]]> resources to the response bundle if they were
referred to by a contained reosurce. Thanks to Neal Acharya for reporting!
</action>
<action type="fix">
Fix regression in web testing UI where "prev" and "next" buttons don't work
when showing a result bundle
</action>
<action type="fix">
JPA server should not attempt to resolve built-in FHIR StructureDefinitions from the
database (this causes a significant performance hit when validating)
</action>
<action type="fix">
BanUnsupportedHttpMethodsInterceptor was erroring out when a client
attempts HTTP HEAD requests
</action>
<action type="fix">
Conditional URLs in JPA server (e.g. for delete or update) did not support the
<![CDATA[<code>_has</code>]]> parameter
</action>
<action type="add" issue="440">
Remove Maven dependency on Saxon library, as it is not actually used. Thanks
to Lem Edmondson for the suggestion!
</action>
<action type="fix" issue="444">
Times before 1970 with fractional milliseconds were parsed incorrectly. Thanks
to GitHub user @CarthageKing for reporting!
</action>
<action type="fix" issue="448">
Prevent crash in parser when parsing resource
with multiple profile declarations when
default type for profile is used. Thanks to
Filip Domazet for the pull request!
</action>
<action type="fix" issue="445">
STU3 servers were adding the old MimeType
strings to the
<![CDATA[<code>Conformance.format</code>]]>
part of the generated server conformance
statement
</action>
<action type="fix" issue="446">
When performing an update using the client on a resource that
contains other resources (e.g. Bundle update), all child resources in the
parent bundle were incorrectly given the ID of the parent. Thanks
to Filip Domazet for reporting!
</action>
<action type="add">
STU clients now use an Accept header which
indicates support for both the old MimeTypes
(e.g. <![CDATA[<code>application/xml+fhir</code>]]>)
and the new MimeTypes
(e.g. <![CDATA[<code>application/fhir+xml</code>]]>)
</action>
<action type="fix">
JPA server now sends correct
<![CDATA[<code>HTTP 409 Version Conflict</code>]]>
when a
DELETE fails because of constraint issues, instead of
<![CDATA[<code>HTTP 400 Invalid Request</code>]]>
</action>
<action type="fix">
Server history operation did not populate the Bundle.entry.request.url
field, which is required in order for the bundle to pass validation.
Thanks to Richard Ettema for spotting this!
</action>
<action type="add">
Add a new method to the server interceptor framework which will be
called after all other processing is complete (useful for performance
tracking). The server LoggingInterceptor has been switched to using this
method which means that log lines will be created when processing is finished,
instead of when it started.
</action>
<action type="fix">
STU3 clients were not sending the new mimetype values in the
<![CDATA[<code>Content-Type</code>]]> header. Thanks to
Claude Nanjo for pointing this out!
</action>
<action type="fix">
JAX-RS server was not able to handle the new mime types defined
in STU3
</action>
<action type="fix">
JPA server did not handle custom types when being called
programatically (I.e. not through HTTP interface). Thanks to
Anthony Mei for pointing this out!
</action>
<action type="fix">
CLI was not correctly able to upload DSTU2 examples to any server
</action>
<action type="fix">
STU3 validator has been upgrated to include fixes made since the
1.6.0 ballot
</action>
<action type="fix">
Prevent JPA server from creating a bunch of
FhirContext objects for versions of FHIR that
aren't actually being used
</action>
<action type="fix" issue="443">
XhtmlNode.equalsDeep() contained a bug which caused resources
containing a narrative to always return
<![CDATA[<code>false</code>]]> for STU3
<![CDATA[<code>Resource#equalsDeep()</code>]]>. Thanks to
GitHub user @XcrigX for reporting!
</action>
<action type="fix" issue="441">
JPA server did not correctly process searches for chained parameters
where the chain passed across a field that was a choice between a
reference and a non-reference type (e.g.
<![CDATA[<code>MedicationAdministration.medication[x]</code>]]>.
Thanks to GitHub user @Crudelus for reporting!
</action>
<action type="fix" issue="414">
Handle parsing an extension without a URL more gracefully. In HAPI FHIR 2.0 this caused
a NullPointerException to be thrown. Now it will trigger a warning, or throw a
DataFormatException if the StrictErrorHandler is configured on the parser.
</action>
<action type="fix">
Calling a HAPI server URL with a chain on a parameter that shouldn't accept
chains (e.g.
<![CDATA[<code>GET [base]/Patient?name.foo=smith</code>]]>)
did not return an error and instead just ignored the chained part
and treated the parameter as though it did not have the chain. This
led to confusing and potentially unsafe behaviour. This has been
corrected to return an error to the client. Thanks to
Kevin Tallevi for finding this!
</action>
<action type="fix" issue="411">
Fix #411 - Searching by <![CDATA[<code>POST [base]/_search</code>]]> with urlencoded parameters doesn't work correctly if
interceptors are accessing the parameters and there is are also
parameters on the URL. Thanks to Jim Steel for reporting!
</action>
<action type="add">
Fluent client can now return types other than Parameters
when invoking operations.
</action>
<action type="fix">
JPA server shouldn't report a totalCount in Bundle of "-1" when
there are no results
</action>
<action type="fix" issue="454">
JPA server was not correctly normalizing strings with non-latin characters
(e.g. Chinese chars). Thanks to GitHub user @YinAqu for reporting and providing
some great analysis of the issue!
</action>
<action type="add">
Add a new method to ReferenceClientParam which allows you to
pass in a number of IDs by a collection of Strings. Thanks to
Thomas Andersen for the pul request!
</action>
<action type="fix" issue="327">
When encoding a resource in JSON where the resource has
an extension with a value where the value is a reference to a
contained resource, the reference value (e.g. "#1") did not
get serialized. Thanks to GitHub user @fw060 for reporting!
</action>
<action type="fix" issue="464">
ResponseHighlighterInterceptor now pretty-prints responses
by default unless the user has explicitly requested
a non-pretty-printed response (ie.
using <![CDATA[<code>?_pretty=false</code>]]>. Thanks to
Allan Brohansen and Jens Villadsen for the suggestion!
</action>
<action type="add" issue="469">
Add a new JSON library abstraction layer to the JSON parser.
This contribution shouldn't have any end-user impact but does
make it easier to use the JSON parser to generate custom structures
for other purposes, and should allow us to support RDF more
easily at some point. Thanks to Bill Denton for the pull
request and the contribution!
</action>
<action type="add" issue="455">
DSTU1 Bundle encoder did not include the Bundle entry author in
the generated bundle. Thanks to Hannes Venter for the pull
request and contribution!
</action>
<action type="fix">
Remove unused field (myIsContained) from ResourceTable
in JPA server.
</action>
<action type="add">
AuthorizationInterceptor is now a bit more aggressive
at blocking read operations, stopping them on the
way in if there is no way they will be accepted
to the resource check on the way out. In addition
it can now be configured to allow/deny operation
invocations at the instance level on any
instance of a given type
</action>
<action type="fix" issue="472">
STU3 servers were incorrectly returning the
<![CDATA[<code>Content-Location</code>]]>
header instead of the
<![CDATA[<code>Content</code>]]>
header. The former has been removed from the
FHIR specification in STU3, but the
latter got removed in HAPI's code base.