Skip to content

Commit

Permalink
Merge pull request apache#17741 from [BEAM-14504] Add support for inc…
Browse files Browse the repository at this point in the history
…luding addittional parameters to executebundle method in fhirio.

* [BEAM-14329] Enable exponential backoff retries in FhirIO Execute bundle requests.

* [BEAM-14504] Add fhir bundle with metadata in executebundles method.

* make FhirResourcePagesIterator public

* Added comments

* Fixed checkstyle errors.

* Added FhirBundleResponse. Resolved comments.

* Updated getFailedBodies method.

* Updated FailedBundles.

* Add a nested class for ParDo fn.

* Spotless Apply fix.

* Fix Post commit tests.

* Fix Post commit tests.

* Use defaultSchema instead of custom coder.
  • Loading branch information
fbeevikm authored Jun 3, 2022
1 parent 6d6a54d commit 59d5e9b
Show file tree
Hide file tree
Showing 6 changed files with 329 additions and 54 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.beam.sdk.io.gcp.healthcare;

import com.google.auto.value.AutoValue;
import java.io.Serializable;
import java.util.Objects;
import javax.annotation.Nullable;
import org.apache.beam.sdk.schemas.AutoValueSchema;
import org.apache.beam.sdk.schemas.annotations.DefaultSchema;
import org.apache.beam.sdk.schemas.annotations.SchemaCreate;

/** FhirBundleParameter represents a FHIR bundle in JSON format to be executed on a FHIR store. */
@DefaultSchema(AutoValueSchema.class)
@AutoValue
public abstract class FhirBundleParameter implements Serializable {

static Builder builder() {
return new AutoValue_FhirBundleParameter.Builder();
}

/**
* String representing the metadata of the Bundle to be written. Used to pass metadata through the
* ExecuteBundles PTransform.
*/
public abstract String getMetadata();

/** FHIR R4 bundle resource object as a string. */
public abstract String getBundle();

@SchemaCreate
public static FhirBundleParameter of(@Nullable String metadata, String bundle) {

return FhirBundleParameter.builder()
.setMetadata(Objects.toString(metadata, ""))
.setBundle(bundle)
.build();
}

public static FhirBundleParameter of(String bundle) {
return FhirBundleParameter.of(null, bundle);
}

@AutoValue.Builder
abstract static class Builder {
abstract Builder setMetadata(String metadata);

abstract Builder setBundle(String bundle);

abstract FhirBundleParameter build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.beam.sdk.io.gcp.healthcare;

import com.google.auto.value.AutoValue;
import java.io.Serializable;
import java.util.Objects;
import javax.annotation.Nullable;
import org.apache.beam.sdk.schemas.AutoValueSchema;
import org.apache.beam.sdk.schemas.annotations.DefaultSchema;
import org.apache.beam.sdk.schemas.annotations.SchemaCreate;

@DefaultSchema(AutoValueSchema.class)
@AutoValue
public abstract class FhirBundleResponse implements Serializable {

static FhirBundleResponse.Builder builder() {
return new AutoValue_FhirBundleResponse.Builder();
}

/** FhirBundleParameter represents a FHIR bundle in JSON format to be executed on a FHIR store. */
public abstract FhirBundleParameter getFhirBundleParameter();

/**
* HTTP response from the FHIR store after attempting to write the Bundle method. The value varies
* depending on BATCH vs TRANSACTION bundles.
*/
public abstract String getResponse();

@SchemaCreate
public static FhirBundleResponse of(
FhirBundleParameter fhirBundleParameter, @Nullable String response) {
return FhirBundleResponse.builder()
.setFhirBundleParameter(fhirBundleParameter)
.setResponse(Objects.toString(response, ""))
.build();
}

@AutoValue.Builder
abstract static class Builder {
abstract FhirBundleResponse.Builder setFhirBundleParameter(
FhirBundleParameter fhirBundleParameter);

abstract FhirBundleResponse.Builder setResponse(String response);

abstract FhirBundleResponse build();
}
}
Loading

0 comments on commit 59d5e9b

Please sign in to comment.