lifen-fhir.js
Version:
FHIR javascript client
136 lines (129 loc) • 4 kB
JavaScript
// Generated by CoffeeScript 1.12.7
(function() {
var Chance, assert, tu;
tu = require('../src/testUtils');
assert = require('assert');
Chance = require('chance');
exports.baseUrl = 'http://hapi.fhir.org/baseDstu3';
exports.spec_for = function(title, impl, baseUrl) {
var chance, genPatient;
chance = new Chance();
genPatient = function() {
return {
resourceType: "Patient",
text: {
status: "generated",
div: "<div>Generated</div>"
},
identifier: [
{
use: "usual",
label: "MRN",
system: "urn:oid:1.2.36.146.595.217.0.1",
value: chance.ssn(),
period: {
start: "2001-05-06"
},
assigner: {
display: "Acme Healthcare"
}
}
],
name: [
{
use: "official",
family: chance.last(),
given: [chance.first(), chance.first()]
}
]
};
};
return describe(title, function() {
var buildStep, checkStep, q, subject;
this.timeout(10000);
q = {
defer: impl.defer
};
buildStep = tu.stepBuilder(q);
checkStep = tu.checkStep(q);
subject = impl({
baseUrl: baseUrl
});
it("search", function(done) {
subject.search({
type: 'Patient',
query: {
name: 'maud'
}
}).then((function() {
return done();
}));
return null;
});
return it("CRUD", function(done) {
var checkCreatePt, checkReadPt, checkUpdatePt, createPt, deletePt, fail, preparePt, readPt, updatePt;
console.log(title + " SPEC");
fail = function(err) {
return done(new Error(JSON.stringify(err)));
};
preparePt = buildStep('pt', function(next, st) {
return next(genPatient());
});
createPt = buildStep('createPt', function(next, st) {
var success;
success = function(resp) {
var id;
id = resp.data.id.split("/_history/")[0];
st.pid = id;
return next(resp);
};
return subject.create({
resource: st.pt
}).then(success, fail);
});
checkCreatePt = checkStep('createPt', function(st, resp) {
var cpt;
cpt = resp.data;
assert.notEqual(cpt.id, null);
return assert.deepEqual(cpt.name[0].family, st.pt.name[0].family);
});
readPt = buildStep('readPt', function(next, st) {
return subject.read({
type: 'Patient',
id: st.pid
}).then(next, fail);
});
checkReadPt = checkStep('readPt', function(st, resp) {
readPt = resp.data;
return assert.deepEqual(readPt.name[0].family[0], st.pt.name[0].family[0]);
});
updatePt = buildStep('updatePt', function(next, st) {
var pt;
pt = st.createPt.data;
pt.name[0].family[0] = chance.last();
return subject.update({
resource: pt
}).then(next, fail);
});
checkUpdatePt = checkStep('updatePt', function(st, resp) {
updatePt = resp.data;
createPt = st.createPt.data;
return assert.deepEqual(updatePt.name[0].family[0], createPt.name[0].family[0]);
});
deletePt = buildStep('deletePt', function(next, st) {
createPt = st.createPt.data;
return subject["delete"]({
resource: {
resourceType: 'Patient',
id: createPt.id
}
}).then(next, fail);
});
preparePt({}).then(createPt).then(checkCreatePt).then(readPt).then(checkReadPt).then(updatePt).then(checkUpdatePt).then(deletePt).then((function() {
return done();
}));
return null;
});
});
};
}).call(this);