forked from rbren/fhir-swagger
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
37 lines (36 loc) · 1.19 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
var Converter = require('./lib/conformance-to-swagger.js');
const { XMLParser, }= require("fast-xml-parser")
var FS = require('fs');
module.exports = function(options, callback) {
var body = FS.readFileSync(options.fhir_cs_path, "utf-8");
if(options.fhir_cs_path.endsWith('.xml')){
let xmlOptions = {
ignoreAttributes: false,
ignoreDeclaration: true,
attributeNamePrefix: ""
};
const parser = new XMLParser(xmlOptions);
let jsonObj = parser.parse(body);
let json =recurse(jsonObj);
// console.log(jsonObj)
Converter.convert(options.fhir_url, json.CapabilityStatement,options).then(swagger=>{
callback(null,swagger);
});
}else{
var json = JSON.parse(body);
Converter.convert(options.fhir_url, json,options).then(swagger=>{
callback(null,swagger);
});
}
}
function recurse(obj) {
for ( var key in obj ) { // works for objects and arrays
var item = obj[key];
if(item.value){
obj[key]=item.value
}
else if ( typeof item === "object" )
obj[key]=recurse(item);
}
return obj;
}