@fhirfly-io/terminology 0.1.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.
@@ -0,0 +1,991 @@
1
+ /**
2
+ * Response shape options for controlling the level of detail returned.
3
+ */
4
+ type ResponseShape = "compact" | "standard" | "full";
5
+ /**
6
+ * Include options for additional data in responses.
7
+ */
8
+ type IncludeOption = "display";
9
+ /**
10
+ * Common options for all lookup methods.
11
+ */
12
+ interface LookupOptions {
13
+ /** Response detail level. Default: "standard" */
14
+ shape?: ResponseShape;
15
+ /** Include additional fields like pre-formatted display strings */
16
+ include?: IncludeOption[];
17
+ }
18
+ /**
19
+ * Common options for batch lookup methods.
20
+ */
21
+ interface BatchLookupOptions extends LookupOptions {
22
+ /** Maximum codes per batch (default: 100, max: 500) */
23
+ batchSize?: number;
24
+ }
25
+ /**
26
+ * Legal/licensing information included in responses.
27
+ */
28
+ interface LegalInfo {
29
+ license: string;
30
+ attribution?: string;
31
+ source_url?: string;
32
+ }
33
+ /**
34
+ * Metadata included in all API responses.
35
+ */
36
+ interface ResponseMeta {
37
+ legal: LegalInfo;
38
+ shape: ResponseShape;
39
+ api_version: string;
40
+ }
41
+ /**
42
+ * Standard API response wrapper.
43
+ */
44
+ interface ApiResponse<T> {
45
+ data: T;
46
+ meta: ResponseMeta;
47
+ }
48
+ /**
49
+ * Batch response item - either success or not found.
50
+ */
51
+ interface BatchResultItem<T> {
52
+ code: string;
53
+ found: boolean;
54
+ data?: T;
55
+ error?: string;
56
+ }
57
+ /**
58
+ * Batch response wrapper.
59
+ */
60
+ interface BatchResponse<T> {
61
+ results: BatchResultItem<T>[];
62
+ meta: ResponseMeta & {
63
+ total: number;
64
+ found: number;
65
+ not_found: number;
66
+ };
67
+ }
68
+ /**
69
+ * Display field that may be included when include=display is specified.
70
+ */
71
+ interface DisplayField {
72
+ display?: string;
73
+ }
74
+
75
+ /**
76
+ * HTTP client configuration.
77
+ */
78
+ interface HttpClientConfig {
79
+ baseUrl: string;
80
+ apiKey: string;
81
+ timeout?: number;
82
+ maxRetries?: number;
83
+ retryDelay?: number;
84
+ userAgent?: string;
85
+ }
86
+ /**
87
+ * Internal HTTP client for making API requests.
88
+ */
89
+ declare class HttpClient {
90
+ private readonly config;
91
+ constructor(config: HttpClientConfig);
92
+ /**
93
+ * Build query string from options.
94
+ */
95
+ private buildQueryString;
96
+ /**
97
+ * Parse error response from API.
98
+ */
99
+ private parseErrorResponse;
100
+ /**
101
+ * Sleep for a given number of milliseconds.
102
+ */
103
+ private sleep;
104
+ /**
105
+ * Make an HTTP request with retries.
106
+ */
107
+ private request;
108
+ /**
109
+ * Make a GET request.
110
+ */
111
+ get<T>(endpoint: string, options?: LookupOptions): Promise<T>;
112
+ /**
113
+ * Make a POST request.
114
+ */
115
+ post<T>(endpoint: string, body: unknown, options?: LookupOptions): Promise<T>;
116
+ }
117
+
118
+ /**
119
+ * Active ingredient in a drug product.
120
+ */
121
+ interface ActiveIngredient {
122
+ name: string;
123
+ strength?: string;
124
+ unit?: string;
125
+ }
126
+ /**
127
+ * Packaging information for an NDC.
128
+ */
129
+ interface NdcPackaging {
130
+ ndc: string;
131
+ description?: string;
132
+ package_ndc?: string;
133
+ }
134
+ /**
135
+ * NDC lookup result - compact shape.
136
+ */
137
+ interface NdcCompact extends DisplayField {
138
+ ndc: string;
139
+ ndc11: string;
140
+ product_name: string;
141
+ labeler_name: string;
142
+ }
143
+ /**
144
+ * NDC lookup result - standard shape.
145
+ */
146
+ interface NdcStandard extends NdcCompact {
147
+ generic_name?: string;
148
+ dosage_form?: string;
149
+ route?: string;
150
+ active_ingredients: ActiveIngredient[];
151
+ dea_schedule?: string;
152
+ marketing_status?: string;
153
+ }
154
+ /**
155
+ * NDC lookup result - full shape.
156
+ */
157
+ interface NdcFull extends NdcStandard {
158
+ application_number?: string;
159
+ product_type?: string;
160
+ marketing_start_date?: string;
161
+ marketing_end_date?: string;
162
+ listing_expiration_date?: string;
163
+ pharm_class?: string[];
164
+ packaging?: NdcPackaging[];
165
+ }
166
+ /**
167
+ * NDC response type based on shape.
168
+ */
169
+ type NdcData = NdcCompact | NdcStandard | NdcFull;
170
+
171
+ /**
172
+ * NDC (National Drug Code) API endpoint.
173
+ */
174
+ declare class NdcEndpoint {
175
+ private readonly http;
176
+ constructor(http: HttpClient);
177
+ /**
178
+ * Look up a single NDC code.
179
+ *
180
+ * @param code - NDC code (10-digit, 11-digit, or hyphenated format)
181
+ * @param options - Response shape and include options
182
+ * @returns NDC data
183
+ *
184
+ * @example
185
+ * ```ts
186
+ * const ndc = await client.ndc.lookup("0069-0151-01");
187
+ * console.log(ndc.data.product_name); // "Lipitor"
188
+ * ```
189
+ */
190
+ lookup(code: string, options?: LookupOptions): Promise<ApiResponse<NdcData>>;
191
+ /**
192
+ * Look up multiple NDC codes in a single request.
193
+ *
194
+ * @param codes - Array of NDC codes (max 500)
195
+ * @param options - Response shape, include, and batch options
196
+ * @returns Batch response with results for each code
197
+ *
198
+ * @example
199
+ * ```ts
200
+ * const results = await client.ndc.lookupMany([
201
+ * "0069-0151-01",
202
+ * "0069-0151-02",
203
+ * "invalid-code"
204
+ * ]);
205
+ *
206
+ * for (const item of results.results) {
207
+ * if (item.found) {
208
+ * console.log(item.data.product_name);
209
+ * } else {
210
+ * console.log(`Not found: ${item.code}`);
211
+ * }
212
+ * }
213
+ * ```
214
+ */
215
+ lookupMany(codes: string[], options?: BatchLookupOptions): Promise<BatchResponse<NdcData>>;
216
+ }
217
+
218
+ /**
219
+ * Provider address information.
220
+ */
221
+ interface NpiAddress {
222
+ address_1?: string;
223
+ address_2?: string;
224
+ city?: string;
225
+ state?: string;
226
+ postal_code?: string;
227
+ country?: string;
228
+ telephone?: string;
229
+ fax?: string;
230
+ }
231
+ /**
232
+ * Provider taxonomy/specialty information.
233
+ */
234
+ interface NpiTaxonomy {
235
+ code: string;
236
+ description?: string;
237
+ primary?: boolean;
238
+ state?: string;
239
+ license?: string;
240
+ }
241
+ /**
242
+ * Other identifier (non-NPI) for a provider.
243
+ */
244
+ interface NpiIdentifier {
245
+ identifier: string;
246
+ type?: string;
247
+ state?: string;
248
+ issuer?: string;
249
+ }
250
+ /**
251
+ * NPI lookup result - compact shape.
252
+ */
253
+ interface NpiCompact extends DisplayField {
254
+ npi: string;
255
+ entity_type: "individual" | "organization";
256
+ name: string;
257
+ /** For individuals: first name */
258
+ first_name?: string;
259
+ /** For individuals: last name */
260
+ last_name?: string;
261
+ /** For organizations: organization name */
262
+ organization_name?: string;
263
+ }
264
+ /**
265
+ * NPI lookup result - standard shape.
266
+ */
267
+ interface NpiStandard extends NpiCompact {
268
+ credential?: string;
269
+ gender?: string;
270
+ sole_proprietor?: boolean;
271
+ enumeration_date?: string;
272
+ last_updated?: string;
273
+ status?: string;
274
+ primary_taxonomy?: NpiTaxonomy;
275
+ practice_address?: NpiAddress;
276
+ }
277
+ /**
278
+ * NPI lookup result - full shape.
279
+ */
280
+ interface NpiFull extends NpiStandard {
281
+ mailing_address?: NpiAddress;
282
+ taxonomies?: NpiTaxonomy[];
283
+ identifiers?: NpiIdentifier[];
284
+ other_names?: Array<{
285
+ type: string;
286
+ name: string;
287
+ }>;
288
+ deactivation_date?: string;
289
+ reactivation_date?: string;
290
+ }
291
+ /**
292
+ * NPI response type based on shape.
293
+ */
294
+ type NpiData = NpiCompact | NpiStandard | NpiFull;
295
+
296
+ /**
297
+ * NPI (National Provider Identifier) API endpoint.
298
+ */
299
+ declare class NpiEndpoint {
300
+ private readonly http;
301
+ constructor(http: HttpClient);
302
+ /**
303
+ * Look up a single NPI.
304
+ *
305
+ * @param npi - 10-digit NPI number
306
+ * @param options - Response shape and include options
307
+ * @returns NPI data
308
+ *
309
+ * @example
310
+ * ```ts
311
+ * const npi = await client.npi.lookup("1234567890");
312
+ * console.log(npi.data.name);
313
+ * ```
314
+ */
315
+ lookup(npi: string, options?: LookupOptions): Promise<ApiResponse<NpiData>>;
316
+ /**
317
+ * Look up multiple NPIs in a single request.
318
+ *
319
+ * @param npis - Array of 10-digit NPI numbers (max 500)
320
+ * @param options - Response shape, include, and batch options
321
+ * @returns Batch response with results for each NPI
322
+ *
323
+ * @example
324
+ * ```ts
325
+ * const results = await client.npi.lookupMany([
326
+ * "1234567890",
327
+ * "0987654321"
328
+ * ]);
329
+ * ```
330
+ */
331
+ lookupMany(npis: string[], options?: BatchLookupOptions): Promise<BatchResponse<NpiData>>;
332
+ }
333
+
334
+ /**
335
+ * RxNorm term type (TTY).
336
+ */
337
+ type RxTermType = "IN" | "PIN" | "MIN" | "SCDC" | "SCDF" | "SCDG" | "SCD" | "GPCK" | "BN" | "SBDC" | "SBDF" | "SBDG" | "SBD" | "BPCK" | "PSN" | "SY" | "TMSY" | "DF" | "ET" | "DFG";
338
+ /**
339
+ * RxNorm lookup result - compact shape.
340
+ */
341
+ interface RxNormCompact extends DisplayField {
342
+ rxcui: string;
343
+ name: string;
344
+ tty: RxTermType;
345
+ }
346
+ /**
347
+ * RxNorm lookup result - standard shape.
348
+ */
349
+ interface RxNormStandard extends RxNormCompact {
350
+ synonym?: string;
351
+ suppress?: string;
352
+ language?: string;
353
+ prescribable?: boolean;
354
+ ingredients?: Array<{
355
+ rxcui: string;
356
+ name: string;
357
+ }>;
358
+ }
359
+ /**
360
+ * RxNorm lookup result - full shape.
361
+ */
362
+ interface RxNormFull extends RxNormStandard {
363
+ dose_form?: {
364
+ rxcui: string;
365
+ name: string;
366
+ };
367
+ brands?: Array<{
368
+ rxcui: string;
369
+ name: string;
370
+ }>;
371
+ related?: Array<{
372
+ rxcui: string;
373
+ name: string;
374
+ tty: RxTermType;
375
+ relation: string;
376
+ }>;
377
+ ndcs?: string[];
378
+ }
379
+ /**
380
+ * RxNorm response type based on shape.
381
+ */
382
+ type RxNormData = RxNormCompact | RxNormStandard | RxNormFull;
383
+
384
+ /**
385
+ * RxNorm API endpoint.
386
+ */
387
+ declare class RxNormEndpoint {
388
+ private readonly http;
389
+ constructor(http: HttpClient);
390
+ /**
391
+ * Look up a single RxCUI.
392
+ *
393
+ * @param rxcui - RxNorm Concept Unique Identifier
394
+ * @param options - Response shape and include options
395
+ * @returns RxNorm data
396
+ *
397
+ * @example
398
+ * ```ts
399
+ * const rx = await client.rxnorm.lookup("213169");
400
+ * console.log(rx.data.name); // "atorvastatin 10 MG Oral Tablet"
401
+ * ```
402
+ */
403
+ lookup(rxcui: string, options?: LookupOptions): Promise<ApiResponse<RxNormData>>;
404
+ /**
405
+ * Look up multiple RxCUIs in a single request.
406
+ *
407
+ * @param rxcuis - Array of RxCUIs (max 500)
408
+ * @param options - Response shape, include, and batch options
409
+ * @returns Batch response with results for each RxCUI
410
+ */
411
+ lookupMany(rxcuis: string[], options?: BatchLookupOptions): Promise<BatchResponse<RxNormData>>;
412
+ }
413
+
414
+ /**
415
+ * LOINC lookup result - compact shape.
416
+ */
417
+ interface LoincCompact extends DisplayField {
418
+ loinc_num: string;
419
+ long_common_name: string;
420
+ component: string;
421
+ }
422
+ /**
423
+ * LOINC lookup result - standard shape.
424
+ */
425
+ interface LoincStandard extends LoincCompact {
426
+ short_name?: string;
427
+ class?: string;
428
+ class_type?: number;
429
+ property?: string;
430
+ time_aspect?: string;
431
+ system?: string;
432
+ scale_type?: string;
433
+ method_type?: string;
434
+ status?: string;
435
+ order_obs?: string;
436
+ }
437
+ /**
438
+ * LOINC lookup result - full shape.
439
+ */
440
+ interface LoincFull extends LoincStandard {
441
+ definition_description?: string;
442
+ consumer_name?: string;
443
+ survey_question_text?: string;
444
+ survey_question_source?: string;
445
+ units_required?: string;
446
+ submitted_units?: string;
447
+ related_names_2?: string;
448
+ example_units?: string;
449
+ example_ucum_units?: string;
450
+ example_si_ucum_units?: string;
451
+ status_reason?: string;
452
+ status_text?: string;
453
+ change_reason_public?: string;
454
+ common_test_rank?: number;
455
+ common_order_rank?: number;
456
+ hl7_field_subfield_id?: string;
457
+ external_copyright_notice?: string;
458
+ panel_type?: string;
459
+ ask_at_order_entry?: string;
460
+ associated_observations?: string;
461
+ version_first_released?: string;
462
+ version_last_changed?: string;
463
+ }
464
+ /**
465
+ * LOINC response type based on shape.
466
+ */
467
+ type LoincData = LoincCompact | LoincStandard | LoincFull;
468
+
469
+ /**
470
+ * LOINC API endpoint.
471
+ */
472
+ declare class LoincEndpoint {
473
+ private readonly http;
474
+ constructor(http: HttpClient);
475
+ /**
476
+ * Look up a single LOINC code.
477
+ *
478
+ * @param loincNum - LOINC number (e.g., "2345-7")
479
+ * @param options - Response shape and include options
480
+ * @returns LOINC data
481
+ *
482
+ * @example
483
+ * ```ts
484
+ * const loinc = await client.loinc.lookup("2345-7");
485
+ * console.log(loinc.data.long_common_name); // "Glucose [Mass/volume] in Serum or Plasma"
486
+ * ```
487
+ */
488
+ lookup(loincNum: string, options?: LookupOptions): Promise<ApiResponse<LoincData>>;
489
+ /**
490
+ * Look up multiple LOINC codes in a single request.
491
+ *
492
+ * @param loincNums - Array of LOINC numbers (max 500)
493
+ * @param options - Response shape, include, and batch options
494
+ * @returns Batch response with results for each LOINC
495
+ */
496
+ lookupMany(loincNums: string[], options?: BatchLookupOptions): Promise<BatchResponse<LoincData>>;
497
+ }
498
+
499
+ /**
500
+ * ICD-10 code type.
501
+ */
502
+ type Icd10Type = "cm" | "pcs";
503
+ /**
504
+ * ICD-10 lookup result - compact shape.
505
+ */
506
+ interface Icd10Compact extends DisplayField {
507
+ code: string;
508
+ type: Icd10Type;
509
+ description: string;
510
+ }
511
+ /**
512
+ * ICD-10 lookup result - standard shape.
513
+ */
514
+ interface Icd10Standard extends Icd10Compact {
515
+ long_description?: string;
516
+ chapter?: string;
517
+ chapter_description?: string;
518
+ section?: string;
519
+ section_description?: string;
520
+ billable?: boolean;
521
+ /** ICD-10-CM specific */
522
+ is_header?: boolean;
523
+ /** ICD-10-PCS specific */
524
+ body_system?: string;
525
+ root_operation?: string;
526
+ }
527
+ /**
528
+ * ICD-10 lookup result - full shape.
529
+ */
530
+ interface Icd10Full extends Icd10Standard {
531
+ /** ICD-10-CM specific */
532
+ includes?: string[];
533
+ excludes1?: string[];
534
+ excludes2?: string[];
535
+ code_first?: string[];
536
+ use_additional?: string[];
537
+ /** ICD-10-PCS specific */
538
+ approach?: string;
539
+ device?: string;
540
+ qualifier?: string;
541
+ /** Effective dates */
542
+ effective_date?: string;
543
+ end_date?: string;
544
+ }
545
+ /**
546
+ * ICD-10 response type based on shape.
547
+ */
548
+ type Icd10Data = Icd10Compact | Icd10Standard | Icd10Full;
549
+
550
+ /**
551
+ * ICD-10 API endpoint.
552
+ */
553
+ declare class Icd10Endpoint {
554
+ private readonly http;
555
+ constructor(http: HttpClient);
556
+ /**
557
+ * Look up a single ICD-10-CM code (diagnoses).
558
+ *
559
+ * @param code - ICD-10-CM code (e.g., "E11.9")
560
+ * @param options - Response shape and include options
561
+ * @returns ICD-10 data
562
+ *
563
+ * @example
564
+ * ```ts
565
+ * const icd = await client.icd10.lookupCm("E11.9");
566
+ * console.log(icd.data.description); // "Type 2 diabetes mellitus without complications"
567
+ * ```
568
+ */
569
+ lookupCm(code: string, options?: LookupOptions): Promise<ApiResponse<Icd10Data>>;
570
+ /**
571
+ * Look up a single ICD-10-PCS code (procedures).
572
+ *
573
+ * @param code - ICD-10-PCS code (e.g., "0BJ08ZZ")
574
+ * @param options - Response shape and include options
575
+ * @returns ICD-10 data
576
+ *
577
+ * @example
578
+ * ```ts
579
+ * const icd = await client.icd10.lookupPcs("0BJ08ZZ");
580
+ * console.log(icd.data.description);
581
+ * ```
582
+ */
583
+ lookupPcs(code: string, options?: LookupOptions): Promise<ApiResponse<Icd10Data>>;
584
+ /**
585
+ * Look up multiple ICD-10-CM codes in a single request.
586
+ *
587
+ * @param codes - Array of ICD-10-CM codes (max 500)
588
+ * @param options - Response shape, include, and batch options
589
+ * @returns Batch response with results for each code
590
+ */
591
+ lookupCmMany(codes: string[], options?: BatchLookupOptions): Promise<BatchResponse<Icd10Data>>;
592
+ /**
593
+ * Look up multiple ICD-10-PCS codes in a single request.
594
+ *
595
+ * @param codes - Array of ICD-10-PCS codes (max 500)
596
+ * @param options - Response shape, include, and batch options
597
+ * @returns Batch response with results for each code
598
+ */
599
+ lookupPcsMany(codes: string[], options?: BatchLookupOptions): Promise<BatchResponse<Icd10Data>>;
600
+ }
601
+
602
+ /**
603
+ * CVX vaccine code lookup result - compact shape.
604
+ */
605
+ interface CvxCompact extends DisplayField {
606
+ cvx_code: string;
607
+ short_description: string;
608
+ }
609
+ /**
610
+ * CVX vaccine code lookup result - standard shape.
611
+ */
612
+ interface CvxStandard extends CvxCompact {
613
+ full_vaccine_name: string;
614
+ notes?: string;
615
+ status: "Active" | "Inactive" | "Never Active" | "Pending";
616
+ last_updated?: string;
617
+ }
618
+ /**
619
+ * CVX vaccine code lookup result - full shape.
620
+ */
621
+ interface CvxFull extends CvxStandard {
622
+ vaccine_group?: string;
623
+ cdc_product_name?: string;
624
+ dose_number?: string;
625
+ forecast_vaccine_group?: string;
626
+ }
627
+ /**
628
+ * CVX response type based on shape.
629
+ */
630
+ type CvxData = CvxCompact | CvxStandard | CvxFull;
631
+
632
+ /**
633
+ * CVX (Vaccine Codes) API endpoint.
634
+ */
635
+ declare class CvxEndpoint {
636
+ private readonly http;
637
+ constructor(http: HttpClient);
638
+ /**
639
+ * Look up a single CVX code.
640
+ *
641
+ * @param cvxCode - CVX vaccine code
642
+ * @param options - Response shape and include options
643
+ * @returns CVX data
644
+ *
645
+ * @example
646
+ * ```ts
647
+ * const cvx = await client.cvx.lookup("208");
648
+ * console.log(cvx.data.short_description); // "COVID-19, mRNA, LNP-S, PF, 30 mcg/0.3 mL dose"
649
+ * ```
650
+ */
651
+ lookup(cvxCode: string, options?: LookupOptions): Promise<ApiResponse<CvxData>>;
652
+ /**
653
+ * Look up multiple CVX codes in a single request.
654
+ *
655
+ * @param cvxCodes - Array of CVX codes (max 500)
656
+ * @param options - Response shape, include, and batch options
657
+ * @returns Batch response with results for each code
658
+ */
659
+ lookupMany(cvxCodes: string[], options?: BatchLookupOptions): Promise<BatchResponse<CvxData>>;
660
+ }
661
+
662
+ /**
663
+ * MVX vaccine manufacturer lookup result - compact shape.
664
+ */
665
+ interface MvxCompact extends DisplayField {
666
+ mvx_code: string;
667
+ manufacturer_name: string;
668
+ }
669
+ /**
670
+ * MVX vaccine manufacturer lookup result - standard shape.
671
+ */
672
+ interface MvxStandard extends MvxCompact {
673
+ notes?: string;
674
+ status: "Active" | "Inactive";
675
+ last_updated?: string;
676
+ }
677
+ /**
678
+ * MVX vaccine manufacturer lookup result - full shape.
679
+ */
680
+ interface MvxFull extends MvxStandard {
681
+ vaccines?: Array<{
682
+ cvx_code: string;
683
+ vaccine_name: string;
684
+ }>;
685
+ }
686
+ /**
687
+ * MVX response type based on shape.
688
+ */
689
+ type MvxData = MvxCompact | MvxStandard | MvxFull;
690
+
691
+ /**
692
+ * MVX (Vaccine Manufacturer Codes) API endpoint.
693
+ */
694
+ declare class MvxEndpoint {
695
+ private readonly http;
696
+ constructor(http: HttpClient);
697
+ /**
698
+ * Look up a single MVX code.
699
+ *
700
+ * @param mvxCode - MVX manufacturer code
701
+ * @param options - Response shape and include options
702
+ * @returns MVX data
703
+ *
704
+ * @example
705
+ * ```ts
706
+ * const mvx = await client.mvx.lookup("PFR");
707
+ * console.log(mvx.data.manufacturer_name); // "Pfizer, Inc"
708
+ * ```
709
+ */
710
+ lookup(mvxCode: string, options?: LookupOptions): Promise<ApiResponse<MvxData>>;
711
+ /**
712
+ * Look up multiple MVX codes in a single request.
713
+ *
714
+ * @param mvxCodes - Array of MVX codes (max 500)
715
+ * @param options - Response shape, include, and batch options
716
+ * @returns Batch response with results for each code
717
+ */
718
+ lookupMany(mvxCodes: string[], options?: BatchLookupOptions): Promise<BatchResponse<MvxData>>;
719
+ }
720
+
721
+ /**
722
+ * FDA Label lookup result - compact shape.
723
+ */
724
+ interface FdaLabelCompact extends DisplayField {
725
+ set_id: string;
726
+ product_name: string;
727
+ labeler_name: string;
728
+ }
729
+ /**
730
+ * FDA Label lookup result - standard shape.
731
+ */
732
+ interface FdaLabelStandard extends FdaLabelCompact {
733
+ version?: number;
734
+ effective_time?: string;
735
+ product_type?: string;
736
+ route?: string[];
737
+ substance_name?: string[];
738
+ indications_and_usage?: string;
739
+ dosage_and_administration?: string;
740
+ }
741
+ /**
742
+ * FDA Label lookup result - full shape.
743
+ */
744
+ interface FdaLabelFull extends FdaLabelStandard {
745
+ spl_id?: string;
746
+ document_type?: string;
747
+ warnings?: string;
748
+ precautions?: string;
749
+ contraindications?: string;
750
+ adverse_reactions?: string;
751
+ drug_interactions?: string;
752
+ overdosage?: string;
753
+ clinical_pharmacology?: string;
754
+ mechanism_of_action?: string;
755
+ pharmacodynamics?: string;
756
+ pharmacokinetics?: string;
757
+ how_supplied?: string;
758
+ storage_and_handling?: string;
759
+ boxed_warning?: string;
760
+ pregnancy?: string;
761
+ nursing_mothers?: string;
762
+ pediatric_use?: string;
763
+ geriatric_use?: string;
764
+ }
765
+ /**
766
+ * FDA Label response type based on shape.
767
+ */
768
+ type FdaLabelData = FdaLabelCompact | FdaLabelStandard | FdaLabelFull;
769
+
770
+ /**
771
+ * FDA Labels API endpoint.
772
+ */
773
+ declare class FdaLabelsEndpoint {
774
+ private readonly http;
775
+ constructor(http: HttpClient);
776
+ /**
777
+ * Look up FDA label by Set ID.
778
+ *
779
+ * @param setId - FDA SPL Set ID
780
+ * @param options - Response shape and include options
781
+ * @returns FDA Label data
782
+ *
783
+ * @example
784
+ * ```ts
785
+ * const label = await client.fdaLabels.lookup("abc123-def456");
786
+ * console.log(label.data.indications_and_usage);
787
+ * ```
788
+ */
789
+ lookup(setId: string, options?: LookupOptions): Promise<ApiResponse<FdaLabelData>>;
790
+ /**
791
+ * Look up FDA label by NDC code.
792
+ *
793
+ * @param ndc - NDC code
794
+ * @param options - Response shape and include options
795
+ * @returns FDA Label data
796
+ *
797
+ * @example
798
+ * ```ts
799
+ * const label = await client.fdaLabels.lookupByNdc("0069-0151-01");
800
+ * console.log(label.data.product_name);
801
+ * ```
802
+ */
803
+ lookupByNdc(ndc: string, options?: LookupOptions): Promise<ApiResponse<FdaLabelData>>;
804
+ /**
805
+ * Look up multiple FDA labels by Set IDs in a single request.
806
+ *
807
+ * @param setIds - Array of Set IDs (max 500)
808
+ * @param options - Response shape, include, and batch options
809
+ * @returns Batch response with results for each Set ID
810
+ */
811
+ lookupMany(setIds: string[], options?: BatchLookupOptions): Promise<BatchResponse<FdaLabelData>>;
812
+ }
813
+
814
+ /**
815
+ * Configuration options for the FHIRfly client.
816
+ */
817
+ interface FhirflyConfig {
818
+ /**
819
+ * Your FHIRfly API key.
820
+ * Get one at https://fhirfly.io/dashboard
821
+ */
822
+ apiKey: string;
823
+ /**
824
+ * Base URL for the API.
825
+ * @default "https://api.fhirfly.io"
826
+ */
827
+ baseUrl?: string;
828
+ /**
829
+ * Request timeout in milliseconds.
830
+ * @default 30000
831
+ */
832
+ timeout?: number;
833
+ /**
834
+ * Maximum number of retry attempts for failed requests.
835
+ * @default 3
836
+ */
837
+ maxRetries?: number;
838
+ /**
839
+ * Base delay between retries in milliseconds (exponential backoff).
840
+ * @default 1000
841
+ */
842
+ retryDelay?: number;
843
+ }
844
+ /**
845
+ * FHIRfly API client.
846
+ *
847
+ * Provides access to healthcare reference data including drug codes (NDC, RxNorm),
848
+ * provider identifiers (NPI), lab codes (LOINC), diagnosis codes (ICD-10),
849
+ * vaccine codes (CVX, MVX), and FDA drug labels.
850
+ *
851
+ * @example
852
+ * ```ts
853
+ * import { Fhirfly } from "@fhirfly/sdk";
854
+ *
855
+ * const client = new Fhirfly({ apiKey: "your-api-key" });
856
+ *
857
+ * // Look up a drug by NDC
858
+ * const ndc = await client.ndc.lookup("0069-0151-01");
859
+ * console.log(ndc.data.product_name); // "Lipitor"
860
+ *
861
+ * // Look up a provider by NPI
862
+ * const npi = await client.npi.lookup("1234567890");
863
+ * console.log(npi.data.name);
864
+ *
865
+ * // Batch lookups
866
+ * const results = await client.ndc.lookupMany([
867
+ * "0069-0151-01",
868
+ * "0069-0151-02"
869
+ * ]);
870
+ * ```
871
+ */
872
+ declare class Fhirfly {
873
+ private readonly http;
874
+ /**
875
+ * NDC (National Drug Code) lookups.
876
+ */
877
+ readonly ndc: NdcEndpoint;
878
+ /**
879
+ * NPI (National Provider Identifier) lookups.
880
+ */
881
+ readonly npi: NpiEndpoint;
882
+ /**
883
+ * RxNorm drug terminology lookups.
884
+ */
885
+ readonly rxnorm: RxNormEndpoint;
886
+ /**
887
+ * LOINC laboratory and clinical observation code lookups.
888
+ */
889
+ readonly loinc: LoincEndpoint;
890
+ /**
891
+ * ICD-10 diagnosis and procedure code lookups.
892
+ */
893
+ readonly icd10: Icd10Endpoint;
894
+ /**
895
+ * CVX vaccine code lookups.
896
+ */
897
+ readonly cvx: CvxEndpoint;
898
+ /**
899
+ * MVX vaccine manufacturer code lookups.
900
+ */
901
+ readonly mvx: MvxEndpoint;
902
+ /**
903
+ * FDA drug label lookups.
904
+ */
905
+ readonly fdaLabels: FdaLabelsEndpoint;
906
+ /**
907
+ * Create a new FHIRfly client.
908
+ *
909
+ * @param config - Client configuration
910
+ * @throws {Error} If apiKey is not provided
911
+ */
912
+ constructor(config: FhirflyConfig);
913
+ }
914
+
915
+ /**
916
+ * Base error class for all FHIRfly SDK errors.
917
+ */
918
+ declare class FhirflyError extends Error {
919
+ constructor(message: string);
920
+ }
921
+ /**
922
+ * Error thrown when the API returns an error response.
923
+ */
924
+ declare class ApiError extends FhirflyError {
925
+ readonly statusCode: number;
926
+ readonly code?: string;
927
+ readonly details?: unknown;
928
+ constructor(message: string, statusCode: number, code?: string, details?: unknown);
929
+ }
930
+ /**
931
+ * Error thrown when authentication fails (401).
932
+ */
933
+ declare class AuthenticationError extends ApiError {
934
+ constructor(message?: string);
935
+ }
936
+ /**
937
+ * Error thrown when a resource is not found (404).
938
+ */
939
+ declare class NotFoundError extends ApiError {
940
+ readonly code_type: string;
941
+ readonly code_value: string;
942
+ constructor(codeType: string, codeValue: string);
943
+ }
944
+ /**
945
+ * Error thrown when the request is invalid (400).
946
+ */
947
+ declare class ValidationError extends ApiError {
948
+ readonly field?: string;
949
+ constructor(message: string, field?: string);
950
+ }
951
+ /**
952
+ * Error thrown when rate limited (429).
953
+ */
954
+ declare class RateLimitError extends ApiError {
955
+ readonly retryAfter?: number;
956
+ readonly limit?: number;
957
+ readonly remaining?: number;
958
+ readonly reset?: Date;
959
+ constructor(message?: string, retryAfter?: number, limit?: number, remaining?: number, reset?: Date);
960
+ }
961
+ /**
962
+ * Error thrown when quota is exceeded (429 with quota context).
963
+ */
964
+ declare class QuotaExceededError extends ApiError {
965
+ readonly quotaLimit?: number;
966
+ readonly quotaUsed?: number;
967
+ readonly quotaResetDate?: Date;
968
+ constructor(message?: string, quotaLimit?: number, quotaUsed?: number, quotaResetDate?: Date);
969
+ }
970
+ /**
971
+ * Error thrown when the server returns a 5xx error.
972
+ */
973
+ declare class ServerError extends ApiError {
974
+ constructor(message?: string, statusCode?: number);
975
+ }
976
+ /**
977
+ * Error thrown when a network error occurs.
978
+ */
979
+ declare class NetworkError extends FhirflyError {
980
+ readonly cause?: Error;
981
+ constructor(message?: string, cause?: Error);
982
+ }
983
+ /**
984
+ * Error thrown when a request times out.
985
+ */
986
+ declare class TimeoutError extends FhirflyError {
987
+ readonly timeoutMs: number;
988
+ constructor(timeoutMs: number);
989
+ }
990
+
991
+ export { type ActiveIngredient, ApiError, type ApiResponse, AuthenticationError, type BatchLookupOptions, type BatchResponse, type BatchResultItem, type CvxCompact, type CvxData, type CvxFull, type CvxStandard, type DisplayField, type FdaLabelCompact, type FdaLabelData, type FdaLabelFull, type FdaLabelStandard, Fhirfly, type FhirflyConfig, FhirflyError, type Icd10Compact, type Icd10Data, type Icd10Full, type Icd10Standard, type Icd10Type, type IncludeOption, type LegalInfo, type LoincCompact, type LoincData, type LoincFull, type LoincStandard, type LookupOptions, type MvxCompact, type MvxData, type MvxFull, type MvxStandard, type NdcCompact, type NdcData, type NdcFull, type NdcPackaging, type NdcStandard, NetworkError, NotFoundError, type NpiAddress, type NpiCompact, type NpiData, type NpiFull, type NpiIdentifier, type NpiStandard, type NpiTaxonomy, QuotaExceededError, RateLimitError, type ResponseMeta, type ResponseShape, type RxNormCompact, type RxNormData, type RxNormFull, type RxNormStandard, type RxTermType, ServerError, TimeoutError, ValidationError };