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 CHANGED
@@ -1,415 +1,139 @@
1
1
  # n8n-nodes-openmrs
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/n8n-nodes-openmrs)](https://www.npmjs.com/package/n8n-nodes-openmrs)
3
+ [![npm](https://img.shields.io/npm/v/n8n-nodes-openmrs)](https://www.npmjs.com/package/n8n-nodes-openmrs)
4
4
  [![npm downloads](https://img.shields.io/npm/dt/n8n-nodes-openmrs)](https://www.npmjs.com/package/n8n-nodes-openmrs)
5
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
6
6
 
7
- Community node for [n8n](https://n8n.io/) providing OpenMRS FHIR R4 integration with intelligent patient search, clinical data access, and healthcare workflow automation.
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
- ### Via n8n Community Nodes (Recommended)
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
- ### From Source
16
+ **Via npm:**
76
17
  ```bash
77
- git clone https://github.com/monfortbrian/n8n-nodes-openmrs.git
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
- ## Quick Start
23
+ ## Credentials
87
24
 
88
- ### 1. Configure Credentials
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
- 1. In n8n, go to **Credentials** → **New**
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
- ## Examples
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
- **Output:** Full patient FHIR record
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
- ### Example 2: Get Patient Lab Results
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
- 1. Add OpenMRS node
162
- 2. Resource: Encounter
163
- 3. Operation: Get Many
164
- 4. Patient UUID: 7826f08a-0258-4fb1-ba69-2af192f392db
165
- 5. Return All: true
166
- 6. Execute
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
- **Output:** Complete visit timeline from first to last encounter
65
+ Returns the created FHIR Patient resource including the assigned OpenMRS UUID.
170
66
 
171
67
  ---
172
68
 
173
- ### Example 4: Custom FHIR Query
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
- Schedule (every 6 hours)
220
- → OpenMRS: Get Conditions (last 6h)
221
- → Code: Filter cholera, measles, meningitis
222
- → Code: Check outbreak threshold
223
- → DHIS2: Post to IDSR module
224
- → SMS: Alert district officer
225
- ```
226
-
227
- **Lab Turnaround Time Monitoring**
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
- - **Search by Identifier** - OpenMRS ID, National ID
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
- - **n8n**: 0.187.0 or higher
296
- - **OpenMRS**: 2.3+ with FHIR2 module
297
- - **Node.js**: 18.0.0 or higher
90
+ - **OpenMRS:** 2.3+ with FHIR2 module enabled
91
+ - **n8n:** 1.0+
92
+ - **Node.js:** 22+
298
93
 
299
94
  ---
300
95
 
301
- ## Troubleshooting
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
- ### Authentication fails
316
-
317
- - Include `/openmrs` in Base URL
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
- ### Empty search results
322
-
323
- - Patient may not exist with that identifier
324
- - Try different search criteria
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
- ## Development
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
- # Test in n8n UI
357
- # Your node appears as "OpenMRS"
358
- ```
359
-
360
- ### Publishing
361
- ```bash
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: `git checkout -b feature/amazing-feature`
380
- 3. Commit changes: `git commit -m 'Add amazing feature'`
381
- 4. Push: `git push origin feature/amazing-feature`
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 © 2026 Monfort Brian N.
144
+ Copyright (c) 2026 [Monfort Brian N.](https://github.com/monfortbrian)
421
145
 
422
146
  ---
423
147
 
424
148
  ## Support
425
149
 
426
- - **Issues**: [GitHub Issues](https://github.com/monfortbrian/n8n-nodes-openmrs/issues)
427
- - **Discussions**: [GitHub Discussions](https://github.com/monfortbrian/n8n-nodes-openmrs/discussions)
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
- **Made with ❤️ for global health**
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;AAnDD,gCAmDC"}
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
- // Resource Selection
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
- // Patient Operations (with search)
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 a patient by UUID',
78
- action: 'Get a patient',
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 all patients',
84
- action: 'Get many patients',
115
+ description: 'Get many encounters for a patient',
116
+ action: 'Get many encounters',
85
117
  },
86
118
  ],
87
- default: 'searchByIdentifier',
119
+ default: 'get',
88
120
  },
89
- // Other Resources Operations (no search)
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 ID',
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
- // Custom API Call Operation
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
- // Search Parameters
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 (e.g., 131280865)',
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
- // UUID Parameters for Get operations
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
- // Custom API Call Parameters
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
- multipleValues: true,
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
- // Patient ID Filter for Get Many
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
- // Pagination
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
- // Custom API Call
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
- // Regular resources
443
- const fhirResource = fhirResourceMap[resource];
444
- // Get operation
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
- // Search by Identifier
458
+ // ----------------------------------------------------------------
459
+ // Search operations (Patient only)
460
+ // ----------------------------------------------------------------
451
461
  else if (operation === 'searchByIdentifier') {
452
462
  const identifier = this.getNodeParameter('identifier', i);
453
- endpoint = `/ws/fhir2/R4/Patient`;
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 = `/ws/fhir2/R4/Patient`;
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 = `/ws/fhir2/R4/Patient`;
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
- // Get All operation
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
- const patientId = this.getNodeParameter('patientIdFilter', i);
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
- // Make HTTP request
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
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
517
- returnData.push({ json: { error: errorMessage } });
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":";;;AAQA,+CAAkD;AAElD,MAAa,OAAO;IAApB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,8DAA8D;YACxE,WAAW,EAAE,mCAAmC;YAChD,QAAQ,EAAE;gBACT,IAAI,EAAE,SAAS;aACf;YACD,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,IAAI;iBACd;aACD;YACD,UAAU,EAAE;gBACX,qBAAqB;gBACrB;oBACC,WAAW,EAAE,UAAU;oBACvB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,SAAS;oBACf,gBAAgB,EAAE,IAAI;oBACtB,OAAO,EAAE;wBACR,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;wBACzC,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,kBAAkB,EAAE;wBACxD,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;wBACzC,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,qBAAqB,EAAE;wBAC9D,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;wBAC7C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;wBACrC,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,EAAE;qBACnD;oBACD,OAAO,EAAE,SAAS;iBAClB;gBAED,mCAAmC;gBACnC;oBACC,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS;oBACf,gBAAgB,EAAE,IAAI;oBACtB,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,SAAS,CAAC;yBACrB;qBACD;oBACD,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,sBAAsB;4BAC5B,KAAK,EAAE,oBAAoB;4BAC3B,WAAW,EAAE,6CAA6C;4BAC1D,MAAM,EAAE,8BAA8B;yBACtC;wBACD;4BACC,IAAI,EAAE,gBAAgB;4BACtB,KAAK,EAAE,cAAc;4BACrB,WAAW,EAAE,kDAAkD;4BAC/D,MAAM,EAAE,wBAAwB;yBAChC;wBACD;4BACC,IAAI,EAAE,iBAAiB;4BACvB,KAAK,EAAE,eAAe;4BACtB,WAAW,EAAE,gCAAgC;4BAC7C,MAAM,EAAE,yBAAyB;yBACjC;wBACD;4BACC,IAAI,EAAE,KAAK;4BACX,KAAK,EAAE,KAAK;4BACZ,WAAW,EAAE,uBAAuB;4BACpC,MAAM,EAAE,eAAe;yBACvB;wBACD;4BACC,IAAI,EAAE,UAAU;4BAChB,KAAK,EAAE,QAAQ;4BACf,WAAW,EAAE,kBAAkB;4BAC/B,MAAM,EAAE,mBAAmB;yBAC3B;qBACD;oBACD,OAAO,EAAE,oBAAoB;iBAC7B;gBAED,yCAAyC;gBACzC;oBACC,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS;oBACf,gBAAgB,EAAE,IAAI;oBACtB,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE;gCACT,WAAW;gCACX,aAAa;gCACb,kBAAkB;gCAClB,WAAW;gCACX,qBAAqB;6BACrB;yBACD;qBACD;oBACD,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,KAAK;4BACX,KAAK,EAAE,KAAK;4BACZ,WAAW,EAAE,sBAAsB;4BACnC,MAAM,EAAE,gBAAgB;yBACxB;wBACD;4BACC,IAAI,EAAE,UAAU;4BAChB,KAAK,EAAE,QAAQ;4BACf,WAAW,EAAE,oBAAoB;4BACjC,MAAM,EAAE,oBAAoB;yBAC5B;qBACD;oBACD,OAAO,EAAE,KAAK;iBACd;gBAED,4BAA4B;gBAC5B;oBACC,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS;oBACf,gBAAgB,EAAE,IAAI;oBACtB,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,eAAe,CAAC;yBAC3B;qBACD;oBACD,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,iBAAiB;4BACvB,KAAK,EAAE,eAAe;4BACtB,WAAW,EAAE,mCAAmC;4BAChD,MAAM,EAAE,sBAAsB;yBAC9B;qBACD;oBACD,OAAO,EAAE,eAAe;iBACxB;gBAED,oBAAoB;gBACpB;oBACC,WAAW,EAAE,YAAY;oBACzB,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,SAAS,CAAC;4BACrB,SAAS,EAAE,CAAC,oBAAoB,CAAC;yBACjC;qBACD;oBACD,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,WAAW;oBACxB,WAAW,EAAE,6CAA6C;iBAC1D;gBACD;oBACC,WAAW,EAAE,MAAM;oBACnB,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,SAAS,CAAC;4BACrB,SAAS,EAAE,CAAC,cAAc,CAAC;yBAC3B;qBACD;oBACD,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,gBAAgB;oBAC7B,WAAW,EAAE,0CAA0C;iBACvD;gBACD;oBACC,WAAW,EAAE,cAAc;oBAC3B,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,SAAS,CAAC;4BACrB,SAAS,EAAE,CAAC,eAAe,CAAC;yBAC5B;qBACD;oBACD,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,eAAe;oBAC5B,WAAW,EAAE,4BAA4B;iBACzC;gBAED,qCAAqC;gBACrC;oBACC,WAAW,EAAE,YAAY;oBACzB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,SAAS,CAAC;4BACrB,SAAS,EAAE,CAAC,KAAK,CAAC;yBAClB;qBACD;oBACD,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,yBAAyB;iBACtC;gBACD;oBACC,WAAW,EAAE,cAAc;oBAC3B,IAAI,EAAE,aAAa;oBACnB,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,WAAW,CAAC;4BACvB,SAAS,EAAE,CAAC,KAAK,CAAC;yBAClB;qBACD;oBACD,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,2BAA2B;iBACxC;gBACD;oBACC,WAAW,EAAE,gBAAgB;oBAC7B,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,aAAa,CAAC;4BACzB,SAAS,EAAE,CAAC,KAAK,CAAC;yBAClB;qBACD;oBACD,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,6BAA6B;iBAC1C;gBACD;oBACC,WAAW,EAAE,sBAAsB;oBACnC,IAAI,EAAE,oBAAoB;oBAC1B,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,kBAAkB,CAAC;4BAC9B,SAAS,EAAE,CAAC,KAAK,CAAC;yBAClB;qBACD;oBACD,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,mCAAmC;iBAChD;gBACD;oBACC,WAAW,EAAE,cAAc;oBAC3B,IAAI,EAAE,aAAa;oBACnB,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,WAAW,CAAC;4BACvB,SAAS,EAAE,CAAC,KAAK,CAAC;yBAClB;qBACD;oBACD,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,2BAA2B;iBACxC;gBACD;oBACC,WAAW,EAAE,yBAAyB;oBACtC,IAAI,EAAE,uBAAuB;oBAC7B,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,qBAAqB,CAAC;4BACjC,SAAS,EAAE,CAAC,KAAK,CAAC;yBAClB;qBACD;oBACD,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,sCAAsC;iBACnD;gBAED,6BAA6B;gBAC7B;oBACC,WAAW,EAAE,aAAa;oBAC1B,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,SAAS;oBACf,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,eAAe,CAAC;yBAC3B;qBACD;oBACD,OAAO,EAAE;wBACR,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;wBAC7B,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;wBAC/B,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;wBAC7B,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;qBACnC;oBACD,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,wBAAwB;iBACrC;gBACD;oBACC,WAAW,EAAE,UAAU;oBACvB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,eAAe,CAAC;yBAC3B;qBACD;oBACD,OAAO,EAAE,sBAAsB;oBAC/B,WAAW,EAAE,sBAAsB;oBACnC,WAAW,EAAE,+CAA+C;iBAC5D;gBACD;oBACC,WAAW,EAAE,kBAAkB;oBAC/B,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,iBAAiB;oBACvB,WAAW,EAAE;wBACZ,cAAc,EAAE,IAAI;qBACpB;oBACD,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE,CAAC,eAAe,CAAC;yBAC3B;qBACD;oBACD,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,eAAe;oBAC5B,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,WAAW;4BACjB,WAAW,EAAE,WAAW;4BACxB,MAAM,EAAE;gCACP;oCACC,WAAW,EAAE,MAAM;oCACnB,IAAI,EAAE,MAAM;oCACZ,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,EAAE;iCACX;gCACD;oCACC,WAAW,EAAE,OAAO;oCACpB,IAAI,EAAE,OAAO;oCACb,IAAI,EAAE,QAAQ;oCACd,OAAO,EAAE,EAAE;iCACX;6BACD;yBACD;qBACD;iBACD;gBAED,iCAAiC;gBACjC;oBACC,WAAW,EAAE,YAAY;oBACzB,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,IAAI;oBACd,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,QAAQ,EAAE;gCACT,WAAW;gCACX,aAAa;gCACb,kBAAkB;gCAClB,WAAW;gCACX,qBAAqB;6BACrB;4BACD,SAAS,EAAE,CAAC,QAAQ,CAAC;yBACrB;qBACD;oBACD,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,8CAA8C;iBAC3D;gBAED,aAAa;gBACb;oBACC,WAAW,EAAE,YAAY;oBACzB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS;oBACf,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,SAAS,EAAE,CAAC,QAAQ,EAAE,oBAAoB,EAAE,cAAc,EAAE,eAAe,CAAC;yBAC5E;qBACD;oBACD,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,2DAA2D;iBACxE;gBACD;oBACC,WAAW,EAAE,OAAO;oBACpB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,QAAQ;oBACd,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,SAAS,EAAE,CAAC,QAAQ,EAAE,oBAAoB,EAAE,cAAc,EAAE,eAAe,CAAC;4BAC5E,SAAS,EAAE,CAAC,KAAK,CAAC;yBAClB;qBACD;oBACD,WAAW,EAAE;wBACZ,QAAQ,EAAE,CAAC;wBACX,QAAQ,EAAE,GAAG;qBACb;oBACD,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,iCAAiC;iBAC9C;aACD;SACD,CAAC;IAyKH,CAAC;IAvKA,KAAK,CAAC,OAAO;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,UAAU,GAAyB,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,WAAW,CAAC,OAAiB,CAAC;QAE9C,MAAM,eAAe,GAA2B;YAC/C,OAAO,EAAE,SAAS;YAClB,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,aAAa;YAC1B,gBAAgB,EAAE,kBAAkB;YACpC,SAAS,EAAE,WAAW;YACtB,mBAAmB,EAAE,qBAAqB;SAC1C,CAAC;QAEF,MAAM,kBAAkB,GAA2B;YAClD,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE,aAAa;YACxB,WAAW,EAAE,eAAe;YAC5B,gBAAgB,EAAE,oBAAoB;YACtC,SAAS,EAAE,aAAa;YACxB,mBAAmB,EAAE,uBAAuB;SAC5C,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAW,CAAC;gBAChE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAW,CAAC;gBAElE,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAClB,MAAM,EAAE,GAAgB,EAAE,CAAC;gBAE3B,kBAAkB;gBAClB,IAAI,QAAQ,KAAK,eAAe,EAAE,CAAC;oBAClC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAwB,CAAC;oBACjF,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAW,CAAC;oBAE1D,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAgB,CAAC;oBACvF,IAAI,eAAe,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC3E,KAAK,MAAM,KAAK,IAAI,eAAe,CAAC,SAAmD,EAAE,CAAC;4BACzF,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;wBAC9B,CAAC;oBACF,CAAC;oBAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,IAAI,CACrE,IAAI,EACJ,YAAY,EACZ;wBACC,MAAM,EAAE,UAAU;wBAClB,GAAG,EAAE,GAAG,OAAO,GAAG,QAAQ,EAAE;wBAC5B,EAAE;wBACF,IAAI,EAAE,IAAI;qBACV,CACD,CAAC;oBAEF,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAuB,EAAE,CAAC,CAAC;oBACnD,SAAS;gBACV,CAAC;gBAED,oBAAoB;gBACpB,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAE/C,gBAAgB;gBAChB,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;oBAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAW,CAAC;oBAC/D,QAAQ,GAAG,gBAAgB,YAAY,IAAI,UAAU,EAAE,CAAC;gBACzD,CAAC;gBACD,uBAAuB;qBAClB,IAAI,SAAS,KAAK,oBAAoB,EAAE,CAAC;oBAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAW,CAAC;oBACpE,QAAQ,GAAG,sBAAsB,CAAC;oBAClC,EAAE,CAAC,UAAU,GAAG,UAAU,CAAC;oBAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAY,CAAC;oBAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;wBAChB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAW,CAAC;oBAC7D,CAAC;gBACF,CAAC;gBACD,iBAAiB;qBACZ,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;oBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAW,CAAC;oBACxD,QAAQ,GAAG,sBAAsB,CAAC;oBAClC,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;oBAEf,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAY,CAAC;oBAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;wBAChB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAW,CAAC;oBAC7D,CAAC;gBACF,CAAC;gBACD,kBAAkB;qBACb,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;oBACxC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAW,CAAC;oBAC1D,QAAQ,GAAG,sBAAsB,CAAC;oBAClC,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC;oBAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAY,CAAC;oBAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;wBAChB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAW,CAAC;oBAC7D,CAAC;gBACF,CAAC;gBACD,oBAAoB;qBACf,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;oBACjC,QAAQ,GAAG,gBAAgB,YAAY,EAAE,CAAC;oBAE1C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;wBAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAW,CAAC;wBACxE,EAAE,CAAC,OAAO,GAAG,SAAS,CAAC;oBACxB,CAAC;oBAED,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAY,CAAC;oBACnE,IAAI,CAAC,SAAS,EAAE,CAAC;wBAChB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAW,CAAC;oBACzD,CAAC;gBACF,CAAC;gBAED,oBAAoB;gBACpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,IAAI,CACrE,IAAI,EACJ,YAAY,EACZ;oBACC,MAAM,EAAE,KAAK;oBACb,GAAG,EAAE,GAAG,OAAO,GAAG,QAAQ,EAAE;oBAC5B,EAAE;oBACF,IAAI,EAAE,IAAI;iBACV,CACD,CAAC;gBAEF,mBAAmB;gBACnB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7B,UAAU,CAAC,IAAI,CACd,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAiB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CACxD,CAAC;gBACH,CAAC;qBAAM,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;oBAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAyC,CAAC;oBAEnE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC1B,MAAM,IAAI,iCAAkB,CAC3B,IAAI,CAAC,OAAO,EAAE,EACd,0CAA0C,EAC1C,EAAE,SAAS,EAAE,CAAC,EAAE,CAChB,CAAC;oBACH,CAAC;oBAED,UAAU,CAAC,IAAI,CACd,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CACrD,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACP,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAuB,EAAE,CAAC,CAAC;gBACpD,CAAC;YACF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC3B,MAAM,YAAY,GACjB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;oBAC1D,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;oBACnD,SAAS;gBACV,CAAC;gBACD,MAAM,IAAI,iCAAkB,CAC3B,IAAI,CAAC,OAAO,EAAE,EACd,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EACzD,EAAE,SAAS,EAAE,CAAC,EAAE,CAChB,CAAC;YACH,CAAC;QACF,CAAC;QAED,OAAO,CAAC,UAAU,CAAC,CAAC;IACrB,CAAC;CACD;AArjBD,0BAqjBC"}
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.2.0",
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": "tsc && npm run copy-assets",
38
- "copy-assets": "node -e \"const fs=require('fs'); const path=require('path'); const src='nodes/OpenMrs/openMrs.svg'; const dest='dist/nodes/OpenMrs/openMrs.svg'; fs.mkdirSync(path.dirname(dest), {recursive:true}); fs.copyFileSync(src, dest); const credSrc='credentials/openMrs.svg'; const credDest='dist/credentials/openMrs.svg'; fs.mkdirSync(path.dirname(credDest), {recursive:true}); fs.copyFileSync(credSrc, credDest);\"",
39
- "dev": "tsc --watch",
40
- "format": "prettier nodes credentials --write",
41
- "lint": "eslint nodes credentials --ext .ts",
42
- "lintfix": "eslint nodes credentials --ext .ts --fix",
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
- "@types/node": "^20.14.0",
59
- "@typescript-eslint/eslint-plugin": "^6.0.0",
60
- "@typescript-eslint/parser": "^6.0.0",
61
- "eslint": "^8.56.0",
62
- "n8n-workflow": "^1.52.0",
63
- "prettier": "^3.3.0",
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": "*"