n8n-nodes-openmrs 1.2.0 → 1.3.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/README.md +83 -358
- package/dist/credentials/OpenMrsApi.credentials.d.ts +4 -0
- package/dist/credentials/OpenMrsApi.credentials.js +1 -0
- package/dist/credentials/OpenMrsApi.credentials.js.map +1 -1
- package/dist/nodes/OpenMrs/OpenMrs.node.d.ts +1 -0
- package/dist/nodes/OpenMrs/OpenMrs.node.js +158 -149
- package/dist/nodes/OpenMrs/OpenMrs.node.js.map +1 -1
- package/package.json +14 -16
package/README.md
CHANGED
|
@@ -1,415 +1,139 @@
|
|
|
1
1
|
# n8n-nodes-openmrs
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/n8n-nodes-openmrs)
|
|
4
4
|
[](https://www.npmjs.com/package/n8n-nodes-openmrs)
|
|
5
|
-
[](
|
|
5
|
+
[](LICENSE)
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## What's New in v1.2.0
|
|
12
|
-
|
|
13
|
-
**Smart Patient Search** - No more memorizing UUIDs!
|
|
14
|
-
- Search by OpenMRS ID: `131280865`
|
|
15
|
-
- Search by Name: `Patricia Lewis` (partial matching)
|
|
16
|
-
- Search by Phone: `+254712345678`
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## Features
|
|
21
|
-
|
|
22
|
-
### Intelligent Patient Lookup
|
|
23
|
-
|
|
24
|
-
Real-world clinics don't use UUIDs. Search patients the way healthcare workers actually do:
|
|
25
|
-
|
|
26
|
-
- **By Identifier** - OpenMRS ID, National ID, Facility Number
|
|
27
|
-
- **By Name** - First name, last name, or partial matches
|
|
28
|
-
- **By Phone** - Mobile number in any format
|
|
29
|
-
- **By UUID** - For system integrations
|
|
30
|
-
|
|
31
|
-
### Complete FHIR R4 Coverage
|
|
32
|
-
|
|
33
|
-
Access all essential clinical resources:
|
|
34
|
-
|
|
35
|
-
| Resource | What You Get | Common Use Cases |
|
|
36
|
-
|----------|-------------|------------------|
|
|
37
|
-
| **Patient** | Demographics, identifiers, contacts | Registration, identity verification |
|
|
38
|
-
| **Encounter** | Visits, admissions, consultations | Attendance tracking, visit history |
|
|
39
|
-
| **Observation** | Labs, vitals, diagnostic results | Trend analysis, clinical alerts |
|
|
40
|
-
| **Diagnostic Report** | Imaging, pathology reports | Disease progression tracking |
|
|
41
|
-
| **Condition** | Diagnoses, active problems | Differential diagnosis, comorbidities |
|
|
42
|
-
| **Medication Statement** | Current & past medications | Treatment history, drug interactions |
|
|
43
|
-
|
|
44
|
-
### Developer-Friendly
|
|
45
|
-
|
|
46
|
-
- **Simple Auth** - HTTP Basic Authentication
|
|
47
|
-
- **Pagination** - Handle large datasets efficiently
|
|
48
|
-
- **Error Handling** - Clear error messages and continue-on-fail support
|
|
49
|
-
- **Custom API Calls** - Direct access to any OpenMRS FHIR endpoint
|
|
50
|
-
|
|
51
|
-
### Built for Global Health
|
|
52
|
-
|
|
53
|
-
- Optimized for low-bandwidth environments
|
|
54
|
-
- Works with OpenMRS 2.x and 3.x
|
|
55
|
-
- Compatible with DHIS2 workflows
|
|
56
|
-
- Supports both cloud and on-premise deployments
|
|
7
|
+
n8n community node for [OpenMRS](https://openmrs.org) FHIR R4 API. Register patients, create encounters, search clinical records, and build interoperability.
|
|
8
|
+
[n8n](https://n8n.io/) is a fair-code licensed workflow automation platform.
|
|
57
9
|
|
|
58
10
|
---
|
|
59
11
|
|
|
60
12
|
## Installation
|
|
61
13
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
1. Open n8n
|
|
65
|
-
2. Go to **Settings** → **Community Nodes**
|
|
66
|
-
3. Click **Install a community node**
|
|
67
|
-
4. Enter: `n8n-nodes-openmrs`
|
|
68
|
-
5. Click **Install**
|
|
69
|
-
|
|
70
|
-
### Via npm
|
|
71
|
-
```bash
|
|
72
|
-
npm install n8n-nodes-openmrs
|
|
73
|
-
```
|
|
14
|
+
**Via n8n UI:** Search DHIS2 as verified node or simply go to Settings → Community Nodes → `n8n-nodes-dhis2`
|
|
74
15
|
|
|
75
|
-
|
|
16
|
+
**Via npm:**
|
|
76
17
|
```bash
|
|
77
|
-
|
|
78
|
-
cd n8n-nodes-openmrs
|
|
79
|
-
npm install
|
|
80
|
-
npm run build
|
|
81
|
-
npm link
|
|
18
|
+
npm install n8n-nodes-dhis2
|
|
82
19
|
```
|
|
83
20
|
|
|
84
21
|
---
|
|
85
22
|
|
|
86
|
-
##
|
|
23
|
+
## Credentials
|
|
87
24
|
|
|
88
|
-
|
|
25
|
+
| Field | Description |
|
|
26
|
+
|----------|-------------|
|
|
27
|
+
| Base URL | Your OpenMRS instance including `/openmrs` (e.g. `https://demo.openmrs.org/openmrs`) |
|
|
28
|
+
| Username | OpenMRS username |
|
|
29
|
+
| Password | OpenMRS password |
|
|
89
30
|
|
|
90
|
-
|
|
91
|
-
2. Search for **OpenMRS API**
|
|
92
|
-
3. Configure:
|
|
93
|
-
- **Base URL**: `https://demo.openmrs.org/openmrs` (include `/openmrs`)
|
|
94
|
-
- **Username**: `admin`
|
|
95
|
-
- **Password**: `Admin123`
|
|
96
|
-
4. Test & Save
|
|
97
|
-
|
|
98
|
-
### 2. Search Patient by OpenMRS ID
|
|
99
|
-
```
|
|
100
|
-
Add Node → OpenMRS
|
|
101
|
-
├─ Resource: Patient
|
|
102
|
-
├─ Operation: Search by Identifier
|
|
103
|
-
└─ Identifier: 131280865
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
**Result:** Complete patient record instantly
|
|
107
|
-
|
|
108
|
-
### 3. Find Patient by Name
|
|
109
|
-
```
|
|
110
|
-
Add Node → OpenMRS
|
|
111
|
-
├─ Resource: Patient
|
|
112
|
-
├─ Operation: Search by Name
|
|
113
|
-
└─ Name: Patricia
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
**Result:** All patients with "Patricia" in their name
|
|
31
|
+
Demo: `https://demo.openmrs.org/openmrs` — username `admin`, password `Admin123`
|
|
117
32
|
|
|
118
33
|
---
|
|
119
34
|
|
|
120
|
-
##
|
|
121
|
-
|
|
122
|
-
### Example 1: Patient Search by ID (Real-World)
|
|
123
|
-
|
|
124
|
-
**Instead of this (nobody remembers):**
|
|
125
|
-
```
|
|
126
|
-
UUID: 7826f08a-0258-4fb1-ba69-2af192f392db
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
**Do this:**
|
|
130
|
-
```
|
|
131
|
-
OpenMRS ID: 131280865
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
**n8n Workflow:**
|
|
135
|
-
1. Add OpenMRS node
|
|
136
|
-
2. Resource: **Patient**
|
|
137
|
-
3. Operation: **Search by Identifier**
|
|
138
|
-
4. Identifier: `131280865`
|
|
139
|
-
5. Execute
|
|
35
|
+
## Resources & Operations
|
|
140
36
|
|
|
141
|
-
|
|
37
|
+
| Resource | Operations |
|
|
38
|
+
|----------------------|------------|
|
|
39
|
+
| Patient | Create, Get, Get Many, Search by Identifier, Search by Name, Search by Phone |
|
|
40
|
+
| Encounter | Create, Get, Get Many |
|
|
41
|
+
| Observation | Get, Get Many |
|
|
42
|
+
| Diagnostic Report | Get, Get Many |
|
|
43
|
+
| Condition | Get, Get Many |
|
|
44
|
+
| Medication Statement | Get, Get Many |
|
|
45
|
+
| Custom API Call | Any method, any FHIR endpoint |
|
|
142
46
|
|
|
143
47
|
---
|
|
144
48
|
|
|
145
|
-
|
|
146
|
-
```
|
|
147
|
-
1. Add OpenMRS node
|
|
148
|
-
2. Resource: Observation
|
|
149
|
-
3. Operation: Get Many
|
|
150
|
-
4. Patient UUID: 7826f08a-0258-4fb1-ba69-2af192f392db
|
|
151
|
-
5. Limit: 50
|
|
152
|
-
6. Execute
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
**Output:** Up to 50 most recent lab results with values, units, reference ranges
|
|
156
|
-
|
|
157
|
-
---
|
|
49
|
+
## Example: Register a Patient
|
|
158
50
|
|
|
159
|
-
### Example 3: Track Patient Visit History
|
|
160
51
|
```
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
52
|
+
Resource: Patient
|
|
53
|
+
Operation: Create
|
|
54
|
+
Payload:
|
|
55
|
+
{
|
|
56
|
+
"resourceType": "Patient",
|
|
57
|
+
"identifier": [{ "system": "http://openmrs.org/identifier", "value": "CASE-001" }],
|
|
58
|
+
"name": [{ "family": "Nkurunziza", "given": ["Brian"] }],
|
|
59
|
+
"gender": "male",
|
|
60
|
+
"birthDate": "1995-03-15",
|
|
61
|
+
"telecom": [{ "system": "phone", "value": "+250788123456" }]
|
|
62
|
+
}
|
|
167
63
|
```
|
|
168
64
|
|
|
169
|
-
|
|
65
|
+
Returns the created FHIR Patient resource including the assigned OpenMRS UUID.
|
|
170
66
|
|
|
171
67
|
---
|
|
172
68
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
Use the **Custom API Call** resource for advanced queries:
|
|
176
|
-
```
|
|
177
|
-
1. Add OpenMRS node
|
|
178
|
-
2. Resource: Custom API Call
|
|
179
|
-
3. HTTP Method: GET
|
|
180
|
-
4. Endpoint: /ws/fhir2/R4/Patient
|
|
181
|
-
5. Query Parameters:
|
|
182
|
-
- name: birthdate
|
|
183
|
-
- value: gt1990-01-01
|
|
184
|
-
6. Execute
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
**Output:** All patients born after January 1, 1990
|
|
188
|
-
|
|
189
|
-
---
|
|
190
|
-
|
|
191
|
-
## Real-World Use Cases
|
|
192
|
-
|
|
193
|
-
### Clinical Workflows
|
|
194
|
-
|
|
195
|
-
**Patient Admission Dashboard**
|
|
196
|
-
```
|
|
197
|
-
Webhook Trigger
|
|
198
|
-
→ OpenMRS: Search by OpenMRS ID
|
|
199
|
-
→ OpenMRS: Get Encounters (last 6 months)
|
|
200
|
-
→ OpenMRS: Get Observations (recent labs)
|
|
201
|
-
→ Code: Calculate risk scores
|
|
202
|
-
→ Display: Admission summary
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
**Lost-to-Follow-Up Recovery**
|
|
206
|
-
```
|
|
207
|
-
Schedule (weekly)
|
|
208
|
-
→ OpenMRS: Get All Patients on ART
|
|
209
|
-
→ Code: Filter last visit > 28 days
|
|
210
|
-
→ OpenMRS: Search by Phone
|
|
211
|
-
→ SMS: "Medication ready for pickup"
|
|
212
|
-
→ DHIS2: Update tracker
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
### Data Analytics
|
|
69
|
+
## Example: Create an Encounter
|
|
216
70
|
|
|
217
|
-
**Disease Surveillance**
|
|
218
71
|
```
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
72
|
+
Resource: Encounter
|
|
73
|
+
Operation: Create
|
|
74
|
+
Payload:
|
|
75
|
+
{
|
|
76
|
+
"resourceType": "Encounter",
|
|
77
|
+
"status": "finished",
|
|
78
|
+
"class": { "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", "code": "AMB" },
|
|
79
|
+
"subject": { "reference": "Patient/PATIENT_UUID" },
|
|
80
|
+
"period": { "start": "2026-06-02T08:00:00+00:00", "end": "2026-06-02T09:00:00+00:00" }
|
|
81
|
+
}
|
|
228
82
|
```
|
|
229
|
-
OpenMRS: Observation created
|
|
230
|
-
→ Calculate: Order time - Result time
|
|
231
|
-
→ IF > 48 hours
|
|
232
|
-
→ Alert lab manager
|
|
233
|
-
→ DHIS2: Post performance indicator
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
### Global Health
|
|
237
|
-
|
|
238
|
-
- HIV/TB treatment adherence tracking
|
|
239
|
-
- Maternal health visit reminders
|
|
240
|
-
- Vaccine defaulter identification
|
|
241
|
-
- Stockout prevention for ARVs
|
|
242
|
-
|
|
243
|
-
---
|
|
244
|
-
|
|
245
|
-
## API Reference
|
|
246
|
-
|
|
247
|
-
### Supported Resources
|
|
248
|
-
|
|
249
|
-
- `Patient` - Demographics, identifiers
|
|
250
|
-
- `Encounter` - Visits, admissions
|
|
251
|
-
- `Observation` - Labs, vitals, diagnostics
|
|
252
|
-
- `Diagnostic Report` - Imaging, pathology
|
|
253
|
-
- `Condition` - Diagnoses, problems
|
|
254
|
-
- `Medication Statement` - Prescriptions, dispensing
|
|
255
|
-
- `Custom API Call` - Any FHIR endpoint
|
|
256
|
-
|
|
257
|
-
### Patient Operations
|
|
258
83
|
|
|
259
|
-
|
|
260
|
-
- **Search by Name** - Partial name matching
|
|
261
|
-
- **Search by Phone** - Phone number search
|
|
262
|
-
- **Get** - Retrieve by UUID
|
|
263
|
-
- **Get Many** - Retrieve all (paginated)
|
|
264
|
-
|
|
265
|
-
### Other Resource Operations
|
|
266
|
-
|
|
267
|
-
- **Get** - Retrieve single resource by UUID
|
|
268
|
-
- **Get Many** - Retrieve all for patient (paginated)
|
|
269
|
-
|
|
270
|
-
### Pagination
|
|
271
|
-
|
|
272
|
-
All `Get Many` and search operations support:
|
|
273
|
-
- **Return All**: `true/false`
|
|
274
|
-
- **Limit**: `1-100` (default: 50)
|
|
275
|
-
|
|
276
|
-
---
|
|
277
|
-
|
|
278
|
-
## FHIR Endpoints Used
|
|
279
|
-
```
|
|
280
|
-
GET /ws/fhir2/R4/Patient?identifier={id}
|
|
281
|
-
GET /ws/fhir2/R4/Patient?name={name}
|
|
282
|
-
GET /ws/fhir2/R4/Patient?telecom={phone}
|
|
283
|
-
GET /ws/fhir2/R4/Patient/{uuid}
|
|
284
|
-
GET /ws/fhir2/R4/Encounter?patient={uuid}&_count=50
|
|
285
|
-
GET /ws/fhir2/R4/Observation?patient={uuid}&_count=50
|
|
286
|
-
GET /ws/fhir2/R4/DiagnosticReport?patient={uuid}&_count=50
|
|
287
|
-
GET /ws/fhir2/R4/Condition?patient={uuid}&_count=50
|
|
288
|
-
GET /ws/fhir2/R4/MedicationStatement?patient={uuid}&_count=50
|
|
289
|
-
```
|
|
84
|
+
Replace `PATIENT_UUID` with the UUID returned from Patient Create.
|
|
290
85
|
|
|
291
86
|
---
|
|
292
87
|
|
|
293
88
|
## Compatibility
|
|
294
89
|
|
|
295
|
-
- **
|
|
296
|
-
- **
|
|
297
|
-
- **Node.js
|
|
90
|
+
- **OpenMRS:** 2.3+ with FHIR2 module enabled
|
|
91
|
+
- **n8n:** 1.0+
|
|
92
|
+
- **Node.js:** 22+
|
|
298
93
|
|
|
299
94
|
---
|
|
300
95
|
|
|
301
|
-
##
|
|
302
|
-
|
|
303
|
-
### Node doesn't appear
|
|
304
|
-
```bash
|
|
305
|
-
# Check installation
|
|
306
|
-
npm list -g n8n-nodes-openmrs
|
|
307
|
-
|
|
308
|
-
# Clear cache
|
|
309
|
-
rm -rf ~/.n8n/cache
|
|
96
|
+
## API Reference
|
|
310
97
|
|
|
311
|
-
# Restart n8n
|
|
312
|
-
n8n start
|
|
313
98
|
```
|
|
99
|
+
POST /ws/fhir2/R4/Patient
|
|
100
|
+
GET /ws/fhir2/R4/Patient/{uuid}
|
|
101
|
+
GET /ws/fhir2/R4/Patient?identifier={id}
|
|
102
|
+
GET /ws/fhir2/R4/Patient?name={name}
|
|
103
|
+
GET /ws/fhir2/R4/Patient?telecom={phone}
|
|
314
104
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
- Verify credentials in OpenMRS
|
|
319
|
-
- Check FHIR2 module is enabled
|
|
105
|
+
POST /ws/fhir2/R4/Encounter
|
|
106
|
+
GET /ws/fhir2/R4/Encounter/{uuid}
|
|
107
|
+
GET /ws/fhir2/R4/Encounter?patient={uuid}&_count=50
|
|
320
108
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
- Verify FHIR2 module configuration
|
|
326
|
-
|
|
327
|
-
### Build errors (for developers)
|
|
328
|
-
```bash
|
|
329
|
-
# Clean rebuild
|
|
330
|
-
rm -rf node_modules dist
|
|
331
|
-
npm install
|
|
332
|
-
npm run build
|
|
109
|
+
GET /ws/fhir2/R4/Observation?patient={uuid}&_count=50
|
|
110
|
+
GET /ws/fhir2/R4/DiagnosticReport?patient={uuid}&_count=50
|
|
111
|
+
GET /ws/fhir2/R4/Condition?patient={uuid}&_count=50
|
|
112
|
+
GET /ws/fhir2/R4/MedicationStatement?patient={uuid}&_count=50
|
|
333
113
|
```
|
|
334
114
|
|
|
335
115
|
---
|
|
336
116
|
|
|
337
|
-
##
|
|
338
|
-
|
|
339
|
-
### Building
|
|
340
|
-
```bash
|
|
341
|
-
npm run build # Compile TypeScript
|
|
342
|
-
npm run dev # Watch mode
|
|
343
|
-
npm run lint # Check code quality
|
|
344
|
-
npm run lintfix # Auto-fix issues
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
### Testing Locally
|
|
348
|
-
```bash
|
|
349
|
-
# Build and link
|
|
350
|
-
npm run build
|
|
351
|
-
npm link
|
|
352
|
-
|
|
353
|
-
# Start n8n
|
|
354
|
-
n8n start
|
|
117
|
+
## Resources
|
|
355
118
|
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
# Bump version
|
|
363
|
-
npm version minor # 1.1.0 → 1.2.0
|
|
364
|
-
|
|
365
|
-
# Publish
|
|
366
|
-
npm publish
|
|
367
|
-
|
|
368
|
-
# Push to GitHub
|
|
369
|
-
git push origin main --tags
|
|
370
|
-
```
|
|
119
|
+
- [DHIS2 Documentation](https://docs.dhis2.org/)
|
|
120
|
+
- [DHIS2 Web API Guide](https://docs.dhis2.org/en/develop/using-the-api/dhis-core-version-master/introduction.html)
|
|
121
|
+
- [DHIS2 Demo Server](https://play.dhis2.org)
|
|
122
|
+
- [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)
|
|
123
|
+
- [OpenMRS n8n Node](https://www.npmjs.com/package/n8n-nodes-openmrs) clinical data from OpenMRS
|
|
124
|
+
- [RapidPro n8n Node](https://www.npmjs.com/package/n8n-nodes-rapidpro) messaging workflows via RapidPro
|
|
371
125
|
|
|
372
126
|
---
|
|
373
127
|
|
|
374
128
|
## Contributing
|
|
375
129
|
|
|
376
|
-
Contributions welcome! Please:
|
|
130
|
+
Contributions are welcome! Please:
|
|
377
131
|
|
|
378
132
|
1. Fork the repository
|
|
379
|
-
2. Create feature branch
|
|
380
|
-
3. Commit changes
|
|
381
|
-
4. Push
|
|
382
|
-
5. Open Pull Request
|
|
383
|
-
|
|
384
|
-
---
|
|
385
|
-
|
|
386
|
-
## Changelog
|
|
387
|
-
|
|
388
|
-
### [1.2.0] - 2026-03-05
|
|
389
|
-
|
|
390
|
-
**Added**
|
|
391
|
-
- Patient search by OpenMRS ID/identifier
|
|
392
|
-
- Patient search by name (partial matching)
|
|
393
|
-
- Patient search by phone number
|
|
394
|
-
- Custom API Call resource for advanced queries
|
|
395
|
-
|
|
396
|
-
**Changed**
|
|
397
|
-
- Improved error messages
|
|
398
|
-
- Better TypeScript types
|
|
399
|
-
- Updated documentation
|
|
400
|
-
|
|
401
|
-
### [1.1.0] - 2026-03-03
|
|
402
|
-
|
|
403
|
-
**Added**
|
|
404
|
-
- 6 FHIR resources (Patient, Encounter, Observation, etc.)
|
|
405
|
-
- Get and Get Many operations
|
|
406
|
-
- Pagination support
|
|
407
|
-
|
|
408
|
-
### [1.0.0] - 2026-03-01
|
|
409
|
-
|
|
410
|
-
**Added**
|
|
411
|
-
- Initial release
|
|
412
|
-
- Basic FHIR R4 support
|
|
133
|
+
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
|
134
|
+
3. Commit your changes (`git commit -m 'Add amazing feature'`)
|
|
135
|
+
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
136
|
+
5. Open a Pull Request
|
|
413
137
|
|
|
414
138
|
---
|
|
415
139
|
|
|
@@ -417,15 +141,14 @@ Contributions welcome! Please:
|
|
|
417
141
|
|
|
418
142
|
[MIT License](LICENSE)
|
|
419
143
|
|
|
420
|
-
Copyright
|
|
144
|
+
Copyright (c) 2026 [Monfort Brian N.](https://github.com/monfortbrian)
|
|
421
145
|
|
|
422
146
|
---
|
|
423
147
|
|
|
424
148
|
## Support
|
|
425
149
|
|
|
426
|
-
- **Issues
|
|
427
|
-
- **
|
|
428
|
-
- **n8n Community**: [n8n Forum](https://community.n8n.io/)
|
|
150
|
+
- **Issues:** [GitHub Issues](https://github.com/monfortbrian/n8n-nodes-dhis2/issues)
|
|
151
|
+
- **n8n Community:** [n8n Community Forum](https://community.n8n.io/)
|
|
429
152
|
|
|
430
153
|
---
|
|
431
154
|
|
|
@@ -433,4 +156,6 @@ Copyright © 2026 Monfort Brian N.
|
|
|
433
156
|
|
|
434
157
|
Built for healthcare workers in low-resource settings. Enabling better patient outcomes through data interoperability and workflow automation.
|
|
435
158
|
|
|
436
|
-
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
**Made with ❤️ for the global health community**
|
|
@@ -2,6 +2,10 @@ import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INo
|
|
|
2
2
|
export declare class OpenMrsApi implements ICredentialType {
|
|
3
3
|
name: string;
|
|
4
4
|
displayName: string;
|
|
5
|
+
icon: {
|
|
6
|
+
readonly light: "file:openMrs.svg";
|
|
7
|
+
readonly dark: "file:openMrs.svg";
|
|
8
|
+
};
|
|
5
9
|
documentationUrl: string;
|
|
6
10
|
properties: INodeProperties[];
|
|
7
11
|
authenticate: IAuthenticateGeneric;
|
|
@@ -5,6 +5,7 @@ class OpenMrsApi {
|
|
|
5
5
|
constructor() {
|
|
6
6
|
this.name = 'openMrsApi';
|
|
7
7
|
this.displayName = 'OpenMRS API';
|
|
8
|
+
this.icon = { light: 'file:openMrs.svg', dark: 'file:openMrs.svg' };
|
|
8
9
|
this.documentationUrl = 'https://wiki.openmrs.org/display/projects/FHIR+Module';
|
|
9
10
|
this.properties = [
|
|
10
11
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenMrsApi.credentials.js","sourceRoot":"","sources":["../../credentials/OpenMrsApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,UAAU;IAAvB;QACC,SAAI,GAAG,YAAY,CAAC;QACpB,gBAAW,GAAG,aAAa,CAAC;QAC5B,qBAAgB,GAAG,uDAAuD,CAAC;QAE3E,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,kCAAkC;gBAC3C,WAAW,EAAE,kCAAkC;gBAC/C,WAAW,EAAE,+DAA+D;gBAC5E,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,OAAO;gBACpB,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,IAAI,EAAE;oBACL,QAAQ,EAAE,4BAA4B;oBACtC,QAAQ,EAAE,4BAA4B;iBACtC;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,2BAA2B;gBACpC,GAAG,EAAE,qBAAqB;aAC1B;SACD,CAAC;IACH,CAAC;CAAA;
|
|
1
|
+
{"version":3,"file":"OpenMrsApi.credentials.js","sourceRoot":"","sources":["../../credentials/OpenMrsApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,UAAU;IAAvB;QACC,SAAI,GAAG,YAAY,CAAC;QACpB,gBAAW,GAAG,aAAa,CAAC;QAC5B,SAAI,GAAG,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,EAAW,CAAC;QACxE,qBAAgB,GAAG,uDAAuD,CAAC;QAE3E,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,kCAAkC;gBAC3C,WAAW,EAAE,kCAAkC;gBAC/C,WAAW,EAAE,+DAA+D;gBAC5E,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,OAAO;gBACpB,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,IAAI,EAAE;oBACL,QAAQ,EAAE,4BAA4B;oBACtC,QAAQ,EAAE,4BAA4B;iBACtC;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,2BAA2B;gBACpC,GAAG,EAAE,qBAAqB;aAC1B;SACD,CAAC;IACH,CAAC;CAAA;AApDD,gCAoDC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
2
|
export declare class OpenMrs implements INodeType {
|
|
3
|
+
usableAsTool: boolean;
|
|
3
4
|
description: INodeTypeDescription;
|
|
4
5
|
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
6
|
}
|
|
@@ -4,6 +4,7 @@ exports.OpenMrs = void 0;
|
|
|
4
4
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
5
|
class OpenMrs {
|
|
6
6
|
constructor() {
|
|
7
|
+
this.usableAsTool = true;
|
|
7
8
|
this.description = {
|
|
8
9
|
displayName: 'OpenMRS',
|
|
9
10
|
name: 'openMrs',
|
|
@@ -24,7 +25,7 @@ class OpenMrs {
|
|
|
24
25
|
},
|
|
25
26
|
],
|
|
26
27
|
properties: [
|
|
27
|
-
//
|
|
28
|
+
// ===== RESOURCE =====
|
|
28
29
|
{
|
|
29
30
|
displayName: 'Resource',
|
|
30
31
|
name: 'resource',
|
|
@@ -32,27 +33,41 @@ class OpenMrs {
|
|
|
32
33
|
noDataExpression: true,
|
|
33
34
|
options: [
|
|
34
35
|
{ name: 'Condition', value: 'condition' },
|
|
36
|
+
{ name: 'Custom API Call', value: 'customApiCall' },
|
|
35
37
|
{ name: 'Diagnostic Report', value: 'diagnosticReport' },
|
|
36
38
|
{ name: 'Encounter', value: 'encounter' },
|
|
37
39
|
{ name: 'Medication Statement', value: 'medicationStatement' },
|
|
38
40
|
{ name: 'Observation', value: 'observation' },
|
|
39
41
|
{ name: 'Patient', value: 'patient' },
|
|
40
|
-
{ name: 'Custom API Call', value: 'customApiCall' },
|
|
41
42
|
],
|
|
42
43
|
default: 'patient',
|
|
43
44
|
},
|
|
44
|
-
//
|
|
45
|
+
// ===== PATIENT OPERATIONS =====
|
|
45
46
|
{
|
|
46
47
|
displayName: 'Operation',
|
|
47
48
|
name: 'operation',
|
|
48
49
|
type: 'options',
|
|
49
50
|
noDataExpression: true,
|
|
50
|
-
displayOptions: {
|
|
51
|
-
show: {
|
|
52
|
-
resource: ['patient'],
|
|
53
|
-
},
|
|
54
|
-
},
|
|
51
|
+
displayOptions: { show: { resource: ['patient'] } },
|
|
55
52
|
options: [
|
|
53
|
+
{
|
|
54
|
+
name: 'Create',
|
|
55
|
+
value: 'create',
|
|
56
|
+
description: 'Register a new patient',
|
|
57
|
+
action: 'Create a patient',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'Get',
|
|
61
|
+
value: 'get',
|
|
62
|
+
description: 'Get a patient by UUID',
|
|
63
|
+
action: 'Get a patient',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'Get Many',
|
|
67
|
+
value: 'getAll',
|
|
68
|
+
description: 'Get many patients',
|
|
69
|
+
action: 'Get many patients',
|
|
70
|
+
},
|
|
56
71
|
{
|
|
57
72
|
name: 'Search by Identifier',
|
|
58
73
|
value: 'searchByIdentifier',
|
|
@@ -71,22 +86,39 @@ class OpenMrs {
|
|
|
71
86
|
description: 'Search patient by phone number',
|
|
72
87
|
action: 'Search patient by phone',
|
|
73
88
|
},
|
|
89
|
+
],
|
|
90
|
+
default: 'searchByIdentifier',
|
|
91
|
+
},
|
|
92
|
+
// ===== ENCOUNTER OPERATIONS =====
|
|
93
|
+
{
|
|
94
|
+
displayName: 'Operation',
|
|
95
|
+
name: 'operation',
|
|
96
|
+
type: 'options',
|
|
97
|
+
noDataExpression: true,
|
|
98
|
+
displayOptions: { show: { resource: ['encounter'] } },
|
|
99
|
+
options: [
|
|
100
|
+
{
|
|
101
|
+
name: 'Create',
|
|
102
|
+
value: 'create',
|
|
103
|
+
description: 'Create a new encounter for a patient',
|
|
104
|
+
action: 'Create an encounter',
|
|
105
|
+
},
|
|
74
106
|
{
|
|
75
107
|
name: 'Get',
|
|
76
108
|
value: 'get',
|
|
77
|
-
description: 'Get
|
|
78
|
-
action: 'Get
|
|
109
|
+
description: 'Get an encounter by UUID',
|
|
110
|
+
action: 'Get an encounter',
|
|
79
111
|
},
|
|
80
112
|
{
|
|
81
113
|
name: 'Get Many',
|
|
82
114
|
value: 'getAll',
|
|
83
|
-
description: 'Get
|
|
84
|
-
action: 'Get many
|
|
115
|
+
description: 'Get many encounters for a patient',
|
|
116
|
+
action: 'Get many encounters',
|
|
85
117
|
},
|
|
86
118
|
],
|
|
87
|
-
default: '
|
|
119
|
+
default: 'get',
|
|
88
120
|
},
|
|
89
|
-
//
|
|
121
|
+
// ===== OTHER RESOURCE OPERATIONS =====
|
|
90
122
|
{
|
|
91
123
|
displayName: 'Operation',
|
|
92
124
|
name: 'operation',
|
|
@@ -94,42 +126,32 @@ class OpenMrs {
|
|
|
94
126
|
noDataExpression: true,
|
|
95
127
|
displayOptions: {
|
|
96
128
|
show: {
|
|
97
|
-
resource: [
|
|
98
|
-
'encounter',
|
|
99
|
-
'observation',
|
|
100
|
-
'diagnosticReport',
|
|
101
|
-
'condition',
|
|
102
|
-
'medicationStatement',
|
|
103
|
-
],
|
|
129
|
+
resource: ['observation', 'diagnosticReport', 'condition', 'medicationStatement'],
|
|
104
130
|
},
|
|
105
131
|
},
|
|
106
132
|
options: [
|
|
107
133
|
{
|
|
108
134
|
name: 'Get',
|
|
109
135
|
value: 'get',
|
|
110
|
-
description: 'Get a resource by
|
|
136
|
+
description: 'Get a resource by UUID',
|
|
111
137
|
action: 'Get a resource',
|
|
112
138
|
},
|
|
113
139
|
{
|
|
114
140
|
name: 'Get Many',
|
|
115
141
|
value: 'getAll',
|
|
116
|
-
description: 'Get many resources',
|
|
142
|
+
description: 'Get many resources for a patient',
|
|
117
143
|
action: 'Get many resources',
|
|
118
144
|
},
|
|
119
145
|
],
|
|
120
146
|
default: 'get',
|
|
121
147
|
},
|
|
122
|
-
//
|
|
148
|
+
// ===== CUSTOM API CALL OPERATION =====
|
|
123
149
|
{
|
|
124
150
|
displayName: 'Operation',
|
|
125
151
|
name: 'operation',
|
|
126
152
|
type: 'options',
|
|
127
153
|
noDataExpression: true,
|
|
128
|
-
displayOptions: {
|
|
129
|
-
show: {
|
|
130
|
-
resource: ['customApiCall'],
|
|
131
|
-
},
|
|
132
|
-
},
|
|
154
|
+
displayOptions: { show: { resource: ['customApiCall'] } },
|
|
133
155
|
options: [
|
|
134
156
|
{
|
|
135
157
|
name: 'Custom API Call',
|
|
@@ -140,33 +162,43 @@ class OpenMrs {
|
|
|
140
162
|
],
|
|
141
163
|
default: 'customApiCall',
|
|
142
164
|
},
|
|
143
|
-
//
|
|
165
|
+
// ===== PATIENT CREATE FIELDS =====
|
|
166
|
+
{
|
|
167
|
+
displayName: 'Patient (FHIR JSON)',
|
|
168
|
+
name: 'patientPayload',
|
|
169
|
+
type: 'json',
|
|
170
|
+
required: true,
|
|
171
|
+
displayOptions: { show: { resource: ['patient'], operation: ['create'] } },
|
|
172
|
+
default: '{\n "resourceType": "Patient",\n "identifier": [\n {\n "system": "http://openmrs.org/identifier",\n "value": "PATIENT-001"\n }\n ],\n "name": [\n {\n "family": "Doe",\n "given": ["John"]\n }\n ],\n "gender": "male",\n "birthDate": "1990-01-01",\n "telecom": [\n {\n "system": "phone",\n "value": "+250788123456"\n }\n ]\n}',
|
|
173
|
+
description: 'Full FHIR Patient resource. Must include resourceType, name, gender, birthDate.',
|
|
174
|
+
},
|
|
175
|
+
// ===== ENCOUNTER CREATE FIELDS =====
|
|
176
|
+
{
|
|
177
|
+
displayName: 'Encounter (FHIR JSON)',
|
|
178
|
+
name: 'encounterPayload',
|
|
179
|
+
type: 'json',
|
|
180
|
+
required: true,
|
|
181
|
+
displayOptions: { show: { resource: ['encounter'], operation: ['create'] } },
|
|
182
|
+
default: '{\n "resourceType": "Encounter",\n "status": "finished",\n "class": {\n "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",\n "code": "AMB",\n "display": "ambulatory"\n },\n "subject": {\n "reference": "Patient/PATIENT_UUID"\n },\n "period": {\n "start": "2026-06-02T08:00:00+00:00",\n "end": "2026-06-02T09:00:00+00:00"\n },\n "type": [\n {\n "coding": [\n {\n "system": "http://snomed.info/sct",\n "code": "11429006",\n "display": "Consultation"\n }\n ]\n }\n ]\n}',
|
|
183
|
+
description: 'Full FHIR Encounter resource. Must include resourceType, status, class, subject (Patient reference), and period.',
|
|
184
|
+
},
|
|
185
|
+
// ===== SEARCH FIELDS =====
|
|
144
186
|
{
|
|
145
187
|
displayName: 'Identifier',
|
|
146
188
|
name: 'identifier',
|
|
147
189
|
type: 'string',
|
|
148
190
|
required: true,
|
|
149
|
-
displayOptions: {
|
|
150
|
-
show: {
|
|
151
|
-
resource: ['patient'],
|
|
152
|
-
operation: ['searchByIdentifier'],
|
|
153
|
-
},
|
|
154
|
-
},
|
|
191
|
+
displayOptions: { show: { resource: ['patient'], operation: ['searchByIdentifier'] } },
|
|
155
192
|
default: '',
|
|
156
193
|
placeholder: '131280865',
|
|
157
|
-
description: 'OpenMRS ID or National ID
|
|
194
|
+
description: 'OpenMRS ID or National ID',
|
|
158
195
|
},
|
|
159
196
|
{
|
|
160
197
|
displayName: 'Name',
|
|
161
198
|
name: 'name',
|
|
162
199
|
type: 'string',
|
|
163
200
|
required: true,
|
|
164
|
-
displayOptions: {
|
|
165
|
-
show: {
|
|
166
|
-
resource: ['patient'],
|
|
167
|
-
operation: ['searchByName'],
|
|
168
|
-
},
|
|
169
|
-
},
|
|
201
|
+
displayOptions: { show: { resource: ['patient'], operation: ['searchByName'] } },
|
|
170
202
|
default: '',
|
|
171
203
|
placeholder: 'Patricia Lewis',
|
|
172
204
|
description: 'Patient name (supports partial matching)',
|
|
@@ -176,28 +208,18 @@ class OpenMrs {
|
|
|
176
208
|
name: 'phone',
|
|
177
209
|
type: 'string',
|
|
178
210
|
required: true,
|
|
179
|
-
displayOptions: {
|
|
180
|
-
show: {
|
|
181
|
-
resource: ['patient'],
|
|
182
|
-
operation: ['searchByPhone'],
|
|
183
|
-
},
|
|
184
|
-
},
|
|
211
|
+
displayOptions: { show: { resource: ['patient'], operation: ['searchByPhone'] } },
|
|
185
212
|
default: '',
|
|
186
213
|
placeholder: '+254712345678',
|
|
187
214
|
description: 'Phone number in any format',
|
|
188
215
|
},
|
|
189
|
-
//
|
|
216
|
+
// ===== GET BY UUID FIELDS =====
|
|
190
217
|
{
|
|
191
218
|
displayName: 'Patient ID',
|
|
192
219
|
name: 'patientId',
|
|
193
220
|
type: 'string',
|
|
194
221
|
required: true,
|
|
195
|
-
displayOptions: {
|
|
196
|
-
show: {
|
|
197
|
-
resource: ['patient'],
|
|
198
|
-
operation: ['get'],
|
|
199
|
-
},
|
|
200
|
-
},
|
|
222
|
+
displayOptions: { show: { resource: ['patient'], operation: ['get'] } },
|
|
201
223
|
default: '',
|
|
202
224
|
description: 'The UUID of the patient',
|
|
203
225
|
},
|
|
@@ -206,12 +228,7 @@ class OpenMrs {
|
|
|
206
228
|
name: 'encounterId',
|
|
207
229
|
type: 'string',
|
|
208
230
|
required: true,
|
|
209
|
-
displayOptions: {
|
|
210
|
-
show: {
|
|
211
|
-
resource: ['encounter'],
|
|
212
|
-
operation: ['get'],
|
|
213
|
-
},
|
|
214
|
-
},
|
|
231
|
+
displayOptions: { show: { resource: ['encounter'], operation: ['get'] } },
|
|
215
232
|
default: '',
|
|
216
233
|
description: 'The UUID of the encounter',
|
|
217
234
|
},
|
|
@@ -220,12 +237,7 @@ class OpenMrs {
|
|
|
220
237
|
name: 'observationId',
|
|
221
238
|
type: 'string',
|
|
222
239
|
required: true,
|
|
223
|
-
displayOptions: {
|
|
224
|
-
show: {
|
|
225
|
-
resource: ['observation'],
|
|
226
|
-
operation: ['get'],
|
|
227
|
-
},
|
|
228
|
-
},
|
|
240
|
+
displayOptions: { show: { resource: ['observation'], operation: ['get'] } },
|
|
229
241
|
default: '',
|
|
230
242
|
description: 'The UUID of the observation',
|
|
231
243
|
},
|
|
@@ -234,12 +246,7 @@ class OpenMrs {
|
|
|
234
246
|
name: 'diagnosticReportId',
|
|
235
247
|
type: 'string',
|
|
236
248
|
required: true,
|
|
237
|
-
displayOptions: {
|
|
238
|
-
show: {
|
|
239
|
-
resource: ['diagnosticReport'],
|
|
240
|
-
operation: ['get'],
|
|
241
|
-
},
|
|
242
|
-
},
|
|
249
|
+
displayOptions: { show: { resource: ['diagnosticReport'], operation: ['get'] } },
|
|
243
250
|
default: '',
|
|
244
251
|
description: 'The UUID of the diagnostic report',
|
|
245
252
|
},
|
|
@@ -248,12 +255,7 @@ class OpenMrs {
|
|
|
248
255
|
name: 'conditionId',
|
|
249
256
|
type: 'string',
|
|
250
257
|
required: true,
|
|
251
|
-
displayOptions: {
|
|
252
|
-
show: {
|
|
253
|
-
resource: ['condition'],
|
|
254
|
-
operation: ['get'],
|
|
255
|
-
},
|
|
256
|
-
},
|
|
258
|
+
displayOptions: { show: { resource: ['condition'], operation: ['get'] } },
|
|
257
259
|
default: '',
|
|
258
260
|
description: 'The UUID of the condition',
|
|
259
261
|
},
|
|
@@ -262,30 +264,21 @@ class OpenMrs {
|
|
|
262
264
|
name: 'medicationStatementId',
|
|
263
265
|
type: 'string',
|
|
264
266
|
required: true,
|
|
265
|
-
displayOptions: {
|
|
266
|
-
show: {
|
|
267
|
-
resource: ['medicationStatement'],
|
|
268
|
-
operation: ['get'],
|
|
269
|
-
},
|
|
270
|
-
},
|
|
267
|
+
displayOptions: { show: { resource: ['medicationStatement'], operation: ['get'] } },
|
|
271
268
|
default: '',
|
|
272
269
|
description: 'The UUID of the medication statement',
|
|
273
270
|
},
|
|
274
|
-
//
|
|
271
|
+
// ===== CUSTOM API CALL FIELDS =====
|
|
275
272
|
{
|
|
276
273
|
displayName: 'HTTP Method',
|
|
277
274
|
name: 'httpMethod',
|
|
278
275
|
type: 'options',
|
|
279
|
-
displayOptions: {
|
|
280
|
-
show: {
|
|
281
|
-
resource: ['customApiCall'],
|
|
282
|
-
},
|
|
283
|
-
},
|
|
276
|
+
displayOptions: { show: { resource: ['customApiCall'] } },
|
|
284
277
|
options: [
|
|
278
|
+
{ name: 'DELETE', value: 'DELETE' },
|
|
285
279
|
{ name: 'GET', value: 'GET' },
|
|
286
280
|
{ name: 'POST', value: 'POST' },
|
|
287
281
|
{ name: 'PUT', value: 'PUT' },
|
|
288
|
-
{ name: 'DELETE', value: 'DELETE' },
|
|
289
282
|
],
|
|
290
283
|
default: 'GET',
|
|
291
284
|
description: 'The HTTP method to use',
|
|
@@ -295,11 +288,7 @@ class OpenMrs {
|
|
|
295
288
|
name: 'endpoint',
|
|
296
289
|
type: 'string',
|
|
297
290
|
required: true,
|
|
298
|
-
displayOptions: {
|
|
299
|
-
show: {
|
|
300
|
-
resource: ['customApiCall'],
|
|
301
|
-
},
|
|
302
|
-
},
|
|
291
|
+
displayOptions: { show: { resource: ['customApiCall'] } },
|
|
303
292
|
default: '/ws/fhir2/R4/Patient',
|
|
304
293
|
placeholder: '/ws/fhir2/R4/Patient',
|
|
305
294
|
description: 'The API endpoint (e.g., /ws/fhir2/R4/Patient)',
|
|
@@ -308,14 +297,8 @@ class OpenMrs {
|
|
|
308
297
|
displayName: 'Query Parameters',
|
|
309
298
|
name: 'queryParameters',
|
|
310
299
|
type: 'fixedCollection',
|
|
311
|
-
typeOptions: {
|
|
312
|
-
|
|
313
|
-
},
|
|
314
|
-
displayOptions: {
|
|
315
|
-
show: {
|
|
316
|
-
resource: ['customApiCall'],
|
|
317
|
-
},
|
|
318
|
-
},
|
|
300
|
+
typeOptions: { multipleValues: true },
|
|
301
|
+
displayOptions: { show: { resource: ['customApiCall'] } },
|
|
319
302
|
default: {},
|
|
320
303
|
placeholder: 'Add Parameter',
|
|
321
304
|
options: [
|
|
@@ -339,7 +322,7 @@ class OpenMrs {
|
|
|
339
322
|
},
|
|
340
323
|
],
|
|
341
324
|
},
|
|
342
|
-
//
|
|
325
|
+
// ===== GET MANY PATIENT FILTER =====
|
|
343
326
|
{
|
|
344
327
|
displayName: 'Patient ID',
|
|
345
328
|
name: 'patientIdFilter',
|
|
@@ -347,20 +330,14 @@ class OpenMrs {
|
|
|
347
330
|
required: true,
|
|
348
331
|
displayOptions: {
|
|
349
332
|
show: {
|
|
350
|
-
resource: [
|
|
351
|
-
'encounter',
|
|
352
|
-
'observation',
|
|
353
|
-
'diagnosticReport',
|
|
354
|
-
'condition',
|
|
355
|
-
'medicationStatement',
|
|
356
|
-
],
|
|
333
|
+
resource: ['encounter', 'observation', 'diagnosticReport', 'condition', 'medicationStatement'],
|
|
357
334
|
operation: ['getAll'],
|
|
358
335
|
},
|
|
359
336
|
},
|
|
360
337
|
default: '',
|
|
361
338
|
description: 'The UUID of the patient to filter results by',
|
|
362
339
|
},
|
|
363
|
-
//
|
|
340
|
+
// ===== PAGINATION =====
|
|
364
341
|
{
|
|
365
342
|
displayName: 'Return All',
|
|
366
343
|
name: 'returnAll',
|
|
@@ -383,21 +360,19 @@ class OpenMrs {
|
|
|
383
360
|
returnAll: [false],
|
|
384
361
|
},
|
|
385
362
|
},
|
|
386
|
-
typeOptions: {
|
|
387
|
-
minValue: 1,
|
|
388
|
-
maxValue: 100,
|
|
389
|
-
},
|
|
363
|
+
typeOptions: { minValue: 1, maxValue: 100 },
|
|
390
364
|
default: 50,
|
|
391
365
|
description: 'Max number of results to return',
|
|
392
366
|
},
|
|
393
367
|
],
|
|
368
|
+
usableAsTool: true,
|
|
394
369
|
};
|
|
395
370
|
}
|
|
396
371
|
async execute() {
|
|
397
372
|
const items = this.getInputData();
|
|
398
373
|
const returnData = [];
|
|
399
374
|
const credentials = await this.getCredentials('openMrsApi');
|
|
400
|
-
const baseUrl = credentials.baseUrl;
|
|
375
|
+
const baseUrl = credentials.baseUrl.replace(/\/$/, '');
|
|
401
376
|
const fhirResourceMap = {
|
|
402
377
|
patient: 'Patient',
|
|
403
378
|
encounter: 'Encounter',
|
|
@@ -420,7 +395,9 @@ class OpenMrs {
|
|
|
420
395
|
const operation = this.getNodeParameter('operation', i);
|
|
421
396
|
let endpoint = '';
|
|
422
397
|
const qs = {};
|
|
423
|
-
//
|
|
398
|
+
// ----------------------------------------------------------------
|
|
399
|
+
// Custom API Call returns early
|
|
400
|
+
// ----------------------------------------------------------------
|
|
424
401
|
if (resource === 'customApiCall') {
|
|
425
402
|
const httpMethod = this.getNodeParameter('httpMethod', i);
|
|
426
403
|
endpoint = this.getNodeParameter('endpoint', i);
|
|
@@ -436,85 +413,117 @@ class OpenMrs {
|
|
|
436
413
|
qs,
|
|
437
414
|
json: true,
|
|
438
415
|
});
|
|
439
|
-
returnData.push({ json: response });
|
|
416
|
+
returnData.push({ json: response, pairedItem: { item: i } });
|
|
417
|
+
continue;
|
|
418
|
+
}
|
|
419
|
+
// ----------------------------------------------------------------
|
|
420
|
+
// Patient: Create POST, returns early
|
|
421
|
+
// ----------------------------------------------------------------
|
|
422
|
+
if (resource === 'patient' && operation === 'create') {
|
|
423
|
+
const raw = this.getNodeParameter('patientPayload', i);
|
|
424
|
+
const body = JSON.parse(typeof raw === 'string' ? raw : JSON.stringify(raw));
|
|
425
|
+
const response = await this.helpers.httpRequestWithAuthentication.call(this, 'openMrsApi', {
|
|
426
|
+
method: 'POST',
|
|
427
|
+
url: `${baseUrl}/ws/fhir2/R4/Patient`,
|
|
428
|
+
body,
|
|
429
|
+
json: true,
|
|
430
|
+
});
|
|
431
|
+
returnData.push({ json: response, pairedItem: { item: i } });
|
|
432
|
+
continue;
|
|
433
|
+
}
|
|
434
|
+
// ----------------------------------------------------------------
|
|
435
|
+
// Encounter: Create POST, returns early
|
|
436
|
+
// ----------------------------------------------------------------
|
|
437
|
+
if (resource === 'encounter' && operation === 'create') {
|
|
438
|
+
const raw = this.getNodeParameter('encounterPayload', i);
|
|
439
|
+
const body = JSON.parse(typeof raw === 'string' ? raw : JSON.stringify(raw));
|
|
440
|
+
const response = await this.helpers.httpRequestWithAuthentication.call(this, 'openMrsApi', {
|
|
441
|
+
method: 'POST',
|
|
442
|
+
url: `${baseUrl}/ws/fhir2/R4/Encounter`,
|
|
443
|
+
body,
|
|
444
|
+
json: true,
|
|
445
|
+
});
|
|
446
|
+
returnData.push({ json: response, pairedItem: { item: i } });
|
|
440
447
|
continue;
|
|
441
448
|
}
|
|
442
|
-
//
|
|
443
|
-
|
|
444
|
-
//
|
|
449
|
+
// ----------------------------------------------------------------
|
|
450
|
+
// Get by UUID
|
|
451
|
+
// ----------------------------------------------------------------
|
|
445
452
|
if (operation === 'get') {
|
|
446
453
|
const idParam = resourceIdParamMap[resource];
|
|
447
454
|
const resourceId = this.getNodeParameter(idParam, i);
|
|
455
|
+
const fhirResource = fhirResourceMap[resource];
|
|
448
456
|
endpoint = `/ws/fhir2/R4/${fhirResource}/${resourceId}`;
|
|
449
457
|
}
|
|
450
|
-
//
|
|
458
|
+
// ----------------------------------------------------------------
|
|
459
|
+
// Search operations (Patient only)
|
|
460
|
+
// ----------------------------------------------------------------
|
|
451
461
|
else if (operation === 'searchByIdentifier') {
|
|
452
462
|
const identifier = this.getNodeParameter('identifier', i);
|
|
453
|
-
endpoint =
|
|
463
|
+
endpoint = '/ws/fhir2/R4/Patient';
|
|
454
464
|
qs.identifier = identifier;
|
|
455
465
|
const returnAll = this.getNodeParameter('returnAll', i, false);
|
|
456
|
-
if (!returnAll)
|
|
466
|
+
if (!returnAll)
|
|
457
467
|
qs._count = this.getNodeParameter('limit', i, 50);
|
|
458
|
-
}
|
|
459
468
|
}
|
|
460
|
-
// Search by Name
|
|
461
469
|
else if (operation === 'searchByName') {
|
|
462
470
|
const name = this.getNodeParameter('name', i);
|
|
463
|
-
endpoint =
|
|
471
|
+
endpoint = '/ws/fhir2/R4/Patient';
|
|
464
472
|
qs.name = name;
|
|
465
473
|
const returnAll = this.getNodeParameter('returnAll', i, false);
|
|
466
|
-
if (!returnAll)
|
|
474
|
+
if (!returnAll)
|
|
467
475
|
qs._count = this.getNodeParameter('limit', i, 50);
|
|
468
|
-
}
|
|
469
476
|
}
|
|
470
|
-
// Search by Phone
|
|
471
477
|
else if (operation === 'searchByPhone') {
|
|
472
478
|
const phone = this.getNodeParameter('phone', i);
|
|
473
|
-
endpoint =
|
|
479
|
+
endpoint = '/ws/fhir2/R4/Patient';
|
|
474
480
|
qs.telecom = phone;
|
|
475
481
|
const returnAll = this.getNodeParameter('returnAll', i, false);
|
|
476
|
-
if (!returnAll)
|
|
482
|
+
if (!returnAll)
|
|
477
483
|
qs._count = this.getNodeParameter('limit', i, 50);
|
|
478
|
-
}
|
|
479
484
|
}
|
|
480
|
-
//
|
|
485
|
+
// ----------------------------------------------------------------
|
|
486
|
+
// Get Many
|
|
487
|
+
// ----------------------------------------------------------------
|
|
481
488
|
else if (operation === 'getAll') {
|
|
489
|
+
const fhirResource = fhirResourceMap[resource];
|
|
482
490
|
endpoint = `/ws/fhir2/R4/${fhirResource}`;
|
|
483
491
|
if (resource !== 'patient') {
|
|
484
|
-
|
|
485
|
-
qs.patient = patientId;
|
|
492
|
+
qs.patient = this.getNodeParameter('patientIdFilter', i);
|
|
486
493
|
}
|
|
487
494
|
const returnAll = this.getNodeParameter('returnAll', i);
|
|
488
|
-
if (!returnAll)
|
|
495
|
+
if (!returnAll)
|
|
489
496
|
qs._count = this.getNodeParameter('limit', i);
|
|
490
|
-
}
|
|
491
497
|
}
|
|
492
|
-
//
|
|
498
|
+
// ----------------------------------------------------------------
|
|
499
|
+
// Shared GET handler
|
|
500
|
+
// ----------------------------------------------------------------
|
|
493
501
|
const response = await this.helpers.httpRequestWithAuthentication.call(this, 'openMrsApi', {
|
|
494
502
|
method: 'GET',
|
|
495
503
|
url: `${baseUrl}${endpoint}`,
|
|
496
504
|
qs,
|
|
497
505
|
json: true,
|
|
498
506
|
});
|
|
499
|
-
// Process response
|
|
500
507
|
if (Array.isArray(response)) {
|
|
501
|
-
returnData.push(...response.map((item) => ({ json: item })));
|
|
508
|
+
returnData.push(...response.map((item) => ({ json: item, pairedItem: { item: i } })));
|
|
502
509
|
}
|
|
503
510
|
else if (response.entry) {
|
|
504
511
|
const entries = response.entry;
|
|
505
512
|
if (entries.length === 0) {
|
|
506
513
|
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No results found for the search criteria', { itemIndex: i });
|
|
507
514
|
}
|
|
508
|
-
returnData.push(...entries.map((entry) => ({ json: entry.resource })));
|
|
515
|
+
returnData.push(...entries.map((entry) => ({ json: entry.resource, pairedItem: { item: i } })));
|
|
509
516
|
}
|
|
510
517
|
else {
|
|
511
|
-
returnData.push({ json: response });
|
|
518
|
+
returnData.push({ json: response, pairedItem: { item: i } });
|
|
512
519
|
}
|
|
513
520
|
}
|
|
514
521
|
catch (error) {
|
|
515
522
|
if (this.continueOnFail()) {
|
|
516
|
-
|
|
517
|
-
|
|
523
|
+
returnData.push({
|
|
524
|
+
json: { error: error instanceof Error ? error.message : 'Unknown error' },
|
|
525
|
+
pairedItem: { item: i },
|
|
526
|
+
});
|
|
518
527
|
continue;
|
|
519
528
|
}
|
|
520
529
|
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error instanceof Error ? error : new Error(String(error)), { itemIndex: i });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenMrs.node.js","sourceRoot":"","sources":["../../../nodes/OpenMrs/OpenMrs.node.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OpenMrs.node.js","sourceRoot":"","sources":["../../../nodes/OpenMrs/OpenMrs.node.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "n8n-nodes-openmrs",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "n8n community node for OpenMRS FHIR R4 integration. Access patient demographics, encounters, observations, diagnostic reports, conditions, and medication statements.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"n8n-community-node-package",
|
|
@@ -32,21 +32,20 @@
|
|
|
32
32
|
"bugs": {
|
|
33
33
|
"url": "https://github.com/monfortbrian/n8n-nodes-openmrs/issues"
|
|
34
34
|
},
|
|
35
|
-
"main": "index.js",
|
|
36
35
|
"scripts": {
|
|
37
|
-
"build": "
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"prepublishOnly": "npm run build"
|
|
36
|
+
"build": "n8n-node build",
|
|
37
|
+
"dev": "n8n-node dev",
|
|
38
|
+
"lint": "n8n-node lint",
|
|
39
|
+
"lint:fix": "n8n-node lint --fix",
|
|
40
|
+
"release": "n8n-node release",
|
|
41
|
+
"prepublishOnly": "n8n-node prerelease"
|
|
44
42
|
},
|
|
45
43
|
"files": [
|
|
46
44
|
"dist"
|
|
47
45
|
],
|
|
48
46
|
"n8n": {
|
|
49
47
|
"n8nNodesApiVersion": 1,
|
|
48
|
+
"strict": true,
|
|
50
49
|
"credentials": [
|
|
51
50
|
"dist/credentials/OpenMrsApi.credentials.js"
|
|
52
51
|
],
|
|
@@ -55,13 +54,12 @@
|
|
|
55
54
|
]
|
|
56
55
|
},
|
|
57
56
|
"devDependencies": {
|
|
58
|
-
"@
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"typescript": "^5.3.0"
|
|
57
|
+
"@n8n/node-cli": "*",
|
|
58
|
+
"eslint": "9.32.0",
|
|
59
|
+
"n8n-workflow": "*",
|
|
60
|
+
"prettier": "3.6.2",
|
|
61
|
+
"release-it": "^19.0.4",
|
|
62
|
+
"typescript": "5.9.2"
|
|
65
63
|
},
|
|
66
64
|
"peerDependencies": {
|
|
67
65
|
"n8n-workflow": "*"
|