@the-cascade-protocol/sdk 1.0.0
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.
- package/LICENSE +190 -0
- package/README.md +164 -0
- package/dist/consent/consent-filter.d.ts +21 -0
- package/dist/consent/consent-filter.d.ts.map +1 -0
- package/dist/consent/consent-filter.js +71 -0
- package/dist/consent/consent-filter.js.map +1 -0
- package/dist/consent/index.d.ts +2 -0
- package/dist/consent/index.d.ts.map +1 -0
- package/dist/consent/index.js +2 -0
- package/dist/consent/index.js.map +1 -0
- package/dist/deserializer/index.d.ts +7 -0
- package/dist/deserializer/index.d.ts.map +1 -0
- package/dist/deserializer/index.js +7 -0
- package/dist/deserializer/index.js.map +1 -0
- package/dist/deserializer/turtle-parser.d.ts +47 -0
- package/dist/deserializer/turtle-parser.d.ts.map +1 -0
- package/dist/deserializer/turtle-parser.js +840 -0
- package/dist/deserializer/turtle-parser.js.map +1 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/jsonld/context.d.ts +29 -0
- package/dist/jsonld/context.d.ts.map +1 -0
- package/dist/jsonld/context.js +95 -0
- package/dist/jsonld/context.js.map +1 -0
- package/dist/jsonld/converter.d.ts +50 -0
- package/dist/jsonld/converter.d.ts.map +1 -0
- package/dist/jsonld/converter.js +139 -0
- package/dist/jsonld/converter.js.map +1 -0
- package/dist/jsonld/index.d.ts +8 -0
- package/dist/jsonld/index.d.ts.map +1 -0
- package/dist/jsonld/index.js +8 -0
- package/dist/jsonld/index.js.map +1 -0
- package/dist/models/activity-snapshot.d.ts +49 -0
- package/dist/models/activity-snapshot.d.ts.map +1 -0
- package/dist/models/activity-snapshot.js +13 -0
- package/dist/models/activity-snapshot.js.map +1 -0
- package/dist/models/allergy.d.ts +49 -0
- package/dist/models/allergy.d.ts.map +1 -0
- package/dist/models/allergy.js +13 -0
- package/dist/models/allergy.js.map +1 -0
- package/dist/models/common.d.ts +174 -0
- package/dist/models/common.d.ts.map +1 -0
- package/dist/models/common.js +12 -0
- package/dist/models/common.js.map +1 -0
- package/dist/models/condition.d.ts +59 -0
- package/dist/models/condition.d.ts.map +1 -0
- package/dist/models/condition.js +13 -0
- package/dist/models/condition.js.map +1 -0
- package/dist/models/coverage.d.ts +117 -0
- package/dist/models/coverage.d.ts.map +1 -0
- package/dist/models/coverage.js +16 -0
- package/dist/models/coverage.js.map +1 -0
- package/dist/models/family-history.d.ts +38 -0
- package/dist/models/family-history.d.ts.map +1 -0
- package/dist/models/family-history.js +13 -0
- package/dist/models/family-history.js.map +1 -0
- package/dist/models/health-profile.d.ts +54 -0
- package/dist/models/health-profile.d.ts.map +1 -0
- package/dist/models/health-profile.js +11 -0
- package/dist/models/health-profile.js.map +1 -0
- package/dist/models/immunization.d.ts +78 -0
- package/dist/models/immunization.d.ts.map +1 -0
- package/dist/models/immunization.js +12 -0
- package/dist/models/immunization.js.map +1 -0
- package/dist/models/index.d.ts +20 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +7 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/lab-result.d.ts +83 -0
- package/dist/models/lab-result.d.ts.map +1 -0
- package/dist/models/lab-result.js +12 -0
- package/dist/models/lab-result.js.map +1 -0
- package/dist/models/medication.d.ts +144 -0
- package/dist/models/medication.d.ts.map +1 -0
- package/dist/models/medication.js +13 -0
- package/dist/models/medication.js.map +1 -0
- package/dist/models/patient-profile.d.ts +171 -0
- package/dist/models/patient-profile.d.ts.map +1 -0
- package/dist/models/patient-profile.js +14 -0
- package/dist/models/patient-profile.js.map +1 -0
- package/dist/models/procedure.d.ts +53 -0
- package/dist/models/procedure.d.ts.map +1 -0
- package/dist/models/procedure.js +12 -0
- package/dist/models/procedure.js.map +1 -0
- package/dist/models/sleep-snapshot.d.ts +54 -0
- package/dist/models/sleep-snapshot.d.ts.map +1 -0
- package/dist/models/sleep-snapshot.js +13 -0
- package/dist/models/sleep-snapshot.js.map +1 -0
- package/dist/models/vital-sign.d.ts +74 -0
- package/dist/models/vital-sign.d.ts.map +1 -0
- package/dist/models/vital-sign.js +13 -0
- package/dist/models/vital-sign.js.map +1 -0
- package/dist/pod/index.d.ts +2 -0
- package/dist/pod/index.d.ts.map +1 -0
- package/dist/pod/index.js +2 -0
- package/dist/pod/index.js.map +1 -0
- package/dist/pod/pod-builder.d.ts +63 -0
- package/dist/pod/pod-builder.d.ts.map +1 -0
- package/dist/pod/pod-builder.js +245 -0
- package/dist/pod/pod-builder.js.map +1 -0
- package/dist/serializer/index.d.ts +8 -0
- package/dist/serializer/index.d.ts.map +1 -0
- package/dist/serializer/index.js +8 -0
- package/dist/serializer/index.js.map +1 -0
- package/dist/serializer/turtle-builder.d.ts +93 -0
- package/dist/serializer/turtle-builder.d.ts.map +1 -0
- package/dist/serializer/turtle-builder.js +204 -0
- package/dist/serializer/turtle-builder.js.map +1 -0
- package/dist/serializer/turtle-serializer.d.ts +66 -0
- package/dist/serializer/turtle-serializer.d.ts.map +1 -0
- package/dist/serializer/turtle-serializer.js +404 -0
- package/dist/serializer/turtle-serializer.js.map +1 -0
- package/dist/validator/index.d.ts +2 -0
- package/dist/validator/index.d.ts.map +1 -0
- package/dist/validator/index.js +2 -0
- package/dist/validator/index.js.map +1 -0
- package/dist/validator/validator.d.ts +16 -0
- package/dist/validator/validator.d.ts.map +1 -0
- package/dist/validator/validator.js +295 -0
- package/dist/validator/validator.js.map +1 -0
- package/dist/vocabularies/index.d.ts +8 -0
- package/dist/vocabularies/index.d.ts.map +1 -0
- package/dist/vocabularies/index.js +7 -0
- package/dist/vocabularies/index.js.map +1 -0
- package/dist/vocabularies/namespaces.d.ts +125 -0
- package/dist/vocabularies/namespaces.d.ts.map +1 -0
- package/dist/vocabularies/namespaces.js +361 -0
- package/dist/vocabularies/namespaces.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cascade Protocol namespace URIs and vocabulary constants.
|
|
3
|
+
*
|
|
4
|
+
* These constants map directly to the RDF namespace prefixes used
|
|
5
|
+
* in Turtle serialization throughout the Cascade Protocol ecosystem.
|
|
6
|
+
*
|
|
7
|
+
* @see https://cascadeprotocol.org/docs/cascade-protocol-schemas
|
|
8
|
+
*/
|
|
9
|
+
// ─── Namespace URIs ──────────────────────────────────────────────────────────
|
|
10
|
+
/**
|
|
11
|
+
* Cascade Protocol namespace URIs.
|
|
12
|
+
*
|
|
13
|
+
* Used as RDF prefixes in Turtle serialization. Each entry maps a
|
|
14
|
+
* short prefix name to its full IRI.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { NAMESPACES } from '@the-cascade-protocol/sdk';
|
|
19
|
+
*
|
|
20
|
+
* // Use in Turtle prefix declarations
|
|
21
|
+
* const prefix = `@prefix cascade: <${NAMESPACES.cascade}> .`;
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export const NAMESPACES = {
|
|
25
|
+
/** Cascade Protocol core vocabulary (v1). */
|
|
26
|
+
cascade: 'https://ns.cascadeprotocol.org/core/v1#',
|
|
27
|
+
/** Cascade Protocol clinical vocabulary (v1). */
|
|
28
|
+
clinical: 'https://ns.cascadeprotocol.org/clinical/v1#',
|
|
29
|
+
/** Cascade Protocol health/wellness vocabulary (v1). */
|
|
30
|
+
health: 'https://ns.cascadeprotocol.org/health/v1#',
|
|
31
|
+
/** Cascade Protocol checkup vocabulary (v1). */
|
|
32
|
+
checkup: 'https://ns.cascadeprotocol.org/checkup/v1#',
|
|
33
|
+
/** Cascade Protocol POTS vocabulary (v1). */
|
|
34
|
+
pots: 'https://ns.cascadeprotocol.org/pots/v1#',
|
|
35
|
+
/** Cascade Protocol coverage/insurance vocabulary (v1). */
|
|
36
|
+
coverage: 'https://ns.cascadeprotocol.org/coverage/v1#',
|
|
37
|
+
/** HL7 FHIR namespace. */
|
|
38
|
+
fhir: 'http://hl7.org/fhir/',
|
|
39
|
+
/** SNOMED CT namespace. */
|
|
40
|
+
sct: 'http://snomed.info/sct/',
|
|
41
|
+
/** ICD-10-CM namespace. */
|
|
42
|
+
icd10: 'http://hl7.org/fhir/sid/icd-10-cm/',
|
|
43
|
+
/** LOINC namespace. */
|
|
44
|
+
loinc: 'http://loinc.org/rdf#',
|
|
45
|
+
/** RxNorm namespace. */
|
|
46
|
+
rxnorm: 'http://www.nlm.nih.gov/research/umls/rxnorm/',
|
|
47
|
+
/** W3C PROV-O namespace. */
|
|
48
|
+
prov: 'http://www.w3.org/ns/prov#',
|
|
49
|
+
/** XML Schema datatypes namespace. */
|
|
50
|
+
xsd: 'http://www.w3.org/2001/XMLSchema#',
|
|
51
|
+
/** Unified Code for Units of Measure namespace. */
|
|
52
|
+
ucum: 'http://unitsofmeasure.org/',
|
|
53
|
+
/** FOAF (Friend of a Friend) namespace for personal info. */
|
|
54
|
+
foaf: 'http://xmlns.com/foaf/0.1/',
|
|
55
|
+
/** Linked Data Platform namespace. */
|
|
56
|
+
ldp: 'http://www.w3.org/ns/ldp#',
|
|
57
|
+
/** Dublin Core Terms namespace. */
|
|
58
|
+
dcterms: 'http://purl.org/dc/terms/',
|
|
59
|
+
};
|
|
60
|
+
// ─── Type Mapping ────────────────────────────────────────────────────────────
|
|
61
|
+
/**
|
|
62
|
+
* Mapping from data type key (as used in Pod file paths and CLI queries)
|
|
63
|
+
* to the corresponding RDF type, name field key, and name predicate.
|
|
64
|
+
*
|
|
65
|
+
* Used during serialization and deserialization to determine:
|
|
66
|
+
* - `rdfType`: The `rdf:type` value for the record
|
|
67
|
+
* - `nameKey`: The JSON property holding the record's display name
|
|
68
|
+
* - `namePred`: The Turtle predicate for the name field
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* import { TYPE_MAPPING } from '@the-cascade-protocol/sdk';
|
|
73
|
+
*
|
|
74
|
+
* const medType = TYPE_MAPPING.medications;
|
|
75
|
+
* // { rdfType: 'health:MedicationRecord', nameKey: 'medicationName', namePred: 'health:medicationName' }
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export const TYPE_MAPPING = {
|
|
79
|
+
medications: {
|
|
80
|
+
rdfType: 'health:MedicationRecord',
|
|
81
|
+
nameKey: 'medicationName',
|
|
82
|
+
namePred: 'health:medicationName',
|
|
83
|
+
},
|
|
84
|
+
conditions: {
|
|
85
|
+
rdfType: 'health:ConditionRecord',
|
|
86
|
+
nameKey: 'conditionName',
|
|
87
|
+
namePred: 'health:conditionName',
|
|
88
|
+
},
|
|
89
|
+
allergies: {
|
|
90
|
+
rdfType: 'health:AllergyRecord',
|
|
91
|
+
nameKey: 'allergen',
|
|
92
|
+
namePred: 'health:allergen',
|
|
93
|
+
},
|
|
94
|
+
'lab-results': {
|
|
95
|
+
rdfType: 'health:LabResultRecord',
|
|
96
|
+
nameKey: 'testName',
|
|
97
|
+
namePred: 'health:testName',
|
|
98
|
+
},
|
|
99
|
+
immunizations: {
|
|
100
|
+
rdfType: 'health:ImmunizationRecord',
|
|
101
|
+
nameKey: 'vaccineName',
|
|
102
|
+
namePred: 'health:vaccineName',
|
|
103
|
+
},
|
|
104
|
+
'vital-signs': {
|
|
105
|
+
rdfType: 'clinical:VitalSign',
|
|
106
|
+
nameKey: 'vitalType',
|
|
107
|
+
namePred: 'clinical:vitalType',
|
|
108
|
+
},
|
|
109
|
+
supplements: {
|
|
110
|
+
rdfType: 'clinical:Supplement',
|
|
111
|
+
nameKey: 'supplementName',
|
|
112
|
+
namePred: 'clinical:supplementName',
|
|
113
|
+
},
|
|
114
|
+
procedures: {
|
|
115
|
+
rdfType: 'health:ProcedureRecord',
|
|
116
|
+
nameKey: 'procedureName',
|
|
117
|
+
namePred: 'health:procedureName',
|
|
118
|
+
},
|
|
119
|
+
'family-history': {
|
|
120
|
+
rdfType: 'health:FamilyHistoryRecord',
|
|
121
|
+
nameKey: 'conditionName',
|
|
122
|
+
namePred: 'health:conditionName',
|
|
123
|
+
},
|
|
124
|
+
insurance: {
|
|
125
|
+
rdfType: 'clinical:CoverageRecord',
|
|
126
|
+
nameKey: 'providerName',
|
|
127
|
+
namePred: 'clinical:providerName',
|
|
128
|
+
},
|
|
129
|
+
'patient-profile': {
|
|
130
|
+
rdfType: 'cascade:PatientProfile',
|
|
131
|
+
nameKey: 'name',
|
|
132
|
+
namePred: 'foaf:name',
|
|
133
|
+
},
|
|
134
|
+
activity: {
|
|
135
|
+
rdfType: 'health:ActivitySnapshot',
|
|
136
|
+
nameKey: 'date',
|
|
137
|
+
namePred: 'health:date',
|
|
138
|
+
},
|
|
139
|
+
sleep: {
|
|
140
|
+
rdfType: 'health:SleepSnapshot',
|
|
141
|
+
nameKey: 'date',
|
|
142
|
+
namePred: 'health:date',
|
|
143
|
+
},
|
|
144
|
+
'heart-rate': {
|
|
145
|
+
rdfType: 'clinical:VitalSign',
|
|
146
|
+
nameKey: 'vitalType',
|
|
147
|
+
namePred: 'clinical:vitalType',
|
|
148
|
+
},
|
|
149
|
+
'blood-pressure': {
|
|
150
|
+
rdfType: 'clinical:VitalSign',
|
|
151
|
+
nameKey: 'vitalType',
|
|
152
|
+
namePred: 'clinical:vitalType',
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
// ─── Record Type to Mapping Key ─────────────────────────────────────────────
|
|
156
|
+
/**
|
|
157
|
+
* Mapping from record type string (e.g. 'MedicationRecord') to the
|
|
158
|
+
* TYPE_MAPPING key (e.g. 'medications') used for looking up rdfType,
|
|
159
|
+
* nameKey, and namePred.
|
|
160
|
+
*
|
|
161
|
+
* Used by the serializer, deserializer, and JSON-LD converter to
|
|
162
|
+
* dispatch on record type.
|
|
163
|
+
*/
|
|
164
|
+
export const TYPE_TO_MAPPING_KEY = {
|
|
165
|
+
MedicationRecord: 'medications',
|
|
166
|
+
ConditionRecord: 'conditions',
|
|
167
|
+
AllergyRecord: 'allergies',
|
|
168
|
+
LabResultRecord: 'lab-results',
|
|
169
|
+
ImmunizationRecord: 'immunizations',
|
|
170
|
+
VitalSign: 'vital-signs',
|
|
171
|
+
Supplement: 'supplements',
|
|
172
|
+
ProcedureRecord: 'procedures',
|
|
173
|
+
FamilyHistoryRecord: 'family-history',
|
|
174
|
+
CoverageRecord: 'insurance',
|
|
175
|
+
InsurancePlan: 'insurance',
|
|
176
|
+
PatientProfile: 'patient-profile',
|
|
177
|
+
ActivitySnapshot: 'activity',
|
|
178
|
+
SleepSnapshot: 'sleep',
|
|
179
|
+
};
|
|
180
|
+
// ─── Schema Version ──────────────────────────────────────────────────────────
|
|
181
|
+
/**
|
|
182
|
+
* Current Cascade Protocol schema version.
|
|
183
|
+
*
|
|
184
|
+
* Used by the validator to check records against the expected version.
|
|
185
|
+
* Update this constant when the protocol schema version is bumped.
|
|
186
|
+
*/
|
|
187
|
+
export const CURRENT_SCHEMA_VERSION = '1.3';
|
|
188
|
+
// ─── Property Predicates ─────────────────────────────────────────────────────
|
|
189
|
+
/**
|
|
190
|
+
* Mapping from JSON property names to their corresponding Turtle predicates.
|
|
191
|
+
*
|
|
192
|
+
* Used during serialization to convert JSON key-value pairs into
|
|
193
|
+
* RDF triples with the correct predicate URIs.
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* ```typescript
|
|
197
|
+
* import { PROPERTY_PREDICATES } from '@the-cascade-protocol/sdk';
|
|
198
|
+
*
|
|
199
|
+
* const pred = PROPERTY_PREDICATES.dose; // 'health:dose'
|
|
200
|
+
* ```
|
|
201
|
+
*/
|
|
202
|
+
export const PROPERTY_PREDICATES = {
|
|
203
|
+
// ── Medication predicates (health: vocabulary) ──
|
|
204
|
+
medicationName: 'health:medicationName',
|
|
205
|
+
dose: 'health:dose',
|
|
206
|
+
frequency: 'health:frequency',
|
|
207
|
+
route: 'health:route',
|
|
208
|
+
prescriber: 'health:prescriber',
|
|
209
|
+
startDate: 'health:startDate',
|
|
210
|
+
endDate: 'health:endDate',
|
|
211
|
+
isActive: 'health:isActive',
|
|
212
|
+
rxNormCode: 'health:rxNormCode',
|
|
213
|
+
medicationClass: 'health:medicationClass',
|
|
214
|
+
affectsVitalSigns: 'health:affectsVitalSigns',
|
|
215
|
+
// ── Condition predicates (health: vocabulary) ──
|
|
216
|
+
conditionName: 'health:conditionName',
|
|
217
|
+
status: 'health:status',
|
|
218
|
+
onsetDate: 'health:onsetDate',
|
|
219
|
+
icd10Code: 'health:icd10Code',
|
|
220
|
+
snomedCode: 'health:snomedCode',
|
|
221
|
+
conditionClass: 'health:conditionClass',
|
|
222
|
+
monitoredVitalSigns: 'health:monitoredVitalSigns',
|
|
223
|
+
// ── Allergy predicates (health: vocabulary) ──
|
|
224
|
+
allergen: 'health:allergen',
|
|
225
|
+
allergyCategory: 'health:allergyCategory',
|
|
226
|
+
reaction: 'health:reaction',
|
|
227
|
+
allergySeverity: 'health:allergySeverity',
|
|
228
|
+
// ── Lab result predicates (health: vocabulary) ──
|
|
229
|
+
testName: 'health:testName',
|
|
230
|
+
resultValue: 'health:resultValue',
|
|
231
|
+
resultUnit: 'health:resultUnit',
|
|
232
|
+
referenceRange: 'health:referenceRange',
|
|
233
|
+
interpretation: 'health:interpretation',
|
|
234
|
+
performedDate: 'health:performedDate',
|
|
235
|
+
testCode: 'health:testCode',
|
|
236
|
+
labCategory: 'health:labCategory',
|
|
237
|
+
specimenType: 'health:specimenType',
|
|
238
|
+
reportedDate: 'health:reportedDate',
|
|
239
|
+
orderingProvider: 'health:orderingProvider',
|
|
240
|
+
performingLab: 'health:performingLab',
|
|
241
|
+
// ── Immunization predicates (health: vocabulary) ──
|
|
242
|
+
vaccineName: 'health:vaccineName',
|
|
243
|
+
administrationDate: 'health:administrationDate',
|
|
244
|
+
vaccineCode: 'health:vaccineCode',
|
|
245
|
+
manufacturer: 'health:manufacturer',
|
|
246
|
+
lotNumber: 'health:lotNumber',
|
|
247
|
+
doseQuantity: 'health:doseQuantity',
|
|
248
|
+
site: 'health:site',
|
|
249
|
+
administeringProvider: 'health:administeringProvider',
|
|
250
|
+
administeringLocation: 'health:administeringLocation',
|
|
251
|
+
// ── Vital sign predicates (clinical: vocabulary) ──
|
|
252
|
+
vitalType: 'clinical:vitalType',
|
|
253
|
+
vitalTypeName: 'clinical:vitalTypeName',
|
|
254
|
+
value: 'clinical:value',
|
|
255
|
+
unit: 'clinical:unit',
|
|
256
|
+
effectiveDate: 'clinical:effectiveDate',
|
|
257
|
+
loincCode: 'clinical:loincCode',
|
|
258
|
+
referenceRangeLow: 'clinical:referenceRangeLow',
|
|
259
|
+
referenceRangeHigh: 'clinical:referenceRangeHigh',
|
|
260
|
+
// ── Clinical enrichment predicates ──
|
|
261
|
+
provenanceClass: 'clinical:provenanceClass',
|
|
262
|
+
sourceFhirResourceType: 'clinical:sourceFhirResourceType',
|
|
263
|
+
clinicalIntent: 'clinical:clinicalIntent',
|
|
264
|
+
indication: 'clinical:indication',
|
|
265
|
+
courseOfTherapyType: 'clinical:courseOfTherapyType',
|
|
266
|
+
asNeeded: 'clinical:asNeeded',
|
|
267
|
+
medicationForm: 'clinical:medicationForm',
|
|
268
|
+
activeIngredient: 'clinical:activeIngredient',
|
|
269
|
+
ingredientStrength: 'clinical:ingredientStrength',
|
|
270
|
+
refillsAllowed: 'clinical:refillsAllowed',
|
|
271
|
+
supplyDurationDays: 'clinical:supplyDurationDays',
|
|
272
|
+
prescriptionCategory: 'clinical:prescriptionCategory',
|
|
273
|
+
drugCode: 'clinical:drugCode',
|
|
274
|
+
drugCodes: 'clinical:drugCode',
|
|
275
|
+
// ── Coverage predicates (clinical: and coverage: vocabularies) ──
|
|
276
|
+
providerName: 'clinical:providerName',
|
|
277
|
+
memberId: 'clinical:memberId',
|
|
278
|
+
groupNumber: 'clinical:groupNumber',
|
|
279
|
+
planName: 'clinical:planName',
|
|
280
|
+
planType: 'clinical:planType',
|
|
281
|
+
coverageType: 'clinical:coverageType',
|
|
282
|
+
relationship: 'clinical:relationship',
|
|
283
|
+
effectivePeriodStart: 'clinical:effectivePeriodStart',
|
|
284
|
+
effectivePeriodEnd: 'clinical:effectivePeriodEnd',
|
|
285
|
+
payorName: 'clinical:payorName',
|
|
286
|
+
subscriberId: 'clinical:subscriberId',
|
|
287
|
+
subscriberRelationship: 'coverage:subscriberRelationship',
|
|
288
|
+
subscriberName: 'coverage:subscriberName',
|
|
289
|
+
effectiveStart: 'coverage:effectiveStart',
|
|
290
|
+
effectiveEnd: 'coverage:effectiveEnd',
|
|
291
|
+
rxBin: 'coverage:rxBin',
|
|
292
|
+
rxPcn: 'coverage:rxPcn',
|
|
293
|
+
rxGroup: 'coverage:rxGroup',
|
|
294
|
+
// ── Patient profile predicates (cascade: and foaf: vocabularies) ──
|
|
295
|
+
dateOfBirth: 'cascade:dateOfBirth',
|
|
296
|
+
biologicalSex: 'cascade:biologicalSex',
|
|
297
|
+
computedAge: 'cascade:computedAge',
|
|
298
|
+
ageGroup: 'cascade:ageGroup',
|
|
299
|
+
genderIdentity: 'cascade:genderIdentity',
|
|
300
|
+
profileId: 'cascade:profileId',
|
|
301
|
+
name: 'foaf:name',
|
|
302
|
+
givenName: 'foaf:givenName',
|
|
303
|
+
familyName: 'foaf:familyName',
|
|
304
|
+
bloodType: 'health:bloodType',
|
|
305
|
+
// ── Procedure predicates ──
|
|
306
|
+
procedureName: 'health:procedureName',
|
|
307
|
+
performer: 'health:performer',
|
|
308
|
+
location: 'health:location',
|
|
309
|
+
// ── Family history predicates ──
|
|
310
|
+
// Note: `relationship` is shared with Coverage predicates above (clinical:relationship)
|
|
311
|
+
onsetAge: 'health:onsetAge',
|
|
312
|
+
// ── Shared predicates ──
|
|
313
|
+
notes: 'health:notes',
|
|
314
|
+
sourceRecordId: 'health:sourceRecordId',
|
|
315
|
+
// ── Activity snapshot predicates ──
|
|
316
|
+
date: 'health:date',
|
|
317
|
+
steps: 'health:steps',
|
|
318
|
+
distance: 'health:distance',
|
|
319
|
+
activeMinutes: 'health:activeMinutes',
|
|
320
|
+
calories: 'health:calories',
|
|
321
|
+
// ── Sleep snapshot predicates ──
|
|
322
|
+
totalSleepMinutes: 'health:totalSleepMinutes',
|
|
323
|
+
deepSleepMinutes: 'health:deepSleepMinutes',
|
|
324
|
+
remSleepMinutes: 'health:remSleepMinutes',
|
|
325
|
+
lightSleepMinutes: 'health:lightSleepMinutes',
|
|
326
|
+
awakenings: 'health:awakenings',
|
|
327
|
+
// ── Core predicates (cascade: vocabulary) ──
|
|
328
|
+
dataProvenance: 'cascade:dataProvenance',
|
|
329
|
+
schemaVersion: 'cascade:schemaVersion',
|
|
330
|
+
};
|
|
331
|
+
// ─── Reverse Predicate Mapping ──────────────────────────────────────────────
|
|
332
|
+
/**
|
|
333
|
+
* Build a reverse mapping from full predicate URI to JSON property name.
|
|
334
|
+
*
|
|
335
|
+
* Expands each PROPERTY_PREDICATES shorthand (e.g. 'health:medicationName')
|
|
336
|
+
* to a full URI and maps it back to the JSON key.
|
|
337
|
+
*
|
|
338
|
+
* @param additionalMappings - Optional extra full-URI-to-JSON-key entries
|
|
339
|
+
* (e.g. type-specific overrides for VitalSign clinical predicates).
|
|
340
|
+
*/
|
|
341
|
+
export function buildReversePredicateMap(additionalMappings) {
|
|
342
|
+
const reverseMap = new Map();
|
|
343
|
+
for (const [jsonKey, predShorthand] of Object.entries(PROPERTY_PREDICATES)) {
|
|
344
|
+
const colonIdx = predShorthand.indexOf(':');
|
|
345
|
+
if (colonIdx >= 0) {
|
|
346
|
+
const nsPrefix = predShorthand.slice(0, colonIdx);
|
|
347
|
+
const localName = predShorthand.slice(colonIdx + 1);
|
|
348
|
+
const nsUri = NAMESPACES[nsPrefix];
|
|
349
|
+
if (nsUri) {
|
|
350
|
+
reverseMap.set(`${nsUri}${localName}`, jsonKey);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
if (additionalMappings) {
|
|
355
|
+
for (const [fullUri, jsonKey] of Object.entries(additionalMappings)) {
|
|
356
|
+
reverseMap.set(fullUri, jsonKey);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
return reverseMap;
|
|
360
|
+
}
|
|
361
|
+
//# sourceMappingURL=namespaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespaces.js","sourceRoot":"","sources":["../../src/vocabularies/namespaces.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@the-cascade-protocol/sdk",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Cascade Protocol SDK - TypeScript library for structured health data",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"test": "vitest run",
|
|
17
|
+
"test:watch": "vitest",
|
|
18
|
+
"prepublishOnly": "npm run build"
|
|
19
|
+
},
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=18.0.0"
|
|
22
|
+
},
|
|
23
|
+
"license": "Apache-2.0",
|
|
24
|
+
"repository": {
|
|
25
|
+
"type": "git",
|
|
26
|
+
"url": "https://github.com/the-cascade-protocol/sdk-typescript.git"
|
|
27
|
+
},
|
|
28
|
+
"homepage": "https://cascadeprotocol.org",
|
|
29
|
+
"bugs": {
|
|
30
|
+
"url": "https://github.com/the-cascade-protocol/sdk-typescript/issues"
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"dist",
|
|
34
|
+
"README.md",
|
|
35
|
+
"LICENSE"
|
|
36
|
+
],
|
|
37
|
+
"keywords": [
|
|
38
|
+
"cascade-protocol",
|
|
39
|
+
"health-data",
|
|
40
|
+
"rdf",
|
|
41
|
+
"turtle",
|
|
42
|
+
"fhir"
|
|
43
|
+
],
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"typescript": "^5.4.0",
|
|
46
|
+
"vitest": "^1.3.0"
|
|
47
|
+
}
|
|
48
|
+
}
|