Use fhir.js
package
FhirServise.js
const mkFhir = require('fhir.js');
class FhirService {
constructor(token) {
this.client = mkFhir({
baseUrl: process.env.FHIR_URI,
auth: {
bearer: token,
},
});
}
async updatePatient(resource) {
const response = await this.client.update(resource);
return response
}
}
module.exports = FhirService;
Next use updatePatient
const router = require('express').Router();
const { celebrate } = require('celebrate');
const validators = require('../../validators/patient');
const FhirService = require('../../services/fhir');
router
.route('/')
.put(celebrate(validators.putPatient), async (req, res, next) => {
try {
const token = req.headers['x-access-token'];
const fhirClient = new NewFhirService(token)
const response = await fhirClient.updatePatient(req.body);
return res.send(response);
} catch (err) {
next(err);
}
})
module.exports = router;
req.body
has a structure
{type: "Patient", id: "17865", reporting: {email: true}}
And get error
error: āOperation Outcomeā
message: āFailed to parse request body as JSON resource. Error was: Failed to parse JSON content, error was: Did not find any content to parseā
statusCode: 400
If try to use JSON.strigify()
const router = require('express').Router();
const { celebrate } = require('celebrate');
const validators = require('../../validators/patient');
const FhirService = require('../../services/fhir');
router
.route('/')
.put(celebrate(validators.putPatient), async (req, res, next) => {
try {
const token = req.headers['x-access-token'];
const fhirClient = new NewFhirService(token)
const response = await fhirClient.updatePatient(JSON.stringify(req.body));
return res.send(response);
} catch (err) {
next(err);
}
})
module.exports = router;
Get error
{statusCode: 400, error: āI need adapter.deferā, message: āI need adapter.deferā}
Where am I wrong?