Skip to content

Commit

Permalink
feat: Added generate patient example
Browse files Browse the repository at this point in the history
feat: Added metadata generator

docs: Update README.md

Changed to do list with metadata
  • Loading branch information
Chinlinlee committed Jan 27, 2021
1 parent c6d1528 commit 5ffcdc1
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 3 deletions.
97 changes: 96 additions & 1 deletion API_Generator.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ const fhirgen = require('./FHIR-mongoose-Models-Generator');
const fs =require('fs');
const mkdirp = require('mkdirp');
const beautify = require('js-beautify').js;
const _ = require('lodash');
/**
*
* @param {Object} option
Expand Down Expand Up @@ -292,13 +293,107 @@ function generateAPI(option) {
fs.writeFileSync(`./api/FHIR/${res}/index.js` , beautify(indexJs));
}
}
function generateMetaData () {
let dirInFHIRAPI = fs.readdirSync('./api/FHIR' , {withFileTypes : true})
.filter(itemInDir => itemInDir.isDirectory())
.map(dirItem => {
if (dirItem.name.toLocaleLowerCase() != "metadata") {
return dirItem.name;
}
});
dirInFHIRAPI = _.compact(dirInFHIRAPI);
const fhirUrl = "http://hl7.org/fhir/R4";
let metaData = {
"rest" : [
{
"mode" : "server" ,
"resource" : []
}
]
};
console.log(dirInFHIRAPI);
for (let resource of dirInFHIRAPI) {
metaData.rest[0].resource.push( {
"type" : resource ,
"profile" : `${fhirUrl}/${resource.toLocaleLowerCase()}.html` ,
"interaction" : [
{
"code" : "read"
} ,
{
"code" : "update"
} ,
{
"code" : "delete"
} ,
{
'code' : "create"
}
] ,
"updateCreate" : true ,
"conditionalDelete" : "single" ,
"searchInclude" : [] ,
"searchRevInclude" : [] ,
"searchParam" : [
{
"name" : "_id" ,
"type" : "string"
}
]
});
}
mkdirp.sync("./api/FHIR/metadata");
mkdirp.sync("./api/FHIR/metadata/controller");
let metadataRouteIndexText = `
const express = require('express');
const router = express.Router();
const {validateParams} = require('../../validator');
const Joi = require('joi');
const {isAdminLogin , isAdmin} = require('../../Api_function');
router.use((req, res, next) => {
res.set('Content-Type', 'application/fhir+json');
next();
});
router.get('/' , require('./controller/getMetadata'));
module.exports = router;`
fs.writeFileSync("./api/FHIR/metadata/index.js" , beautify(metadataRouteIndexText));
let metadataText = `
const fhirUrl = "http://hl7.org/fhir/R4";
module.exports = async function (req ,res) {
const metaData = {
"resourceType": "CapabilityStatement",
"status": "active",
"date": Date.now().toString(),
"publisher": "Not provided",
"kind": "instance",
"software": {
"name": "Simple-Express-FHIR-Server",
"version": "1.0.0"
},
"implementation": {
"description": "Simple-Express FHIR R4 Server",
"url": \`http://${process.env.FHIRSERVER_HOST}/${process.env.FHIRSERVER_APIPATH}\`
},
"fhirVersion": "4.0.1",
"format": [ "json" ],
"rest" : ${JSON.stringify(metaData.rest[0] , null , 4)}
}
res.json(metaData);
}
`
fs.writeFileSync("./api/FHIR/metadata/controller/getMetadata.js" , beautify(metadataText));
}
/*generateAPI({
resources : ["Patient" , "MedicationRequest" , "Observation" , "ImagingStudy" , "Claim"]
})*/

module.exports = {
generateAPI : generateAPI
generateAPI : generateAPI ,
generateMetaData : generateMetaData
}


Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,5 +48,5 @@ node server.js


## TODO
- [ ] metadata
- [x] metadata
- [ ] history
3 changes: 2 additions & 1 deletion build/init.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const fs = require('fs');
const { generateAPI } =require('../API_Generator');
const { generateAPI , generateMetaData } =require('../API_Generator');
const config = require('./config');

function init () {
Expand All @@ -20,5 +20,6 @@ FHIRSERVER_APIPATH="fhir"
fs.writeFileSync(".env" , envText);
}
generateAPI(config);
generateMetaData();
}
init();

0 comments on commit 5ffcdc1

Please sign in to comment.