OpenLMIS / openlmis-hapifhir

GNU Affero General Public License v3.0
4 stars 2 forks source link

HAPI FHIR Upgrade from 3.4.0 to 3.7.0 #1

Closed Wambere closed 5 years ago

Wambere commented 5 years ago

This issue it to track progress of OLMIS-6066: Upgrade HAPI FHIR server to v3.7.0 and support R4 instead of STU3

The current version of the HAPI FHIR server in the master branch is v 3.4.0, which was released in May 2018. The latest version is v3.7.0 which was released in early February 2019. This version supports the new FHIR normative release (R4) and is required to support the measure and MeasureReport resources for achieving DHIS2 interoperability. We need to upgrade the HAPI FHIR server to the latest version and switch the APIs from using DSTU3 to R4 libraries.

Acceptance Criteria:

Wambere commented 5 years ago

Initial Assessment

The following might need to be upgraded:

Name Version Description
HAPI FHIR from HAPI FHIR 3.4.0 to HAPI FHIR 3.7.0 FHIR DSTU3 to FHIR R4
Gradle from 4.10.2 to 5.2.1 Deprecations available in the build scan here https://scans.gradle.com/s/6cmvzy6vy6s3i/deprecations
Spring-boot (plugin) from spring-boot to org.springframework.boot The new plugin is available here https://plugins.gradle.org/plugin/org.springframework.boot
Spring version to 5.1.3.RELEASE HAPI FHIR now supports spring version 5.1.3 according to https://github.com/jamesagnew/hapi-fhir/blob/master/pom.xml#L567-L570. But it is possible that the org.springframework.boot plugin loads a different version of spring
Flyway from 4.2.0 to 5.1.4 Version control for the database
Sonarqube from 2.6.2 to 7.4 Continuous inspection for code quality

Other dependencies that should be upgraded:

(In brackets is the latest stable version)

The following need to be fixed:

Based on the build scan, before any changes to the server, we have the following error:

And the following warnings:

FHIR dstu3 to r4:

With these changes, changing mainly ca.uhn.hapi.fhir:hapi-fhir-base:3.4.0 to ca.uhn.hapi.fhir:hapi-fhir-base:3.7.0 and all references of dstu3 to r4 we get the following errors:

/app/src/main/java/org/openlmis/hapifhir/config/TransactionSubscriptionDeliveringRestHookSubscriber.java:19: error: cannot find symbol
import ca.uhn.fhir.jpa.subscription.BaseSubscriptionInterceptor;
                                   ^
  symbol:   class BaseSubscriptionInterceptor
  location: package ca.uhn.fhir.jpa.subscription
/app/src/main/java/org/openlmis/hapifhir/config/TransactionSubscriptionDeliveringRestHookSubscriber.java:20: error: package ca.uhn.fhir.jpa.subscription.resthook does not exist
import ca.uhn.fhir.jpa.subscription.resthook.SubscriptionDeliveringRestHookSubscriber;
                                            ^
/app/src/main/java/org/openlmis/hapifhir/config/TransactionSubscriptionDeliveringRestHookSubscriber.java:32: error: cannot find symbol
    extends SubscriptionDeliveringRestHookSubscriber {
            ^
  symbol: class SubscriptionDeliveringRestHookSubscriber
/app/src/main/java/org/openlmis/hapifhir/config/TransactionSubscriptionDeliveringRestHookSubscriber.java:40: error: cannot find symbol
      SubscriptionChannelType channelType, BaseSubscriptionInterceptor subscriptionInterceptor,
                                           ^
  symbol:   class BaseSubscriptionInterceptor
  location: class TransactionSubscriptionDeliveringRestHookSubscriber
/app/src/main/java/org/openlmis/hapifhir/config/FhirServerConfig.java:21: error: package ca.uhn.fhir.jpa.subscription.resthook does not exist
import ca.uhn.fhir.jpa.subscription.resthook.SubscriptionRestHookInterceptor;
                                            ^
/app/src/main/java/org/openlmis/hapifhir/config/FhirServerConfig.java:90: error: cannot find symbol
  public SubscriptionRestHookInterceptor subscriptionRestHookInterceptor() {
         ^
  symbol:   class SubscriptionRestHookInterceptor
  location: class FhirServerConfig
/app/src/main/java/org/openlmis/hapifhir/config/TransactionSubscriptionRestHookInterceptor.java:18: error: package ca.uhn.fhir.jpa.subscription.resthook does not exist
import ca.uhn.fhir.jpa.subscription.resthook.SubscriptionDeliveringRestHookSubscriber;
                                            ^
/app/src/main/java/org/openlmis/hapifhir/config/TransactionSubscriptionRestHookInterceptor.java:19: error: package ca.uhn.fhir.jpa.subscription.resthook does not exist
import ca.uhn.fhir.jpa.subscription.resthook.SubscriptionRestHookInterceptor;
                                            ^
/app/src/main/java/org/openlmis/hapifhir/config/TransactionSubscriptionRestHookInterceptor.java:24: error: cannot find symbol
public class TransactionSubscriptionRestHookInterceptor extends SubscriptionRestHookInterceptor {
                                                                ^
  symbol: class SubscriptionRestHookInterceptor
/app/src/main/java/org/openlmis/hapifhir/config/TransactionSubscriptionRestHookInterceptor.java:28: error: cannot find symbol
  private SubscriptionDeliveringRestHookSubscriber deliverySubscriber;
          ^
  symbol:   class SubscriptionDeliveringRestHookSubscriber
  location: class TransactionSubscriptionRestHookInterceptor
10 errors

According to https://github.com/jamesagnew/hapi-fhir/blob/08c7afb804e2b2ad52fd406f2521eaf9d01a8897/src/changes/changes.xml#L127