@andes/fhir 1.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/.circleci/config.yml +69 -0
  2. package/.editorconfig +14 -0
  3. package/.gitattributes +1 -0
  4. package/.github/CODEOWNERS +1 -0
  5. package/.github/labeler.yml +11 -0
  6. package/.github/pull_request_template.md +28 -0
  7. package/.github/workflows/build_test.yml +14 -0
  8. package/.github/workflows/has_conflicts.yml +13 -0
  9. package/CHANGELOG.md +306 -0
  10. package/LICENSE +674 -0
  11. package/README.md +2 -0
  12. package/dist/index.js +33 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/src/data/patient.json +185 -0
  15. package/dist/src/lib/allergyIntolerance.js +40 -0
  16. package/dist/src/lib/allergyIntolerance.js.map +1 -0
  17. package/dist/src/lib/bundle.js +23 -0
  18. package/dist/src/lib/bundle.js.map +1 -0
  19. package/dist/src/lib/composition.js +151 -0
  20. package/dist/src/lib/composition.js.map +1 -0
  21. package/dist/src/lib/condition.js +80 -0
  22. package/dist/src/lib/condition.js.map +1 -0
  23. package/dist/src/lib/config.js +23 -0
  24. package/dist/src/lib/config.js.map +1 -0
  25. package/dist/src/lib/config.test.js +13 -0
  26. package/dist/src/lib/config.test.js.map +1 -0
  27. package/dist/src/lib/device.js +39 -0
  28. package/dist/src/lib/device.js.map +1 -0
  29. package/dist/src/lib/device.test.js +10 -0
  30. package/dist/src/lib/device.test.js.map +1 -0
  31. package/dist/src/lib/document-reference.js +104 -0
  32. package/dist/src/lib/document-reference.js.map +1 -0
  33. package/dist/src/lib/immunization.js +68 -0
  34. package/dist/src/lib/immunization.js.map +1 -0
  35. package/dist/src/lib/medication.js +65 -0
  36. package/dist/src/lib/medication.js.map +1 -0
  37. package/dist/src/lib/medicationRequest.js +100 -0
  38. package/dist/src/lib/medicationRequest.js.map +1 -0
  39. package/dist/src/lib/medicationStatement.js +56 -0
  40. package/dist/src/lib/medicationStatement.js.map +1 -0
  41. package/dist/src/lib/organization.js +91 -0
  42. package/dist/src/lib/organization.js.map +1 -0
  43. package/dist/src/lib/patient.js +361 -0
  44. package/dist/src/lib/patient.js.map +1 -0
  45. package/dist/src/lib/patient.test.js +40 -0
  46. package/dist/src/lib/patient.test.js.map +1 -0
  47. package/dist/src/lib/practitioner.js +161 -0
  48. package/dist/src/lib/practitioner.js.map +1 -0
  49. package/index.ts +31 -0
  50. package/jest.config.js +12 -0
  51. package/package.json +54 -0
  52. package/src/data/patient.json +185 -0
  53. package/src/lib/allergyIntolerance.ts +36 -0
  54. package/src/lib/bundle.ts +19 -0
  55. package/src/lib/composition.ts +153 -0
  56. package/src/lib/condition.ts +80 -0
  57. package/src/lib/config.test.ts +13 -0
  58. package/src/lib/config.ts +17 -0
  59. package/src/lib/device.test.ts +9 -0
  60. package/src/lib/device.ts +36 -0
  61. package/src/lib/document-reference.ts +102 -0
  62. package/src/lib/immunization.ts +64 -0
  63. package/src/lib/medication.ts +61 -0
  64. package/src/lib/medicationRequest.ts +100 -0
  65. package/src/lib/medicationStatement.ts +52 -0
  66. package/src/lib/organization.ts +89 -0
  67. package/src/lib/patient.test.ts +38 -0
  68. package/src/lib/patient.ts +374 -0
  69. package/src/lib/practitioner.ts +157 -0
  70. package/tsconfig.test.json +18 -0
  71. package/tslint.json +139 -0
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encode = void 0;
4
+ var moment = require("moment");
5
+ var config_1 = require("./config");
6
+ function encode(ID, author, organization, patient, binaryURL) {
7
+ return {
8
+ resourceType: 'DocumentReference',
9
+ id: ID,
10
+ meta: {
11
+ lastUpdated: moment().format()
12
+ },
13
+ contained: [
14
+ {
15
+ resourceType: 'Practitioner',
16
+ id: author.id,
17
+ identifier: [{
18
+ system: config_1.makeUrl('Device'),
19
+ value: author.id
20
+ }]
21
+ },
22
+ {
23
+ resourceType: 'Organization',
24
+ id: organization.id,
25
+ identifier: [{
26
+ system: config_1.makeUrl('Organization'),
27
+ value: organization.id
28
+ }]
29
+ }
30
+ ],
31
+ custodian: {
32
+ identifier: {
33
+ system: 'https://federador.msal.gob.ar/uri',
34
+ value: config_1.makeUrl('Organization', organization.id)
35
+ }
36
+ },
37
+ masterIdentifier: {
38
+ system: config_1.makeUrl('documentos_versiones'),
39
+ value: ID
40
+ },
41
+ identifier: [{
42
+ system: config_1.makeUrl('documentos'),
43
+ value: ID
44
+ }],
45
+ status: 'current',
46
+ type: {
47
+ coding: [
48
+ {
49
+ system: 'http://loinc.org',
50
+ code: '60591-5'
51
+ }
52
+ ]
53
+ },
54
+ subject: {
55
+ reference: config_1.makeUrl('Patient', patient.id),
56
+ },
57
+ // author: [
58
+ // {
59
+ // reference: makeUrl('Device', author.id),
60
+ // },
61
+ // {
62
+ // reference: makeUrl('Organization', organization.id),
63
+ // }
64
+ // ],
65
+ securityLabel: [{
66
+ coding: [{
67
+ system: 'https://saludddigital.gob.ar/nivelesconfidencialidad',
68
+ code: 'N'
69
+ }]
70
+ }],
71
+ content: [{
72
+ attachment: {
73
+ id: 'PRINCIPAL',
74
+ url: binaryURL
75
+ }
76
+ }],
77
+ context: {
78
+ event: [{
79
+ coding: [{
80
+ system: 'https://saludddigital.gob.ar/tiposevento',
81
+ code: 'CIR'
82
+ }]
83
+ }],
84
+ // period: {
85
+ // start: '2019-04-03T10:30:00+03:00',
86
+ // end: '2019-04-05T10:30:00+03:00'
87
+ // },
88
+ facilityType: {
89
+ coding: [{
90
+ system: 'https://saludddigital.gob.ar/tipoprestador',
91
+ code: 'INI'
92
+ }]
93
+ },
94
+ practiceSetting: {
95
+ coding: [{
96
+ system: 'https://saludddigital.gob.ar/especialidades',
97
+ code: 'CLM'
98
+ }]
99
+ }
100
+ }
101
+ };
102
+ }
103
+ exports.encode = encode;
104
+ //# sourceMappingURL=document-reference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-reference.js","sourceRoot":"","sources":["../../../src/lib/document-reference.ts"],"names":[],"mappings":";;;AAAA,+BAAiC;AACjC,mCAAmC;AAEnC,SAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS;IAC/D,OAAO;QACH,YAAY,EAAE,mBAAmB;QACjC,EAAE,EAAE,EAAE;QACN,IAAI,EAAE;YACF,WAAW,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE;SACjC;QACD,SAAS,EAAE;YACP;gBACI,YAAY,EAAE,cAAc;gBAC5B,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,UAAU,EAAE,CAAC;wBACT,MAAM,EAAE,gBAAO,CAAC,QAAQ,CAAC;wBACzB,KAAK,EAAE,MAAM,CAAC,EAAE;qBACnB,CAAC;aACL;YACD;gBACI,YAAY,EAAE,cAAc;gBAC5B,EAAE,EAAE,YAAY,CAAC,EAAE;gBACnB,UAAU,EAAE,CAAC;wBACT,MAAM,EAAE,gBAAO,CAAC,cAAc,CAAC;wBAC/B,KAAK,EAAE,YAAY,CAAC,EAAE;qBACzB,CAAC;aACL;SACJ;QACD,SAAS,EAAE;YACP,UAAU,EAAE;gBACR,MAAM,EAAE,mCAAmC;gBAC3C,KAAK,EAAE,gBAAO,CAAC,cAAc,EAAE,YAAY,CAAC,EAAE,CAAC;aAClD;SACJ;QACD,gBAAgB,EAAE;YACd,MAAM,EAAE,gBAAO,CAAC,sBAAsB,CAAC;YACvC,KAAK,EAAE,EAAE;SACZ;QACD,UAAU,EAAE,CAAC;gBACT,MAAM,EAAE,gBAAO,CAAC,YAAY,CAAC;gBAC7B,KAAK,EAAE,EAAE;aACZ,CAAC;QACF,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE;YACF,MAAM,EAAE;gBACJ;oBACI,MAAM,EAAE,kBAAkB;oBAC1B,IAAI,EAAE,SAAS;iBAClB;aACJ;SACJ;QACD,OAAO,EAAE;YACL,SAAS,EAAE,gBAAO,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;SAC5C;QACD,YAAY;QACZ,QAAQ;QACR,mDAAmD;QACnD,SAAS;QACT,QAAQ;QACR,+DAA+D;QAC/D,QAAQ;QACR,KAAK;QACL,aAAa,EAAE,CAAC;gBACZ,MAAM,EAAE,CAAC;wBACL,MAAM,EAAE,sDAAsD;wBAC9D,IAAI,EAAE,GAAG;qBACZ,CAAC;aACL,CAAC;QACF,OAAO,EAAE,CAAC;gBACN,UAAU,EAAE;oBACR,EAAE,EAAE,WAAW;oBACf,GAAG,EAAE,SAAS;iBACjB;aACJ,CAAC;QACF,OAAO,EAAE;YACL,KAAK,EAAE,CAAC;oBACJ,MAAM,EAAE,CAAC;4BACL,MAAM,EAAE,0CAA0C;4BAClD,IAAI,EAAE,KAAK;yBACd,CAAC;iBACL,CAAC;YACF,YAAY;YACZ,0CAA0C;YAC1C,uCAAuC;YAEvC,KAAK;YACL,YAAY,EAAE;gBACV,MAAM,EAAE,CAAC;wBACL,MAAM,EAAE,4CAA4C;wBACpD,IAAI,EAAE,KAAK;qBACd,CAAC;aACL;YACD,eAAe,EAAE;gBACb,MAAM,EAAE,CAAC;wBACL,MAAM,EAAE,6CAA6C;wBACrD,IAAI,EAAE,KAAK;qBACd,CAAC;aACL;SACJ;KAEJ,CAAC;AACN,CAAC;AAlGD,wBAkGC"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encode = void 0;
4
+ /**
5
+ * Encode de Vacunas Nomivac from ANDES to FHIR
6
+ * @param {} nomivac
7
+ * [ASK] El code de extension puede ir en vaccineCode?
8
+ * [ASk] Location no se sabe. Solo esta el texto
9
+ */
10
+ function encode(patientReference, nomivac) {
11
+ return {
12
+ resourceType: 'Immunization',
13
+ id: nomivac.idvacuna,
14
+ extension: [
15
+ {
16
+ url: 'http://sisa/fhir/esquema',
17
+ valueCoding: {
18
+ system: 'http://argentina.gob.ar/salud/NOMIVAC-esquemas',
19
+ code: '0',
20
+ display: nomivac.vacuna
21
+ }
22
+ },
23
+ {
24
+ url: 'http://sisa/fhir/condicionAplicacion',
25
+ valueCoding: {
26
+ system: 'http://argentina.gob.ar/salud/NOMIVAC-condicion',
27
+ code: '17',
28
+ display: 'Personal de Salud'
29
+ }
30
+ }
31
+ ],
32
+ status: 'completed',
33
+ notGiven: false,
34
+ vaccineCode: {
35
+ coding: [
36
+ {
37
+ system: 'https://snomed.info/sct/11000221109/id/228100022110',
38
+ code: nomivac.idvacuna,
39
+ display: nomivac.vacuna
40
+ }
41
+ ]
42
+ },
43
+ patient: {
44
+ reference: patientReference
45
+ },
46
+ date: nomivac.fechaAplicacion,
47
+ primarySource: false,
48
+ location: {
49
+ reference: 'http://argentina.gob.ar/salud/refes/14999912399913'
50
+ },
51
+ // lotNumber: null,
52
+ vaccinationProtocol: [
53
+ {
54
+ doseSequence: 1,
55
+ doseStatus: {
56
+ coding: [
57
+ {
58
+ system: 'http://hl7.org/fhir/vaccination-protocol-dose-status',
59
+ code: nomivac.dosis
60
+ }
61
+ ]
62
+ }
63
+ }
64
+ ]
65
+ };
66
+ }
67
+ exports.encode = encode;
68
+ //# sourceMappingURL=immunization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"immunization.js","sourceRoot":"","sources":["../../../src/lib/immunization.ts"],"names":[],"mappings":";;;AACA;;;;;GAKG;AACH,SAAgB,MAAM,CAAC,gBAAgB,EAAE,OAAO;IAC5C,OAAO;QACH,YAAY,EAAE,cAAc;QAC5B,EAAE,EAAE,OAAO,CAAC,QAAQ;QACpB,SAAS,EAAE;YACP;gBACI,GAAG,EAAE,0BAA0B;gBAC/B,WAAW,EAAE;oBACT,MAAM,EAAE,gDAAgD;oBACxD,IAAI,EAAE,GAAG;oBACT,OAAO,EAAE,OAAO,CAAC,MAAM;iBAC1B;aACJ;YACD;gBACI,GAAG,EAAE,sCAAsC;gBAC3C,WAAW,EAAE;oBACT,MAAM,EAAE,iDAAiD;oBACzD,IAAI,EAAE,IAAI;oBACV,OAAO,EAAE,mBAAmB;iBAC/B;aACJ;SACJ;QACD,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE;YACT,MAAM,EAAE;gBACJ;oBACI,MAAM,EAAE,qDAAqD;oBAC7D,IAAI,EAAE,OAAO,CAAC,QAAQ;oBACtB,OAAO,EAAE,OAAO,CAAC,MAAM;iBAC1B;aACJ;SACJ;QACD,OAAO,EAAE;YACL,SAAS,EAAE,gBAAgB;SAC9B;QACD,IAAI,EAAE,OAAO,CAAC,eAAe;QAC7B,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE;YACN,SAAS,EAAE,oDAAoD;SAClE;QACD,mBAAmB;QACnB,mBAAmB,EAAE;YACjB;gBACI,YAAY,EAAE,CAAC;gBACf,UAAU,EAAE;oBACR,MAAM,EAAE;wBACJ;4BACI,MAAM,EAAE,sDAAsD;4BAC9D,IAAI,EAAE,OAAO,CAAC,KAAK;yBACtB;qBACJ;iBACJ;aACJ;SACJ;KACJ,CAAC;AACN,CAAC;AAxDD,wBAwDC"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encode = void 0;
4
+ /**
5
+ * Encode de Medicamentos from ANDES to FHIR
6
+ * @param {} medication
7
+ */
8
+ function encode(medication) {
9
+ // Falta completar con más detalle
10
+ return {
11
+ resourceType: 'Medication',
12
+ id: medication.conceptId,
13
+ meta: {
14
+ profile: [
15
+ 'http://hl7.org/fhir/uv/ips/StructureDefinition/medication-ips'
16
+ ]
17
+ },
18
+ identifier: medication.moduleId,
19
+ code: {
20
+ coding: [
21
+ {
22
+ system: 'http://snomed.info/sct',
23
+ display: medication.term,
24
+ code: medication.conceptId
25
+ }
26
+ ],
27
+ text: medication.fsn
28
+ },
29
+ status: medication.active === true ? 'active' : 'inactive',
30
+ // manufacturer: null,
31
+ // form: null,
32
+ // amount: null,
33
+ // ingredient: null,
34
+ // ingredient: [ // ejemplo
35
+ // {
36
+ // code: {
37
+ // coding: [
38
+ // {
39
+ // system: "http://snomed.info/sct",
40
+ // display: "salbutamol (sustancia)",
41
+ // code: "372897005"
42
+ // }
43
+ // ]
44
+ // },
45
+ // isActive: true,
46
+ // strength: {
47
+ // numerator: {
48
+ // value: 200,
49
+ // unit: "mcg"
50
+ // },
51
+ // denominator: {
52
+ // value: 1,
53
+ // unit: "disparo"
54
+ // }
55
+ // }
56
+ // }
57
+ // ],
58
+ text: {
59
+ status: 'generated',
60
+ div: "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p><b>Generated Narrative with Details</b></p><p><b>id</b>: Medicacion</p><p><b>meta</b>: </p><p><b>text</b>: " + medication.pt.term + "</p></div>"
61
+ }
62
+ };
63
+ }
64
+ exports.encode = encode;
65
+ //# sourceMappingURL=medication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"medication.js","sourceRoot":"","sources":["../../../src/lib/medication.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,SAAgB,MAAM,CAAC,UAAU;IAC7B,kCAAkC;IAClC,OAAO;QACH,YAAY,EAAE,YAAY;QAC1B,EAAE,EAAE,UAAU,CAAC,SAAS;QACxB,IAAI,EAAE;YACF,OAAO,EAAE;gBACL,+DAA+D;aAClE;SACJ;QACD,UAAU,EAAE,UAAU,CAAC,QAAQ;QAC/B,IAAI,EAAE;YACF,MAAM,EAAE;gBACJ;oBACI,MAAM,EAAE,wBAAwB;oBAChC,OAAO,EAAE,UAAU,CAAC,IAAI;oBACxB,IAAI,EAAE,UAAU,CAAC,SAAS;iBAC7B;aACJ;YACD,IAAI,EAAE,UAAU,CAAC,GAAG;SACvB;QACD,MAAM,EAAE,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;QAC1D,sBAAsB;QACtB,cAAc;QACd,gBAAgB;QAChB,oBAAoB;QACpB,2BAA2B;QAC3B,QAAQ;QACR,kBAAkB;QAClB,wBAAwB;QACxB,oBAAoB;QACpB,wDAAwD;QACxD,yDAAyD;QACzD,wCAAwC;QACxC,oBAAoB;QACpB,gBAAgB;QAChB,aAAa;QACb,0BAA0B;QAC1B,sBAAsB;QACtB,2BAA2B;QAC3B,8BAA8B;QAC9B,8BAA8B;QAC9B,iBAAiB;QACjB,6BAA6B;QAC7B,4BAA4B;QAC5B,kCAAkC;QAClC,gBAAgB;QAChB,YAAY;QACZ,QAAQ;QACR,KAAK;QACL,IAAI,EAAE;YACF,MAAM,EAAE,WAAW;YACnB,GAAG,EAAE,+JAA2J,UAAU,CAAC,EAAE,CAAC,IAAI,eAAY;SACjM;KACJ,CAAC;AACN,CAAC;AAvDD,wBAuDC"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ /**
3
+ * Encode medicationRequest from ANDES to FHIR
4
+ * @param {} medicationRequest
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.encode = void 0;
8
+ var moment = require("moment");
9
+ // Muy incompleto hay que mejorarlo mucho todavía
10
+ function encode(patientReference, practitionerReference, medicationFHIR, data) {
11
+ return {
12
+ resourceType: 'MedicationRequest',
13
+ id: data.registro._id,
14
+ text: {
15
+ status: 'generated',
16
+ },
17
+ contained: [
18
+ medicationFHIR
19
+ ],
20
+ identifier: [
21
+ {
22
+ use: 'official',
23
+ system: 'http://app.andes.gob.ar/prescriptions',
24
+ value: data.registro.id
25
+ }
26
+ ],
27
+ // active | on-hold | cancelled | completed | entered-in-error | stopped | draft | unknown
28
+ status: (data.prestacion.estadoActual.tipo === 'validada') ? 'active' : 'on-hold',
29
+ // intent: proposal | plan | order | original-order | reflex-order | filler-order | instance-order | option
30
+ intent: 'order',
31
+ // category: {
32
+ // coding: [
33
+ // {
34
+ // system: '',
35
+ // display: '',
36
+ // code: ''
37
+ // }
38
+ // ]
39
+ // },
40
+ // priority: routine | urgent | asap | stat
41
+ priority: 'routine',
42
+ doNotPerform: false,
43
+ // Se puede usar medicationCodeableConcept o medicationReference, vamos a usar esta última.
44
+ medicationReference: {
45
+ reference: medicationFHIR.id,
46
+ display: medicationFHIR.code.text
47
+ },
48
+ subject: {
49
+ reference: patientReference // podría ser una reference a un group también
50
+ },
51
+ // encounter: Por ahora lo dejo pendiente. Podría ponerse una referencia a otra prestación o al informe del encuentro.
52
+ authoredOn: moment(data.registro.createdAt).format('YYYY-MM-DD'),
53
+ // requester & performer: pueden ser Reference(Practitioner|PractitionerRole|Organization|Patient|Device|RelatedPerson|CareTeam)
54
+ // por el momento vamos a tomar al profesional porque no tenemos otra info en la prestación
55
+ requester: {
56
+ reference: practitionerReference
57
+ },
58
+ // performer: {
59
+ // reference: practitionerReference
60
+ // },
61
+ // performerType: Lo dejamos pendiente
62
+ // recorder: {
63
+ // reference: practitionerReference
64
+ // },
65
+ // instantiatesCanonical: null, // ["<canonical>"], // Instantiates FHIR protocol or definition
66
+ // instantiatesUri: null, // ["<uri>"], // Instantiates external protocol or definition
67
+ basedOn: data.prestacion.id,
68
+ // groupIdentifier: null, // { Identifier }, // Composite request this is part of
69
+ // courseOfTherapyType: null, // { CodeableConcept }, // Overall pattern of medication administration
70
+ // insurance: null, // [{ Reference(Coverage|ClaimResponse) }], // Associated insurance coverage
71
+ note: null,
72
+ dosageInstruction: null,
73
+ // Medication supply authorization: Hay que ver esta parte
74
+ /*
75
+ dispenseRequest: { // Medication supply authorization
76
+ initialFill: { // First fill details
77
+ quantity: { Quantity(SimpleQuantity) }, // First fill quantity
78
+ duration: { Duration } // First fill duration
79
+ },
80
+ dispenseInterval: { Duration }, // Minimum period of time between dispenses
81
+ validityPeriod: { Period }, // Time period supply is authorized for
82
+ numberOfRepeatsAllowed: "<unsignedInt>", // Number of refills authorized
83
+ quantity: { Quantity(SimpleQuantity) }, // Amount of medication to supply per dispense
84
+ expectedSupplyDuration: { Duration }, // Number of days supply per dispense
85
+ performer: { Reference(Organization) } // Intended dispenser
86
+ },
87
+ */
88
+ substitution: {
89
+ // allowed[x]: Whether substitution is allowed or not. One of these 2:
90
+ allowedBoolean: true,
91
+ // "allowedCodeableConcept" : { CodeableConcept },
92
+ reason: null // { CodeableConcept } // Why should (not) substitution be made
93
+ },
94
+ priorPrescription: null,
95
+ detectedIssue: null,
96
+ eventHistory: null // [{ Reference(Provenance) }]
97
+ };
98
+ }
99
+ exports.encode = encode;
100
+ //# sourceMappingURL=medicationRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"medicationRequest.js","sourceRoot":"","sources":["../../../src/lib/medicationRequest.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,+BAAiC;AAEjC,iDAAiD;AAEjD,SAAgB,MAAM,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,cAAc,EAAE,IAAI;IAChF,OAAO;QACH,YAAY,EAAE,mBAAmB;QACjC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG;QACrB,IAAI,EAAE;YACF,MAAM,EAAE,WAAW;SAEtB;QACD,SAAS,EAAE;YACP,cAAc;SACjB;QACD,UAAU,EAAE;YACR;gBACI,GAAG,EAAE,UAAU;gBACf,MAAM,EAAE,uCAAuC;gBAC/C,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;aAC1B;SACJ;QACD,0FAA0F;QAC1F,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QACjF,2GAA2G;QAC3G,MAAM,EAAE,OAAO;QACf,cAAc;QACd,gBAAgB;QAChB,YAAY;QACZ,0BAA0B;QAC1B,2BAA2B;QAC3B,uBAAuB;QACvB,YAAY;QACZ,QAAQ;QACR,KAAK;QACL,2CAA2C;QAC3C,QAAQ,EAAE,SAAS;QACnB,YAAY,EAAE,KAAK;QACnB,2FAA2F;QAC3F,mBAAmB,EAAE;YACjB,SAAS,EAAE,cAAc,CAAC,EAAE;YAC5B,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI;SACpC;QACD,OAAO,EAAE;YACL,SAAS,EAAE,gBAAgB,CAAE,8CAA8C;SAC9E;QACD,sHAAsH;QACtH,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QAChE,iIAAiI;QACjI,2FAA2F;QAC3F,SAAS,EAAE;YACP,SAAS,EAAE,qBAAqB;SACnC;QACD,eAAe;QACf,uCAAuC;QACvC,KAAK;QACL,sCAAsC;QACtC,cAAc;QACd,uCAAuC;QACvC,KAAK;QACL,+FAA+F;QAC/F,uFAAuF;QACvF,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;QAC3B,iFAAiF;QACjF,qGAAqG;QACrG,gGAAgG;QAChG,IAAI,EAAE,IAAI;QACV,iBAAiB,EAAE,IAAI;QACvB,0DAA0D;QAC1D;;;;;;;;;;;;;UAaE;QACF,YAAY,EAAE;YACV,sEAAsE;YACtE,cAAc,EAAE,IAAI;YACpB,kDAAkD;YAClD,MAAM,EAAE,IAAI,CAAC,+DAA+D;SAC/E;QACD,iBAAiB,EAAE,IAAI;QACvB,aAAa,EAAE,IAAI;QACnB,YAAY,EAAE,IAAI,CAAA,8BAA8B;KACnD,CAAC;AACN,CAAC;AAzFD,wBAyFC"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encode = void 0;
4
+ /**
5
+ * Encode de Medicamentos from ANDES to FHIR
6
+ * @param {} medicationStatement
7
+ */
8
+ // Muy incompleto hay que mejorarlo mucho todavía
9
+ function encode(patientReference, medicationReference, prestacionMedicamento) {
10
+ return {
11
+ resourceType: 'MedicationStatement',
12
+ status: (prestacionMedicamento.valor.estado === 'activo') ? 'active' : 'inactive',
13
+ id: prestacionMedicamento._id,
14
+ effectiveDateTime: prestacionMedicamento.createdAt,
15
+ medicationCodeableConcept: {
16
+ coding: [
17
+ {
18
+ system: 'http://snomed.info/sct',
19
+ code: prestacionMedicamento.concepto.conceptId,
20
+ display: prestacionMedicamento.concepto.term
21
+ }
22
+ ]
23
+ },
24
+ meta: {
25
+ profile: [
26
+ 'http://hl7.org/fhir/uv/ips/StructureDefinition/medication-ips'
27
+ ]
28
+ },
29
+ // extension: null,
30
+ // identifier: '', // Business identifier, not a resource identifier
31
+ subject: {
32
+ reference: patientReference
33
+ },
34
+ medicationReference: {
35
+ reference: medicationReference
36
+ },
37
+ // context: null, // Encounter | Episode of care (podría ser el informe del encuentro o lo que definamos que brinda más información sobre el por qué)
38
+ dosage: [
39
+ {
40
+ text: prestacionMedicamento.valor,
41
+ route: { coding: [{ system: 'http://standardterms.edqm.eu', code: prestacionMedicamento._id, display: prestacionMedicamento.nombre }] },
42
+ timing: { coding: { system: 'http://terminology.hl7.org/CodeSystem/v3-GTSAbbreviation', code: 'QD', display: 'Diario' } }
43
+ }
44
+ ],
45
+ // effectivePeriod: { // Esta parte se podría calcular entre la fecha de la prestación y la cant. de tiempo que se indica, pero hay problemas
46
+ // en este registro ya que no siempre está la unidad de tiempo (dias, mes, etc) hay q ver si no es un bug.
47
+ // start: '2015-03'
48
+ // },
49
+ text: {
50
+ status: 'generated',
51
+ div: "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p><b>Generated Narrative with Details</b></p><p><b>id</b>: Medicacion </p><p><b>meta</b>: </p><p><b>text</b>: " + prestacionMedicamento.concepto.term + "</p></div>"
52
+ }
53
+ };
54
+ }
55
+ exports.encode = encode;
56
+ //# sourceMappingURL=medicationStatement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"medicationStatement.js","sourceRoot":"","sources":["../../../src/lib/medicationStatement.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,iDAAiD;AACjD,SAAgB,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,qBAAqB;IAC/E,OAAO;QACH,YAAY,EAAE,qBAAqB;QACnC,MAAM,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;QACjF,EAAE,EAAE,qBAAqB,CAAC,GAAG;QAC7B,iBAAiB,EAAE,qBAAqB,CAAC,SAAS;QAClD,yBAAyB,EAAE;YACvB,MAAM,EAAE;gBACJ;oBACI,MAAM,EAAE,wBAAwB;oBAChC,IAAI,EAAE,qBAAqB,CAAC,QAAQ,CAAC,SAAS;oBAC9C,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC,IAAI;iBAC/C;aACJ;SACJ;QACD,IAAI,EAAE;YACF,OAAO,EAAE;gBACL,+DAA+D;aAClE;SACJ;QACD,mBAAmB;QACnB,oEAAoE;QACpE,OAAO,EAAE;YACL,SAAS,EAAE,gBAAgB;SAC9B;QACD,mBAAmB,EAAE;YACjB,SAAS,EAAE,mBAAmB;SACjC;QACD,qJAAqJ;QACrJ,MAAM,EAAE;YACJ;gBACI,IAAI,EAAE,qBAAqB,CAAC,KAAK;gBACjC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,8BAA8B,EAAE,IAAI,EAAE,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE;gBACvI,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,0DAA0D,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;aAC5H;SACJ;QACD,iJAAiJ;QACjJ,0GAA0G;QAC1G,uBAAuB;QACvB,KAAK;QACL,IAAI,EAAE;YACF,MAAM,EAAE,WAAW;YACnB,GAAG,EAAE,gKAA8J,qBAAqB,CAAC,QAAQ,CAAC,IAAI,eAAY;SACrN;KACJ,CAAC;AACN,CAAC;AA7CD,wBA6CC"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encode = void 0;
4
+ var config_1 = require("./config");
5
+ /**
6
+ * Encode a organization from ANDES to FHIR
7
+ * @param {} organization
8
+ */
9
+ function encode(organization) {
10
+ var data = organization;
11
+ if (data) {
12
+ var identificadores = data.codigo.sisa ? [{
13
+ assigner: 'sisa',
14
+ value: data.codigo.sisa
15
+ }] : [];
16
+ if (data.codigo.cuie) {
17
+ identificadores.push({
18
+ assigner: 'cuie',
19
+ value: data.codigo.cuie
20
+ });
21
+ }
22
+ if (data.codigo.remediar) {
23
+ identificadores.push({
24
+ assigner: 'remediar',
25
+ value: data.codigo.remediar
26
+ });
27
+ }
28
+ if (data.codigo.sips) {
29
+ identificadores.push({
30
+ assigner: 'sips',
31
+ value: data.codigo.sips
32
+ });
33
+ }
34
+ identificadores.push({
35
+ system: config_1.makeUrl('Organization'),
36
+ value: data._id
37
+ });
38
+ var contactos = data.contacto ? data.contacto.map(function (unContacto) {
39
+ var cont = {
40
+ resourceType: 'ContactPoint',
41
+ value: unContacto.valor,
42
+ rank: unContacto.ranking,
43
+ };
44
+ switch (unContacto.tipo) {
45
+ case 'fijo':
46
+ cont['system'] = 'phone';
47
+ break;
48
+ case 'celular':
49
+ cont['system'] = 'phone';
50
+ break;
51
+ case 'email':
52
+ cont['system'] = 'email';
53
+ break;
54
+ }
55
+ return cont;
56
+ }) : [];
57
+ // Parsea direcciones
58
+ var direcciones = data.direccion ? [{
59
+ resourceType: 'Address',
60
+ postalCode: data.direccion.codigoPostal ? data.direccion.codigoPostal : '',
61
+ line: [data.direccion.valor],
62
+ city: data.direccion.ubicacion.localidad ? data.direccion.ubicacion.localidad.nombre : '',
63
+ state: data.direccion.ubicacion.provincia ? data.direccion.ubicacion.provincia.nombre : '',
64
+ country: data.direccion.ubicacion.pais ? data.direccion.ubicacion.pais.nombre : '',
65
+ }] : [];
66
+ // Armamos la organizacion FHIR
67
+ var organizacionFHIR = {
68
+ id: data.id,
69
+ resourceType: 'Organization',
70
+ identifier: identificadores,
71
+ active: data.activo ? data.activo : null,
72
+ type: [{
73
+ resourceType: 'CodeableConcept',
74
+ text: data.tipoEstablecimiento ? data.tipoEstablecimiento.nombre : null,
75
+ }],
76
+ name: data.nombre ? data.nombre : null,
77
+ };
78
+ if (contactos.length > 0) { // A contact detail for the organization
79
+ organizacionFHIR['telecom'] = contactos;
80
+ }
81
+ if (direcciones) { // An address for the organization
82
+ organizacionFHIR['address'] = direcciones;
83
+ }
84
+ return organizacionFHIR;
85
+ }
86
+ else {
87
+ return null;
88
+ }
89
+ }
90
+ exports.encode = encode;
91
+ //# sourceMappingURL=organization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization.js","sourceRoot":"","sources":["../../../src/lib/organization.ts"],"names":[],"mappings":";;;AAAA,mCAA+C;AAE/C;;;GAGG;AACH,SAAgB,MAAM,CAAC,YAAY;IAC/B,IAAI,IAAI,GAAG,YAAY,CAAC;IACxB,IAAI,IAAI,EAAE;QACN,IAAI,eAAe,GAAU,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC7C,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;aAC1B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACR,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAClB,eAAe,CAAC,IAAI,CAAC;gBACjB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;aAC1B,CAAC,CAAC;SACN;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YACtB,eAAe,CAAC,IAAI,CAAC;gBACjB,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;aAC9B,CAAC,CAAC;SACN;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAClB,eAAe,CAAC,IAAI,CAAC;gBACjB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;aAC1B,CAAC,CAAC;SACN;QACD,eAAe,CAAC,IAAI,CAAC;YACjB,MAAM,EAAE,gBAAO,CAAC,cAAc,CAAC;YAC/B,KAAK,EAAE,IAAI,CAAC,GAAG;SAClB,CAAC,CAAC;QAEH,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAA,UAAU;YACxD,IAAI,IAAI,GAAG;gBACP,YAAY,EAAE,cAAc;gBAC5B,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,IAAI,EAAE,UAAU,CAAC,OAAO;aAC3B,CAAC;YACF,QAAQ,UAAU,CAAC,IAAI,EAAE;gBACrB,KAAK,MAAM;oBACP,IAAI,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;oBACzB,MAAM;gBACV,KAAK,SAAS;oBACV,IAAI,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;oBACzB,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;oBACzB,MAAM;aACb;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACR,qBAAqB;QACrB,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAChC,YAAY,EAAE,SAAS;gBACvB,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;gBAC1E,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBACzF,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBAC1F,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;aACrF,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAER,+BAA+B;QAC/B,IAAI,gBAAgB,GAAG;YACnB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,YAAY,EAAE,cAAc;YAC5B,UAAU,EAAE,eAAe;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;YACxC,IAAI,EAAE,CAAC;oBACH,YAAY,EAAE,iBAAiB;oBAC/B,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;iBAC1E,CAAC;YACF,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;SACzC,CAAC;QACF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,wCAAwC;YAChE,gBAAgB,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;SAC3C;QAED,IAAI,WAAW,EAAE,EAAE,mCAAmC;YAClD,gBAAgB,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;SAC7C;QACD,OAAO,gBAAgB,CAAC;KAC3B;SAAM;QACH,OAAO,IAAI,CAAC;KACf;AACL,CAAC;AAlFD,wBAkFC"}