Skip to content

Commit

Permalink
fix: make new urls available first (#26)
Browse files Browse the repository at this point in the history
* fix: make new urls available first

* fix: export new pdt and vaccination types first
  • Loading branch information
HJunyuan authored Jun 1, 2021
1 parent 99534ba commit 46a252c
Show file tree
Hide file tree
Showing 18 changed files with 3,896 additions and 1 deletion.
2 changes: 2 additions & 0 deletions scripts/post-install.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ if (fs.existsSync(quicktype) && process.env.npm_config_production !== "true") {
generate({ path: "sg/gov/tech/geekout/1.0", rootTypeName: "Geekout" });
generate({ path: "sg/gov/tech/notarise/1.0", rootTypeName: "Notarise" });
generate({ path: "sg/gov/moh/healthcert/1.0", rootTypeName: "HealthCert" });
generate({ path: "sg/gov/moh/pdt-healthcert/1.0", rootTypeName: "PDTHealthCert" });
generate({ path: "sg/gov/moh/vaccination-healthcert/1.0", rootTypeName: "VaccinationHealthCert" });
} else {
console.log("Not running quicktype");
}
4 changes: 3 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import * as geekout from "./__generated__/sg/gov/tech/geekout/1.0/schema";
import * as notarise from "./__generated__/sg/gov/tech/notarise/1.0/schema";
import * as healthcert from "./__generated__/sg/gov/moh/healthcert/1.0/schema";
import * as pdtHealthcert from "./__generated__/sg/gov/moh/pdt-healthcert/1.0/schema";
import * as vaccinationHealthcert from "./__generated__/sg/gov/moh/healthcert/1.0/schema";

export { geekout, notarise, healthcert };
export { geekout, notarise, healthcert, pdtHealthcert, vaccinationHealthcert };
153 changes: 153 additions & 0 deletions src/sg/gov/moh/pdt-healthcert/1.0/healthcert-endorsed-document.json

Large diffs are not rendered by default.

13 changes: 13 additions & 0 deletions src/sg/gov/moh/pdt-healthcert/1.0/healthcert-endorsed-schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"$id": "https://schemata.openattestation.com/sg/gov/moh/pdt-healthcert/1.0/healthcert-endorsed-schema",
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"allOf": [
{
"$ref": "https://schemata.openattestation.com/sg/gov/moh/pdt-healthcert/1.0/schema.json"
},
{
"$ref": "https://schemata.openattestation.com/sg/gov/tech/notarise/1.0/notarise-open-attestation-schema.json"
}
]
}
171 changes: 171 additions & 0 deletions src/sg/gov/moh/pdt-healthcert/1.0/healthcert-endorsed-wrapped.json

Large diffs are not rendered by default.

80 changes: 80 additions & 0 deletions src/sg/gov/moh/pdt-healthcert/1.0/healthcert-endorsed.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import Ajv from "ajv";
import schema from "./healthcert-endorsed-schema.json";
import sampleDocJson from "./healthcert-endorsed-document.json";
import axios from "axios";
import { cloneDeep, omit } from "lodash";

function loadSchema(uri: string) {
return axios.get(uri).then(res => {
return res.data;
});
}
const ajv = new Ajv({ allErrors: true, loadSchema: loadSchema });
let validator: Ajv.ValidateFunction;

