googleapis / googleapis/google-api-nodejs-client
Incorrect typing in @googleapis/healthcare
- Dominant language
- TypeScript
- Stars
- 12.2k
- Forks
- 2k
- Avg merge
- 1d 9h
- Merged PRs (30d)
- 24
Description
#### Environment details
- OS: macOS Sonoma 14.4.1
- Node.js version: 20.5.1
- npm version: 9.8.0
- `@googleapis/healthcare` version: 16.0.0
Hi there- following the [example code](https://cloud.google.com/healthcare-api/docs/how-tos/fhir-resources#creating_a_fhir_resource) for creating FHIR resources, it seems the generated types do not match what the api expects.
Running the example code indicates the `requestBody` is mistyped and should be of type [Scehma$HttpBody](https://github.com/googleapis/google-api-nodejs-client/blob/dcba00c33f89a94ee4aceaed3fc511a311ab8c33/src/apis/healthcare/v1.ts#L1306).
The response is also mistyped as it seems to return a BLOB. Below is the example code with comments added. This was tested using valid config variables.
``` typescript
const google = require('@googleapis/healthcare');
const healthcare = google.healthcare({
version: 'v1',
auth: new google.auth.GoogleAuth({
scopes: ['https://www.googleapis.com/auth/cloud-platform'],
}),
headers: { 'Content-Type': 'application/fhir+json' },
});
async function createFhirResource() {
// Replace the following body with the data for the resource you want to
// create.
const body = {
name: [{ use: 'official', family: 'Smith', given: ['Darcy'] }],
gender: 'female',
birthDate: '1970-01-01',
resourceType: 'Patient',
};
// TODO(developer): uncomment these lines before running the sample
// const cloudRegion = 'us-central1';
// const projectId = 'adjective-noun-123';
// const datasetId = 'my-dataset';
// const fhirStoreId = 'my-fhir-store';
// const resourceType = 'Patient';
// Example code request - type errors for `requestBody`, returns 200
const request = { parent, type: resourceType, requestBody: body };
const resource = await healthcare.projects.locations.datasets.fhirStores.fhir.create(request);
// Modified to satisfy type errors, throws 400
// const request = { parent, type: resourceType, requestBody: { data: JSON.stringify(body) } };
// const resource = await healthcare.projects.locations.datasets.fhirStores.fhir.create(request);
// Example code response - `id` is undefined, `resource.data` is a BLOB. Type error: Property 'id' does not exist on type 'Schema$HttpBody'.
// console.log(`Created FHIR resource with ID ${resource.data.id}`);
// console.log(resource.data);
// Modified to parse response correctly, throws type errors
const textData = await resource.data.text();
const parsedData = JSON.parse(textData);
console.log(`Created FHIR resource with ID ${parsedData.id}`);
console.log(parsedData);
}
createFhirResource();
```
It seems there have been a couple other similar issues in the other api libraries.
See: #1944 and #1168
Contributor guide
Assessment
This issue has not been assessed yet.