// eslint-disable-next-line jest/no-disabled-tests
describe("schema", () => {
beforeAll(async () => {
validator = await ajv.compileAsync(schema);
});
it("should work with valid json", () => {
expect(validator(sampleDocJson)).toBe(true);
});

//To test if healthcert schema is correctly merged
it("should return array of errors without fhirVersion", () => {
const badDoc = omit(cloneDeep(sampleDocJson), "fhirVersion");
expect(validator(badDoc)).toBe(false);
expect(validator.errors).toMatchInlineSnapshot(`
Array [
Object {
"dataPath": "",
"keyword": "required",
"message": "should have required property 'fhirVersion'",
"params": Object {
"missingProperty": "fhirVersion",
},
"schemaPath": "#/required",
},
]
`);
});

//To test if oa schema is correctly merged
it("should return array of errors without issuers", () => {
const badDoc = omit(cloneDeep(sampleDocJson), "issuers");
expect(validator(badDoc)).toBe(false);
expect(validator.errors).toMatchInlineSnapshot(`
Array [
Object {
"dataPath": "",
"keyword": "required",
"message": "should have required property 'issuers'",
"params": Object {
"missingProperty": "issuers",
},
"schemaPath": "#/required",
},
]
`);
});

//To test if notarized schema is correctly merged
it("should return array of errors without notarisationMetadata", () => {
const badDoc = omit(cloneDeep(sampleDocJson), "notarisationMetadata");
expect(validator(badDoc)).toBe(false);
expect(validator.errors).toMatchInlineSnapshot(`
Array [
Object {
"dataPath": "",
"keyword": "required",
"message": "should have required property 'notarisationMetadata'",
"params": Object {
"missingProperty": "notarisationMetadata",
},
"schemaPath": "https://schemata.openattestation.com/sg/gov/tech/notarise/1.0/schema.json/required",
},
]
`);
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
{
"id": "TEST001",
"name": "HealthCert",
"validFrom": "2020-11-20",
"fhirVersion": "4.0.1",
"fhirBundle": {
"resourceType": "Bundle",
"type": "collection",
"entry": [
{
"resourceType": "Patient",
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-nationality",
"code": {
"text": "SG"
}
}
],
"identifier": [
{
"type": "PPN",
"value": "E7831177G"
},
{
"type": {
"text": "NRIC"
},
"value": "S9098989Z"
}
],
"name": [
{
"text": "Tan Chen Chen"
}
],
"gender": "female",
"birthDate": "1990-01-15"
},
{
"resourceType": "Specimen",
"type": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "258500001",
"display": "Nasopharyngeal swab"
}
]
},
"collection": {
"collectedDateTime": "2020-09-27T06:15:00Z"
}
},
{
"resourceType": "Observation",
"identifier": [
{
"value": "123456789",
"type": "ACSN"
}
],
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "94531-1",
"display": "Reverse transcription polymerase chain reaction (rRT-PCR) test"
}
]
},
"valueCodeableConcept": {
"coding": [
{
"system": "http://snomed.info/sct",
"code": "260385009",
"display": "Negative"
}
]
},
"effectiveDateTime": "2020-09-28T06:15:00Z",
"status": "final",
"performer": {
"name": [
{
"text": "Dr Michael Lim"
}
]
},
"qualification": [
{
"identifier": "MCR 123214",
"issuer": "MOH"
}
]
},
{
"resourceType": "Organization",
"name": "MacRitchie Medical Clinic",
"type": "Licensed Healthcare Provider",
"endpoint": {
"address": "https://www.macritchieclinic.com.sg"
},
"contact": {
"telecom": [
{
"system": "phone",
"value": "+6563113111"
}
],
"address": {
"type": "physical",
"use": "work",
"text": "MacRitchie Hospital Thomson Road Singapore 123000"
}
}
},
{
"resourceType": "Organization",
"name": "MacRitchie Laboratory",
"type": "Accredited Laboratory",
"contact": {
"telecom": [
{
"system": "phone",
"value": "+6562711188"
}
],
"address": {
"type": "physical",
"use": "work",
"text": "2 Thomson Avenue 4 Singapore 098888"
}
}
}
]
},
"issuers": [
{
"name": "GovTech",
"documentStore": "0x8Fc57204c35fb9317D91285eF52D6b892EC08cD3",
"identityProof": {
"type": "DNS-TXT",
"location": "example.openattestation.com"
}
}
],
"$template": {
"name": "HEALTH_CERT",
"type": "EMBEDDED_RENDERER",
"url": "https://healthcert.renderer.moh.gov.sg/"
},
"logo": "data:image/png;base64,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"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"$id": "https://schemata.openattestation.com/sg/gov/moh/pdt-healthcert/1.0/healthcert-open-attestation-schema",
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"allOf": [
{
"$ref": "https://schema.openattestation.com/2.0/schema.json"
},
{
"$ref": "https://schemata.openattestation.com/sg/gov/moh/pdt-healthcert/1.0/schema.json"
}
]
}
Loading

0 comments on commit 46a252c

Please sign in to comment.