@precisa-saude/fhir 0.21.0 → 0.22.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.
@@ -8,7 +8,7 @@ import {
8
8
  isValidCode,
9
9
  loincToCode,
10
10
  normalizeCode
11
- } from "./chunk-6EAXNJAN.js";
11
+ } from "./chunk-BN4XL2PL.js";
12
12
  import {
13
13
  validateFHIRImportBundle
14
14
  } from "./chunk-N3ZCOLG2.js";
@@ -162,4 +162,4 @@ export {
162
162
  mapFHIRObservationToInternal,
163
163
  processImportBundle
164
164
  };
165
- //# sourceMappingURL=chunk-DZZKR2XS.js.map
165
+ //# sourceMappingURL=chunk-MRAMTSD4.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-A6HR4XDK.js";
5
5
  import {
6
6
  codeToLoinc
7
- } from "./chunk-6EAXNJAN.js";
7
+ } from "./chunk-BN4XL2PL.js";
8
8
  import {
9
9
  getDefaultUnit,
10
10
  unitToUCUM
@@ -259,4 +259,4 @@ export {
259
259
  userProfileToFHIR,
260
260
  labResultToFHIRBundle
261
261
  };
262
- //# sourceMappingURL=chunk-OP6MZT45.js.map
262
+ //# sourceMappingURL=chunk-YF3262UR.js.map
@@ -4,7 +4,7 @@
4
4
  var _chunkOR67NJDZcjs = require('./chunk-OR67NJDZ.cjs');
5
5
 
6
6
 
7
- var _chunkSJJRJT64cjs = require('./chunk-SJJRJT64.cjs');
7
+ var _chunk6WXSJGXFcjs = require('./chunk-6WXSJGXF.cjs');
8
8
 
9
9
 
10
10
 
@@ -34,7 +34,7 @@ function interpretationDisplay(flag) {
34
34
  }
35
35
  }
36
36
  function labObservationToFHIR(observation, patientId, laboratoryName) {
37
- const loincCode = _chunkSJJRJT64cjs.codeToLoinc.call(void 0, observation.biomarkerCode);
37
+ const loincCode = _chunk6WXSJGXFcjs.codeToLoinc.call(void 0, observation.biomarkerCode);
38
38
  const sourceUnit = observation.unit || _chunkMJ254F5Kcjs.getDefaultUnit.call(void 0, observation.biomarkerCode) || observation.unit;
39
39
  const ucumUnit = _chunkMJ254F5Kcjs.unitToUCUM.call(void 0, sourceUnit);
40
40
  const isQualitative = observation.isQualitative || typeof observation.value === "string";
@@ -259,4 +259,4 @@ function labResultToFHIRBundle(report, observations, userProfile) {
259
259
 
260
260
 
261
261
  exports.labObservationToFHIR = labObservationToFHIR; exports.labReportToFHIR = labReportToFHIR; exports.userProfileToFHIR = userProfileToFHIR; exports.labResultToFHIRBundle = labResultToFHIRBundle;
262
- //# sourceMappingURL=chunk-YUUEXKQQ.cjs.map
262
+ //# sourceMappingURL=chunk-YGPGNIXK.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/fhir-brasil/fhir-brasil/packages/core/dist/chunk-YUUEXKQQ.cjs","../src/converter.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACA;ACOA,SAAS,kBAAA,CAAmB,IAAA,EAAoB;AAC9C,EAAA,OAAA,CAAQ,IAAA,EAAM;AAAA,IACZ,KAAK,GAAA;AACH,MAAA,OAAO,GAAA;AAAA;AAAA,IACT,KAAK,GAAA;AACH,MAAA,OAAO,GAAA;AAAA;AAAA,IACT,OAAA;AACE,MAAA,OAAO,GAAA;AAAA,EACX;AACF;AAKA,SAAS,qBAAA,CAAsB,IAAA,EAAoB;AACjD,EAAA,OAAA,CAAQ,IAAA,EAAM;AAAA,IACZ,KAAK,GAAA;AACH,MAAA,OAAO,MAAA;AAAA,IACT,KAAK,GAAA;AACH,MAAA,OAAO,KAAA;AAAA,IACT,OAAA;AACE,MAAA,OAAO,QAAA;AAAA,EACX;AACF;AAKO,SAAS,oBAAA,CACd,WAAA,EACA,SAAA,EACA,cAAA,EACiB;AACjB,EAAA,MAAM,UAAA,EAAY,2CAAA,WAAY,CAAY,aAAa,CAAA;AAEvD,EAAA,MAAM,WAAA,EACJ,WAAA,CAAY,KAAA,GAAQ,8CAAA,WAAe,CAAY,aAAa,EAAA,GAAK,WAAA,CAAY,IAAA;AAC/E,EAAA,MAAM,SAAA,EAAW,0CAAA,UAAqB,CAAA;AACtC,EAAA,MAAM,cAAA,EAAgB,WAAA,CAAY,cAAA,GAAiB,OAAO,WAAA,CAAY,MAAA,IAAU,QAAA;AAGhF,EAAA,MAAM,QAAA,EAA2B;AAAA,IAC/B,QAAA,EAAU;AAAA,MACR;AAAA,QACE,MAAA,EAAQ;AAAA,UACN;AAAA,YACE,IAAA,EAAM,YAAA;AAAA,YACN,OAAA,EAAS,YAAA;AAAA,YACT,MAAA,EAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,IAAA,EAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMJ,MAAA,EAAQ;AAAA,QACN,GAAI,UAAA,EACA;AAAA,UACE;AAAA,YACE,IAAA,EAAM,SAAA;AAAA,YACN,OAAA,EAAS,WAAA,CAAY,aAAA;AAAA,YACrB,MAAA,EAAQ;AAAA,UACV;AAAA,QACF,EAAA,EACA,CAAC,CAAA;AAAA,QACL;AAAA,UACE,IAAA,EAAM,WAAA,CAAY,aAAA;AAAA,UAClB,OAAA,EAAS,WAAA,CAAY,aAAA;AAAA,UACrB,MAAA,EAAQ;AAAA,QACV;AAAA,MACF,CAAA;AAAA,MACA,IAAA,EAAM,WAAA,CAAY;AAAA,IACpB,CAAA;AAAA,IACA,iBAAA,EAAmB,WAAA,CAAY,cAAA;AAAA,IAC/B,EAAA,EAAI,CAAA,EAAA;AACJ,IAAA;AACE,MAAA;AACE,QAAA;AAAQ,UAAA;AACN,YAAA;AAC2C,YAAA;AACM,YAAA;AACvC,UAAA;AAEZ,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACE,MAAA;AACF,IAAA;AACF,EAAA;AAGI,EAAA;AACF,IAAA;AACK,EAAA;AACL,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AAGI,IAAA;AACF,MAAA;AACE,QAAA;AAAA,UAAA;AACQ,YAAA;AACE,YAAA;AACE,YAAA;AACF,YAAA;AACa,UAAA;AACrB,UAAA;AACK,YAAA;AACG,YAAA;AACE,YAAA;AACF,YAAA;AACa,UAAA;AAEvB,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AAEO,EAAA;AACT;AAKgB;AAMV,EAAA;AACJ,EAAA;AACO,IAAA;AACH,MAAA;AACA,MAAA;AACG,IAAA;AACH,MAAA;AACA,MAAA;AACG,IAAA;AACH,MAAA;AACA,MAAA;AACF,IAAA;AACE,MAAA;AACJ,EAAA;AAEO,EAAA;AACL,IAAA;AACE,MAAA;AACE,QAAA;AAAQ,UAAA;AACN,YAAA;AACQ,YAAA;AACG,YAAA;AACD,UAAA;AAEZ,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AAAA,UAAA;AACQ;AAAA,UAAA;AACG,UAAA;AAEX,QAAA;AACF,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AAIA,IAAA;AAGQ,MAAA;AACE,QAAA;AAAQ,UAAA;AACN,YAAA;AACQ,YAAA;AACG,YAAA;AACD,UAAA;AAEZ,QAAA;AACF,MAAA;AAEF,IAAA;AACN,IAAA;AACI,IAAA;AACJ,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACE,MAAA;AACF,IAAA;AACF,EAAA;AACF;AAMgB;AACR,EAAA;AACA,EAAA;AACA,EAAA;AAEC,EAAA;AACL,IAAA;AAEM,MAAA;AACE,QAAA;AACA,QAAA;AACA,QAAA;AAAM,UAAA;AAGgB,UAAA;AAEtB,QAAA;AACA,QAAA;AACA,QAAA;AACF,MAAA;AAEF,IAAA;AACJ,IAAA;AACA,IAAA;AACI,IAAA;AACJ,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACA,IAAA;AAEQ,MAAA;AACA,MAAA;AACJ,IAAA;AAEQ,MAAA;AACA,MAAA;AAEN,IAAA;AACR,EAAA;AACF;AAMgB;AAKR,EAAA;AAGA,EAAA;AACJ,IAAA;AACA,IAAA;AACI,MAAA;AACF,MAAA;AACA,MAAA;AACF,IAAA;AACA,EAAA;AAEI,EAAA;AACH,IAAA;AACH,EAAA;AAGM,EAAA;AAGA,EAAA;AAEC,EAAA;AACL,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACG,MAAA;AACL,IAAA;AACA,IAAA;AACA,IAAA;AACF,EAAA;AACF;ADvES;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/fhir-brasil/fhir-brasil/packages/core/dist/chunk-YUUEXKQQ.cjs","sourcesContent":[null,"/**\n * FHIR Converter\n *\n * Converts lab results to FHIR R4 DiagnosticReport and Observation resources.\n * See: https://hl7.org/fhir/diagnosticreport.html\n */\n\nimport { codeToLoinc } from './biomarkers';\nimport { BIOMARKER_CODE_SYSTEM, LOINC_SYSTEM } from './code-systems';\nimport type { FHIRBundle, FHIRDiagnosticReport, FHIRObservation, FHIRPatient } from './fhir-types';\nimport type { Flag, LabObservationData, LabReportData, UserProfileData } from './types';\nimport { getDefaultUnit, unitToUCUM } from './units';\n\n// Re-export all types and functions\nexport * from './fhir-types';\n\n/**\n * Convert Flag to FHIR interpretation code\n */\nfunction interpretationCode(flag: Flag): string {\n switch (flag) {\n case 'H':\n return 'H'; // High\n case 'L':\n return 'L'; // Low\n default:\n return 'N'; // Normal\n }\n}\n\n/**\n * Convert Flag to FHIR interpretation display\n */\nfunction interpretationDisplay(flag: Flag): string {\n switch (flag) {\n case 'H':\n return 'High';\n case 'L':\n return 'Low';\n default:\n return 'Normal';\n }\n}\n\n/**\n * Convert generic lab observation to FHIR Observation\n */\nexport function labObservationToFHIR(\n observation: LabObservationData,\n patientId: string,\n laboratoryName?: string,\n): FHIRObservation {\n const loincCode = codeToLoinc(observation.biomarkerCode);\n // Use default unit if source unit is empty\n const sourceUnit =\n observation.unit || getDefaultUnit(observation.biomarkerCode) || observation.unit;\n const ucumUnit = unitToUCUM(sourceUnit);\n const isQualitative = observation.isQualitative || typeof observation.value === 'string';\n\n // Base observation structure\n const fhirObs: FHIRObservation = {\n category: [\n {\n coding: [\n {\n code: 'laboratory',\n display: 'Laboratory',\n system: 'http://terminology.hl7.org/CodeSystem/observation-category',\n },\n ],\n },\n ],\n code: {\n // Sem LOINC, o coding LOINC simplesmente não sai. Antes ia `99999-9`,\n // que não é código LOINC nenhum: publicava sob `http://loinc.org` uma\n // afirmação falsa, e quem consumisse o bundle confiando no system\n // trataria aquilo como código de verdade. Composição corporal, densidade\n // óssea e escore de cálcio não têm LOINC, e o certo é a lacuna explícita.\n coding: [\n ...(loincCode\n ? [\n {\n code: loincCode,\n display: observation.biomarkerName,\n system: LOINC_SYSTEM,\n },\n ]\n : []),\n {\n code: observation.biomarkerCode,\n display: observation.biomarkerName,\n system: BIOMARKER_CODE_SYSTEM,\n },\n ],\n text: observation.biomarkerName,\n },\n effectiveDateTime: observation.collectionDate,\n id: `${observation.reportId}-${observation.biomarkerCode}`,\n interpretation: [\n {\n coding: [\n {\n code: interpretationCode(observation.flag),\n display: interpretationDisplay(observation.flag),\n system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation',\n },\n ],\n },\n ],\n performer: laboratoryName ? [{ display: laboratoryName }] : undefined,\n resourceType: 'Observation',\n status: 'final',\n subject: {\n reference: `Patient/${patientId}`,\n },\n };\n\n // Add value based on type (qualitative = string, quantitative = number)\n if (isQualitative) {\n fhirObs.valueString = String(observation.value);\n } else {\n fhirObs.valueQuantity = {\n code: ucumUnit,\n system: 'http://unitsofmeasure.org',\n unit: sourceUnit,\n value: observation.value as number,\n };\n\n // Reference range only applies to quantitative values\n if (observation.referenceMin !== undefined && observation.referenceMax !== undefined) {\n fhirObs.referenceRange = [\n {\n high: {\n code: ucumUnit,\n system: 'http://unitsofmeasure.org',\n unit: sourceUnit,\n value: observation.referenceMax,\n },\n low: {\n code: ucumUnit,\n system: 'http://unitsofmeasure.org',\n unit: sourceUnit,\n value: observation.referenceMin,\n },\n },\n ];\n }\n }\n\n return fhirObs;\n}\n\n/**\n * Convert generic lab report to FHIR DiagnosticReport\n */\nexport function labReportToFHIR(\n report: LabReportData,\n patientId: string,\n observationIds: string[],\n): FHIRDiagnosticReport {\n // Map processing status to FHIR status\n let status: FHIRDiagnosticReport['status'];\n switch (report.processingStatus) {\n case 'complete':\n status = 'final';\n break;\n case 'partial':\n status = 'partial';\n break;\n case 'pending_review':\n status = 'preliminary';\n break;\n default:\n status = 'final';\n }\n\n return {\n category: [\n {\n coding: [\n {\n code: 'LAB',\n display: 'Laboratory',\n system: 'http://terminology.hl7.org/CodeSystem/v2-0074',\n },\n ],\n },\n ],\n code: {\n coding: [\n {\n code: '11502-2', // Laboratory report\n display: 'Laboratory report',\n system: 'http://loinc.org',\n },\n ],\n text: 'Laboratory Results',\n },\n conclusion:\n report.overallStatus === 'NORMAL'\n ? 'All results within normal limits'\n : 'One or more abnormal results detected',\n conclusionCode:\n report.overallStatus === 'ANORMAL'\n ? [\n {\n coding: [\n {\n code: 'A',\n display: 'Abnormal',\n system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation',\n },\n ],\n },\n ]\n : undefined,\n effectiveDateTime: report.collectionDate,\n id: report.reportId,\n issued: report.createdAt,\n performer: report.laboratoryName ? [{ display: report.laboratoryName }] : undefined,\n resourceType: 'DiagnosticReport',\n result: observationIds.map((id) => ({ reference: `Observation/${id}` })),\n status,\n subject: {\n reference: `Patient/${patientId}`,\n },\n };\n}\n\n/**\n * Convert user profile to FHIR Patient\n * NOTE: CPF is intentionally excluded for privacy (LGPD compliance)\n */\nexport function userProfileToFHIR(profile: UserProfileData): FHIRPatient {\n const nameParts = profile.name.split(' ');\n const given = nameParts.slice(0, -1);\n const family = nameParts[nameParts.length - 1] || '';\n\n return {\n address: profile.address\n ? [\n {\n city: profile.address.city,\n country: profile.address.country || 'BR',\n line: [\n profile.address.street && profile.address.number\n ? `${profile.address.street}, ${profile.address.number}`\n : profile.address.street,\n profile.address.complement,\n ].filter(Boolean) as string[],\n postalCode: profile.address.postalCode,\n state: profile.address.state,\n },\n ]\n : undefined,\n birthDate: profile.birthDate,\n gender: profile.gender,\n id: profile.userId,\n name: [\n {\n family,\n given: given.length > 0 ? given : undefined,\n text: profile.name,\n },\n ],\n resourceType: 'Patient',\n telecom:\n [\n ...(profile.email ? [{ system: 'email' as const, value: profile.email }] : []),\n ...(profile.phone ? [{ system: 'phone' as const, value: profile.phone }] : []),\n ].length > 0\n ? [\n ...(profile.email ? [{ system: 'email' as const, value: profile.email }] : []),\n ...(profile.phone ? [{ system: 'phone' as const, value: profile.phone }] : []),\n ]\n : undefined,\n };\n}\n\n/**\n * Convert complete lab result to FHIR Bundle\n * This is the main function for exporting lab results to FHIR R4 format\n */\nexport function labResultToFHIRBundle(\n report: LabReportData,\n observations: LabObservationData[],\n userProfile: UserProfileData,\n): FHIRBundle {\n const patientId = userProfile.userId;\n\n // Convert observations\n const fhirObservations = observations.map((obs) => ({\n fullUrl: `urn:uuid:observation-${obs.reportId}-${obs.biomarkerCode}`,\n resource: labObservationToFHIR(\n { ...obs, collectionDate: report.collectionDate },\n patientId,\n report.laboratoryName,\n ),\n }));\n\n const observationIds = observations.map(\n (obs) => `observation-${obs.reportId}-${obs.biomarkerCode}`,\n );\n\n // Convert report\n const diagnosticReport = labReportToFHIR(report, patientId, observationIds);\n\n // Convert patient\n const fhirPatient = userProfileToFHIR(userProfile);\n\n return {\n entry: [\n {\n fullUrl: `urn:uuid:${patientId}`,\n resource: fhirPatient,\n },\n {\n fullUrl: `urn:uuid:diagnostic-report-${report.reportId}`,\n resource: diagnosticReport,\n },\n ...fhirObservations,\n ],\n resourceType: 'Bundle',\n type: 'collection',\n };\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/fhir-brasil/fhir-brasil/packages/core/dist/chunk-YGPGNIXK.cjs","../src/converter.ts"],"names":[],"mappings":"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","file":"/home/runner/work/fhir-brasil/fhir-brasil/packages/core/dist/chunk-YGPGNIXK.cjs","sourcesContent":[null,"/**\n * FHIR Converter\n *\n * Converts lab results to FHIR R4 DiagnosticReport and Observation resources.\n * See: https://hl7.org/fhir/diagnosticreport.html\n */\n\nimport { codeToLoinc } from './biomarkers';\nimport { BIOMARKER_CODE_SYSTEM, LOINC_SYSTEM } from './code-systems';\nimport type { FHIRBundle, FHIRDiagnosticReport, FHIRObservation, FHIRPatient } from './fhir-types';\nimport type { Flag, LabObservationData, LabReportData, UserProfileData } from './types';\nimport { getDefaultUnit, unitToUCUM } from './units';\n\n// Re-export all types and functions\nexport * from './fhir-types';\n\n/**\n * Convert Flag to FHIR interpretation code\n */\nfunction interpretationCode(flag: Flag): string {\n switch (flag) {\n case 'H':\n return 'H'; // High\n case 'L':\n return 'L'; // Low\n default:\n return 'N'; // Normal\n }\n}\n\n/**\n * Convert Flag to FHIR interpretation display\n */\nfunction interpretationDisplay(flag: Flag): string {\n switch (flag) {\n case 'H':\n return 'High';\n case 'L':\n return 'Low';\n default:\n return 'Normal';\n }\n}\n\n/**\n * Convert generic lab observation to FHIR Observation\n */\nexport function labObservationToFHIR(\n observation: LabObservationData,\n patientId: string,\n laboratoryName?: string,\n): FHIRObservation {\n const loincCode = codeToLoinc(observation.biomarkerCode);\n // Use default unit if source unit is empty\n const sourceUnit =\n observation.unit || getDefaultUnit(observation.biomarkerCode) || observation.unit;\n const ucumUnit = unitToUCUM(sourceUnit);\n const isQualitative = observation.isQualitative || typeof observation.value === 'string';\n\n // Base observation structure\n const fhirObs: FHIRObservation = {\n category: [\n {\n coding: [\n {\n code: 'laboratory',\n display: 'Laboratory',\n system: 'http://terminology.hl7.org/CodeSystem/observation-category',\n },\n ],\n },\n ],\n code: {\n // Sem LOINC, o coding LOINC simplesmente não sai. Antes ia `99999-9`,\n // que não é código LOINC nenhum: publicava sob `http://loinc.org` uma\n // afirmação falsa, e quem consumisse o bundle confiando no system\n // trataria aquilo como código de verdade. Composição corporal, densidade\n // óssea e escore de cálcio não têm LOINC, e o certo é a lacuna explícita.\n coding: [\n ...(loincCode\n ? [\n {\n code: loincCode,\n display: observation.biomarkerName,\n system: LOINC_SYSTEM,\n },\n ]\n : []),\n {\n code: observation.biomarkerCode,\n display: observation.biomarkerName,\n system: BIOMARKER_CODE_SYSTEM,\n },\n ],\n text: observation.biomarkerName,\n },\n effectiveDateTime: observation.collectionDate,\n id: `${observation.reportId}-${observation.biomarkerCode}`,\n interpretation: [\n {\n coding: [\n {\n code: interpretationCode(observation.flag),\n display: interpretationDisplay(observation.flag),\n system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation',\n },\n ],\n },\n ],\n performer: laboratoryName ? [{ display: laboratoryName }] : undefined,\n resourceType: 'Observation',\n status: 'final',\n subject: {\n reference: `Patient/${patientId}`,\n },\n };\n\n // Add value based on type (qualitative = string, quantitative = number)\n if (isQualitative) {\n fhirObs.valueString = String(observation.value);\n } else {\n fhirObs.valueQuantity = {\n code: ucumUnit,\n system: 'http://unitsofmeasure.org',\n unit: sourceUnit,\n value: observation.value as number,\n };\n\n // Reference range only applies to quantitative values\n if (observation.referenceMin !== undefined && observation.referenceMax !== undefined) {\n fhirObs.referenceRange = [\n {\n high: {\n code: ucumUnit,\n system: 'http://unitsofmeasure.org',\n unit: sourceUnit,\n value: observation.referenceMax,\n },\n low: {\n code: ucumUnit,\n system: 'http://unitsofmeasure.org',\n unit: sourceUnit,\n value: observation.referenceMin,\n },\n },\n ];\n }\n }\n\n return fhirObs;\n}\n\n/**\n * Convert generic lab report to FHIR DiagnosticReport\n */\nexport function labReportToFHIR(\n report: LabReportData,\n patientId: string,\n observationIds: string[],\n): FHIRDiagnosticReport {\n // Map processing status to FHIR status\n let status: FHIRDiagnosticReport['status'];\n switch (report.processingStatus) {\n case 'complete':\n status = 'final';\n break;\n case 'partial':\n status = 'partial';\n break;\n case 'pending_review':\n status = 'preliminary';\n break;\n default:\n status = 'final';\n }\n\n return {\n category: [\n {\n coding: [\n {\n code: 'LAB',\n display: 'Laboratory',\n system: 'http://terminology.hl7.org/CodeSystem/v2-0074',\n },\n ],\n },\n ],\n code: {\n coding: [\n {\n code: '11502-2', // Laboratory report\n display: 'Laboratory report',\n system: 'http://loinc.org',\n },\n ],\n text: 'Laboratory Results',\n },\n conclusion:\n report.overallStatus === 'NORMAL'\n ? 'All results within normal limits'\n : 'One or more abnormal results detected',\n conclusionCode:\n report.overallStatus === 'ANORMAL'\n ? [\n {\n coding: [\n {\n code: 'A',\n display: 'Abnormal',\n system: 'http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation',\n },\n ],\n },\n ]\n : undefined,\n effectiveDateTime: report.collectionDate,\n id: report.reportId,\n issued: report.createdAt,\n performer: report.laboratoryName ? [{ display: report.laboratoryName }] : undefined,\n resourceType: 'DiagnosticReport',\n result: observationIds.map((id) => ({ reference: `Observation/${id}` })),\n status,\n subject: {\n reference: `Patient/${patientId}`,\n },\n };\n}\n\n/**\n * Convert user profile to FHIR Patient\n * NOTE: CPF is intentionally excluded for privacy (LGPD compliance)\n */\nexport function userProfileToFHIR(profile: UserProfileData): FHIRPatient {\n const nameParts = profile.name.split(' ');\n const given = nameParts.slice(0, -1);\n const family = nameParts[nameParts.length - 1] || '';\n\n return {\n address: profile.address\n ? [\n {\n city: profile.address.city,\n country: profile.address.country || 'BR',\n line: [\n profile.address.street && profile.address.number\n ? `${profile.address.street}, ${profile.address.number}`\n : profile.address.street,\n profile.address.complement,\n ].filter(Boolean) as string[],\n postalCode: profile.address.postalCode,\n state: profile.address.state,\n },\n ]\n : undefined,\n birthDate: profile.birthDate,\n gender: profile.gender,\n id: profile.userId,\n name: [\n {\n family,\n given: given.length > 0 ? given : undefined,\n text: profile.name,\n },\n ],\n resourceType: 'Patient',\n telecom:\n [\n ...(profile.email ? [{ system: 'email' as const, value: profile.email }] : []),\n ...(profile.phone ? [{ system: 'phone' as const, value: profile.phone }] : []),\n ].length > 0\n ? [\n ...(profile.email ? [{ system: 'email' as const, value: profile.email }] : []),\n ...(profile.phone ? [{ system: 'phone' as const, value: profile.phone }] : []),\n ]\n : undefined,\n };\n}\n\n/**\n * Convert complete lab result to FHIR Bundle\n * This is the main function for exporting lab results to FHIR R4 format\n */\nexport function labResultToFHIRBundle(\n report: LabReportData,\n observations: LabObservationData[],\n userProfile: UserProfileData,\n): FHIRBundle {\n const patientId = userProfile.userId;\n\n // Convert observations\n const fhirObservations = observations.map((obs) => ({\n fullUrl: `urn:uuid:observation-${obs.reportId}-${obs.biomarkerCode}`,\n resource: labObservationToFHIR(\n { ...obs, collectionDate: report.collectionDate },\n patientId,\n report.laboratoryName,\n ),\n }));\n\n const observationIds = observations.map(\n (obs) => `observation-${obs.reportId}-${obs.biomarkerCode}`,\n );\n\n // Convert report\n const diagnosticReport = labReportToFHIR(report, patientId, observationIds);\n\n // Convert patient\n const fhirPatient = userProfileToFHIR(userProfile);\n\n return {\n entry: [\n {\n fullUrl: `urn:uuid:${patientId}`,\n resource: fhirPatient,\n },\n {\n fullUrl: `urn:uuid:diagnostic-report-${report.reportId}`,\n resource: diagnosticReport,\n },\n ...fhirObservations,\n ],\n resourceType: 'Bundle',\n type: 'collection',\n };\n}\n"]}
package/dist/cli.js CHANGED
@@ -395,6 +395,18 @@ var BIOMARKER_DEFINITIONS = [
395
395
  },
396
396
  unit: "ng/dL"
397
397
  },
398
+ {
399
+ category: "tireoide",
400
+ code: "Thyroglobulin",
401
+ // 3013-0 é a tireoglobulina sérica em massa/volume (ng/mL), a forma que o
402
+ // laboratório reporta. Não a de moles/volume (14918-7) nem os painéis.
403
+ loinc: "3013-0",
404
+ names: {
405
+ en: ["Thyroglobulin", "Tg"],
406
+ pt: ["Tireoglobulina", "Tg"]
407
+ },
408
+ unit: "ng/mL"
409
+ },
398
410
  {
399
411
  category: "tireoide",
400
412
  code: "T3Free",
@@ -644,6 +656,20 @@ var BIOMARKER_DEFINITIONS = [
644
656
  },
645
657
  unit: "pg/mL"
646
658
  },
659
+ {
660
+ category: ["saude-feminina", "saude-masculina"],
661
+ code: "Estrone",
662
+ // Sem loinc de propósito. Em soro/massa-volume a LOINC só tem a forma
663
+ // "unconjugated" (2261-6) e razões; não há conceito de estrona total
664
+ // sérica. Atribuir a não-conjugada a um laudo de estrona total mediria
665
+ // outra fração — o mesmo tipo de erro que descartou candidatos nas 22
666
+ // primeiras. Entra sem código, política já usada em FatFreeMass e BMC.
667
+ names: {
668
+ en: ["Estrone", "E1"],
669
+ pt: ["Estrona", "E1"]
670
+ },
671
+ unit: "pg/mL"
672
+ },
647
673
  {
648
674
  category: ["saude-feminina", "saude-masculina"],
649
675
  code: "FSH",
@@ -999,6 +1025,18 @@ var BIOMARKER_DEFINITIONS = [
999
1025
  },
1000
1026
  unit: "mg/dL"
1001
1027
  },
1028
+ {
1029
+ category: "nutrientes",
1030
+ code: "Magnesium",
1031
+ // Magnésio sérico em massa/volume. Distinto do Magnesium_RBC (26746-8),
1032
+ // que mede a fração intraeritrocitária.
1033
+ loinc: "19123-9",
1034
+ names: {
1035
+ en: ["Magnesium", "Serum Magnesium", "Magnesium, Serum", "Magnesium Total"],
1036
+ pt: ["Magn\xE9sio", "Magn\xE9sio S\xE9rico", "Magn\xE9sio Total"]
1037
+ },
1038
+ unit: "mg/dL"
1039
+ },
1002
1040
  {
1003
1041
  category: "nutrientes",
1004
1042
  code: "MMA",
@@ -1163,7 +1201,10 @@ var BIOMARKER_DEFINITIONS = [
1163
1201
  {
1164
1202
  category: "nutrientes",
1165
1203
  code: "VitaminD",
1166
- loinc: "1989-3",
1204
+ // 62292-8 é 25(OH)D2 + 25(OH)D3, o total que os imunoensaios reportam
1205
+ // como "Vitamina D 25-OH". Até set/2026 apontava para 1989-3, que é só
1206
+ // a fração D3: nome parecido, analito diferente.
1207
+ loinc: "62292-8",
1167
1208
  names: {
1168
1209
  en: [
1169
1210
  "Vitamin D",
@@ -6637,7 +6678,7 @@ async function main() {
6637
6678
  strict: false
6638
6679
  });
6639
6680
  if (values.version) {
6640
- process.stdout.write(`${"0.21.0"}
6681
+ process.stdout.write(`${"0.22.0"}
6641
6682
  `);
6642
6683
  return;
6643
6684
  }
@@ -3,14 +3,14 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkYUUEXKQQcjs = require('./chunk-YUUEXKQQ.cjs');
6
+ var _chunkYGPGNIXKcjs = require('./chunk-YGPGNIXK.cjs');
7
7
  require('./chunk-OR67NJDZ.cjs');
8
- require('./chunk-SJJRJT64.cjs');
8
+ require('./chunk-6WXSJGXF.cjs');
9
9
  require('./chunk-MJ254F5K.cjs');
10
10
 
11
11
 
12
12
 
13
13
 
14
14
 
15
- exports.labObservationToFHIR = _chunkYUUEXKQQcjs.labObservationToFHIR; exports.labReportToFHIR = _chunkYUUEXKQQcjs.labReportToFHIR; exports.labResultToFHIRBundle = _chunkYUUEXKQQcjs.labResultToFHIRBundle; exports.userProfileToFHIR = _chunkYUUEXKQQcjs.userProfileToFHIR;
15
+ exports.labObservationToFHIR = _chunkYGPGNIXKcjs.labObservationToFHIR; exports.labReportToFHIR = _chunkYGPGNIXKcjs.labReportToFHIR; exports.labResultToFHIRBundle = _chunkYGPGNIXKcjs.labResultToFHIRBundle; exports.userProfileToFHIR = _chunkYGPGNIXKcjs.userProfileToFHIR;
16
16
  //# sourceMappingURL=converter.cjs.map
package/dist/converter.js CHANGED
@@ -3,9 +3,9 @@ import {
3
3
  labReportToFHIR,
4
4
  labResultToFHIRBundle,
5
5
  userProfileToFHIR
6
- } from "./chunk-OP6MZT45.js";
6
+ } from "./chunk-YF3262UR.js";
7
7
  import "./chunk-A6HR4XDK.js";
8
- import "./chunk-6EAXNJAN.js";
8
+ import "./chunk-BN4XL2PL.js";
9
9
  import "./chunk-R4MUCMO3.js";
10
10
  export {
11
11
  labObservationToFHIR,
package/dist/importer.cjs CHANGED
@@ -4,9 +4,9 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkIGS6TWJUcjs = require('./chunk-IGS6TWJU.cjs');
7
+ var _chunkAWO3PYPJcjs = require('./chunk-AWO3PYPJ.cjs');
8
8
  require('./chunk-OR67NJDZ.cjs');
9
- require('./chunk-SJJRJT64.cjs');
9
+ require('./chunk-6WXSJGXF.cjs');
10
10
  require('./chunk-3ILBFLVQ.cjs');
11
11
 
12
12
 
@@ -14,5 +14,5 @@ require('./chunk-3ILBFLVQ.cjs');
14
14
 
15
15
 
16
16
 
17
- exports.MAX_FILE_SIZE = _chunkIGS6TWJUcjs.MAX_FILE_SIZE; exports.MAX_OBSERVATIONS = _chunkIGS6TWJUcjs.MAX_OBSERVATIONS; exports.extractObservationsFromBundle = _chunkIGS6TWJUcjs.extractObservationsFromBundle; exports.mapFHIRObservationToInternal = _chunkIGS6TWJUcjs.mapFHIRObservationToInternal; exports.processImportBundle = _chunkIGS6TWJUcjs.processImportBundle;
17
+ exports.MAX_FILE_SIZE = _chunkAWO3PYPJcjs.MAX_FILE_SIZE; exports.MAX_OBSERVATIONS = _chunkAWO3PYPJcjs.MAX_OBSERVATIONS; exports.extractObservationsFromBundle = _chunkAWO3PYPJcjs.extractObservationsFromBundle; exports.mapFHIRObservationToInternal = _chunkAWO3PYPJcjs.mapFHIRObservationToInternal; exports.processImportBundle = _chunkAWO3PYPJcjs.processImportBundle;
18
18
  //# sourceMappingURL=importer.cjs.map
package/dist/importer.js CHANGED
@@ -4,9 +4,9 @@ import {
4
4
  extractObservationsFromBundle,
5
5
  mapFHIRObservationToInternal,
6
6
  processImportBundle
7
- } from "./chunk-DZZKR2XS.js";
7
+ } from "./chunk-MRAMTSD4.js";
8
8
  import "./chunk-A6HR4XDK.js";
9
- import "./chunk-6EAXNJAN.js";
9
+ import "./chunk-BN4XL2PL.js";
10
10
  import "./chunk-N3ZCOLG2.js";
11
11
  export {
12
12
  MAX_FILE_SIZE,
package/dist/index.cjs CHANGED
@@ -3,14 +3,14 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkYUUEXKQQcjs = require('./chunk-YUUEXKQQ.cjs');
6
+ var _chunkYGPGNIXKcjs = require('./chunk-YGPGNIXK.cjs');
7
7
 
8
8
 
9
9
 
10
10
 
11
11
 
12
12
 
13
- var _chunkIGS6TWJUcjs = require('./chunk-IGS6TWJU.cjs');
13
+ var _chunkAWO3PYPJcjs = require('./chunk-AWO3PYPJ.cjs');
14
14
 
15
15
 
16
16
 
@@ -47,7 +47,7 @@ var _chunkOR67NJDZcjs = require('./chunk-OR67NJDZ.cjs');
47
47
 
48
48
 
49
49
 
50
- var _chunkSJJRJT64cjs = require('./chunk-SJJRJT64.cjs');
50
+ var _chunk6WXSJGXFcjs = require('./chunk-6WXSJGXF.cjs');
51
51
 
52
52
 
53
53
 
@@ -232,7 +232,7 @@ function interventionToFHIRObservation(intervention, patientId) {
232
232
  }
233
233
  function interventionsToFHIRBundle(interventions, userProfile) {
234
234
  const patientId = userProfile.userId;
235
- const fhirPatient = _chunkYUUEXKQQcjs.userProfileToFHIR.call(void 0, userProfile);
235
+ const fhirPatient = _chunkYGPGNIXKcjs.userProfileToFHIR.call(void 0, userProfile);
236
236
  const entries = interventions.map((intervention) => {
237
237
  const isMedication = intervention.type === "medication" || intervention.type === "supplement";
238
238
  const resource = isMedication ? interventionToFHIRMedicationStatement(intervention, patientId) : interventionToFHIRObservation(intervention, patientId);
@@ -697,5 +697,5 @@ function cnsToFHIRIdentifier(cns) {
697
697
 
698
698
 
699
699
 
700
- exports.AGE_BRACKETS = AGE_BRACKETS; exports.BIOMARKER_CODE_SYSTEM = _chunkOR67NJDZcjs.BIOMARKER_CODE_SYSTEM; exports.BIOMARKER_DEFAULT_UNIT = _chunkMJ254F5Kcjs.BIOMARKER_DEFAULT_UNIT; exports.BIOMARKER_DEFINITIONS = _chunkSJJRJT64cjs.BIOMARKER_DEFINITIONS; exports.BIOMARKER_UNITS = _chunkMJ254F5Kcjs.BIOMARKER_UNITS; exports.BODY_FAT_ZONES = BODY_FAT_ZONES; exports.CAC_INDICATOR_CODES = _chunkSJJRJT64cjs.CAC_INDICATOR_CODES; exports.CATEGORY_GROUPS = CATEGORY_GROUPS; exports.CATEGORY_SCREENING_INTERVALS = CATEGORY_SCREENING_INTERVALS; exports.DEXA_CATEGORIES = _chunkSJJRJT64cjs.DEXA_CATEGORIES; exports.DEXA_INDICATOR_CODES = _chunkSJJRJT64cjs.DEXA_INDICATOR_CODES; exports.LOINC_SYSTEM = _chunkOR67NJDZcjs.LOINC_SYSTEM; exports.MAX_FILE_SIZE = _chunkIGS6TWJUcjs.MAX_FILE_SIZE; exports.MAX_OBSERVATIONS = _chunkIGS6TWJUcjs.MAX_OBSERVATIONS; exports.T_SCORE_ZONES = T_SCORE_ZONES; exports.UNIT_TO_UCUM = _chunkMJ254F5Kcjs.UNIT_TO_UCUM; exports.ZONE_DEFS = ZONE_DEFS; exports.applyFallbackReferenceRanges = _chunkERALICUKcjs.applyFallbackReferenceRanges; exports.biomarkerRangeDefinitions = _chunkERALICUKcjs.biomarkerRangeDefinitions; exports.calculateNextScreeningDate = calculateNextScreeningDate; exports.cnsToFHIRIdentifier = cnsToFHIRIdentifier; exports.codeToLoinc = _chunkSJJRJT64cjs.codeToLoinc; exports.convertUnit = _chunkMJ254F5Kcjs.convertUnit; exports.cpfToFHIRIdentifier = cpfToFHIRIdentifier; exports.defaultReferenceRanges = _chunkERALICUKcjs.defaultReferenceRanges; exports.extractObservationsFromBundle = _chunkIGS6TWJUcjs.extractObservationsFromBundle; exports.filterVisibleBiomarkers = _chunkSJJRJT64cjs.filterVisibleBiomarkers; exports.findCodeByName = _chunkSJJRJT64cjs.findCodeByName; exports.formatCNS = formatCNS; exports.formatCPF = formatCPF; exports.generateCacFullReference = _chunkSJJRJT64cjs.generateCacFullReference; exports.generateDexaFullReference = _chunkSJJRJT64cjs.generateDexaFullReference; exports.generateFilteredLLMReference = _chunkSJJRJT64cjs.generateFilteredLLMReference; exports.generateLLMReference = _chunkSJJRJT64cjs.generateLLMReference; exports.getAllCodes = _chunkSJJRJT64cjs.getAllCodes; exports.getAllDefinitions = _chunkSJJRJT64cjs.getAllDefinitions; exports.getAllLoincCodes = _chunkSJJRJT64cjs.getAllLoincCodes; exports.getAllSearchPatterns = _chunkSJJRJT64cjs.getAllSearchPatterns; exports.getBiomarkersByCategory = _chunkSJJRJT64cjs.getBiomarkersByCategory; exports.getBiomarkersForCategories = _chunkSJJRJT64cjs.getBiomarkersForCategories; exports.getCanonicalUnit = _chunkMJ254F5Kcjs.getCanonicalUnit; exports.getCategoriesByInterval = getCategoriesByInterval; exports.getCategoryGroup = getCategoryGroup; exports.getDaysUntilScreening = getDaysUntilScreening; exports.getDefaultUnit = _chunkMJ254F5Kcjs.getDefaultUnit; exports.getDefinitionByCode = _chunkSJJRJT64cjs.getDefinitionByCode; exports.getDefinitionByLoinc = _chunkSJJRJT64cjs.getDefinitionByLoinc; exports.getDefinitionsBySex = _chunkSJJRJT64cjs.getDefinitionsBySex; exports.getDueCategories = getDueCategories; exports.getFallbackReferenceRange = _chunkERALICUKcjs.getFallbackReferenceRange; exports.getRangeDirection = _chunkERALICUKcjs.getRangeDirection; exports.getReferenceRange = _chunkERALICUKcjs.getReferenceRange; exports.getSIUnit = _chunkMJ254F5Kcjs.getSIUnit; exports.getScreeningInterval = getScreeningInterval; exports.getSexForCode = _chunkSJJRJT64cjs.getSexForCode; exports.getVisibleDefinitions = _chunkSJJRJT64cjs.getVisibleDefinitions; exports.interventionToFHIRMedicationStatement = interventionToFHIRMedicationStatement; exports.interventionToFHIRObservation = interventionToFHIRObservation; exports.interventionsToFHIRBundle = interventionsToFHIRBundle; exports.isBiomarkerVisible = _chunkSJJRJT64cjs.isBiomarkerVisible; exports.isCacDocument = _chunkSJJRJT64cjs.isCacDocument; exports.isDexaDocument = _chunkSJJRJT64cjs.isDexaDocument; exports.isScreeningDue = isScreeningDue; exports.isValidCode = _chunkSJJRJT64cjs.isValidCode; exports.isValidLoinc = _chunkSJJRJT64cjs.isValidLoinc; exports.labObservationToFHIR = _chunkYUUEXKQQcjs.labObservationToFHIR; exports.labReportToFHIR = _chunkYUUEXKQQcjs.labReportToFHIR; exports.labResultToFHIRBundle = _chunkYUUEXKQQcjs.labResultToFHIRBundle; exports.listMappedSubcategories = listMappedSubcategories; exports.loincToCode = _chunkSJJRJT64cjs.loincToCode; exports.mapFHIRObservationToInternal = _chunkIGS6TWJUcjs.mapFHIRObservationToInternal; exports.normalizeCode = _chunkSJJRJT64cjs.normalizeCode; exports.plural = plural; exports.pluralCount = pluralCount; exports.pluralPhrase = pluralPhrase; exports.pluralPhraseCount = pluralPhraseCount; exports.processImportBundle = _chunkIGS6TWJUcjs.processImportBundle; exports.toBiomarkerTests = _chunkSJJRJT64cjs.toBiomarkerTests; exports.unitToUCUM = _chunkMJ254F5Kcjs.unitToUCUM; exports.userProfileToFHIR = _chunkYUUEXKQQcjs.userProfileToFHIR; exports.validateCNS = validateCNS; exports.validateCPF = validateCPF; exports.validateFHIRDiagnosticReport = _chunk3ILBFLVQcjs.validateFHIRDiagnosticReport; exports.validateFHIRImportBundle = _chunk3ILBFLVQcjs.validateFHIRImportBundle; exports.validateFHIRObservation = _chunk3ILBFLVQcjs.validateFHIRObservation; exports.validateLoincNameMatch = _chunkSJJRJT64cjs.validateLoincNameMatch;
700
+ exports.AGE_BRACKETS = AGE_BRACKETS; exports.BIOMARKER_CODE_SYSTEM = _chunkOR67NJDZcjs.BIOMARKER_CODE_SYSTEM; exports.BIOMARKER_DEFAULT_UNIT = _chunkMJ254F5Kcjs.BIOMARKER_DEFAULT_UNIT; exports.BIOMARKER_DEFINITIONS = _chunk6WXSJGXFcjs.BIOMARKER_DEFINITIONS; exports.BIOMARKER_UNITS = _chunkMJ254F5Kcjs.BIOMARKER_UNITS; exports.BODY_FAT_ZONES = BODY_FAT_ZONES; exports.CAC_INDICATOR_CODES = _chunk6WXSJGXFcjs.CAC_INDICATOR_CODES; exports.CATEGORY_GROUPS = CATEGORY_GROUPS; exports.CATEGORY_SCREENING_INTERVALS = CATEGORY_SCREENING_INTERVALS; exports.DEXA_CATEGORIES = _chunk6WXSJGXFcjs.DEXA_CATEGORIES; exports.DEXA_INDICATOR_CODES = _chunk6WXSJGXFcjs.DEXA_INDICATOR_CODES; exports.LOINC_SYSTEM = _chunkOR67NJDZcjs.LOINC_SYSTEM; exports.MAX_FILE_SIZE = _chunkAWO3PYPJcjs.MAX_FILE_SIZE; exports.MAX_OBSERVATIONS = _chunkAWO3PYPJcjs.MAX_OBSERVATIONS; exports.T_SCORE_ZONES = T_SCORE_ZONES; exports.UNIT_TO_UCUM = _chunkMJ254F5Kcjs.UNIT_TO_UCUM; exports.ZONE_DEFS = ZONE_DEFS; exports.applyFallbackReferenceRanges = _chunkERALICUKcjs.applyFallbackReferenceRanges; exports.biomarkerRangeDefinitions = _chunkERALICUKcjs.biomarkerRangeDefinitions; exports.calculateNextScreeningDate = calculateNextScreeningDate; exports.cnsToFHIRIdentifier = cnsToFHIRIdentifier; exports.codeToLoinc = _chunk6WXSJGXFcjs.codeToLoinc; exports.convertUnit = _chunkMJ254F5Kcjs.convertUnit; exports.cpfToFHIRIdentifier = cpfToFHIRIdentifier; exports.defaultReferenceRanges = _chunkERALICUKcjs.defaultReferenceRanges; exports.extractObservationsFromBundle = _chunkAWO3PYPJcjs.extractObservationsFromBundle; exports.filterVisibleBiomarkers = _chunk6WXSJGXFcjs.filterVisibleBiomarkers; exports.findCodeByName = _chunk6WXSJGXFcjs.findCodeByName; exports.formatCNS = formatCNS; exports.formatCPF = formatCPF; exports.generateCacFullReference = _chunk6WXSJGXFcjs.generateCacFullReference; exports.generateDexaFullReference = _chunk6WXSJGXFcjs.generateDexaFullReference; exports.generateFilteredLLMReference = _chunk6WXSJGXFcjs.generateFilteredLLMReference; exports.generateLLMReference = _chunk6WXSJGXFcjs.generateLLMReference; exports.getAllCodes = _chunk6WXSJGXFcjs.getAllCodes; exports.getAllDefinitions = _chunk6WXSJGXFcjs.getAllDefinitions; exports.getAllLoincCodes = _chunk6WXSJGXFcjs.getAllLoincCodes; exports.getAllSearchPatterns = _chunk6WXSJGXFcjs.getAllSearchPatterns; exports.getBiomarkersByCategory = _chunk6WXSJGXFcjs.getBiomarkersByCategory; exports.getBiomarkersForCategories = _chunk6WXSJGXFcjs.getBiomarkersForCategories; exports.getCanonicalUnit = _chunkMJ254F5Kcjs.getCanonicalUnit; exports.getCategoriesByInterval = getCategoriesByInterval; exports.getCategoryGroup = getCategoryGroup; exports.getDaysUntilScreening = getDaysUntilScreening; exports.getDefaultUnit = _chunkMJ254F5Kcjs.getDefaultUnit; exports.getDefinitionByCode = _chunk6WXSJGXFcjs.getDefinitionByCode; exports.getDefinitionByLoinc = _chunk6WXSJGXFcjs.getDefinitionByLoinc; exports.getDefinitionsBySex = _chunk6WXSJGXFcjs.getDefinitionsBySex; exports.getDueCategories = getDueCategories; exports.getFallbackReferenceRange = _chunkERALICUKcjs.getFallbackReferenceRange; exports.getRangeDirection = _chunkERALICUKcjs.getRangeDirection; exports.getReferenceRange = _chunkERALICUKcjs.getReferenceRange; exports.getSIUnit = _chunkMJ254F5Kcjs.getSIUnit; exports.getScreeningInterval = getScreeningInterval; exports.getSexForCode = _chunk6WXSJGXFcjs.getSexForCode; exports.getVisibleDefinitions = _chunk6WXSJGXFcjs.getVisibleDefinitions; exports.interventionToFHIRMedicationStatement = interventionToFHIRMedicationStatement; exports.interventionToFHIRObservation = interventionToFHIRObservation; exports.interventionsToFHIRBundle = interventionsToFHIRBundle; exports.isBiomarkerVisible = _chunk6WXSJGXFcjs.isBiomarkerVisible; exports.isCacDocument = _chunk6WXSJGXFcjs.isCacDocument; exports.isDexaDocument = _chunk6WXSJGXFcjs.isDexaDocument; exports.isScreeningDue = isScreeningDue; exports.isValidCode = _chunk6WXSJGXFcjs.isValidCode; exports.isValidLoinc = _chunk6WXSJGXFcjs.isValidLoinc; exports.labObservationToFHIR = _chunkYGPGNIXKcjs.labObservationToFHIR; exports.labReportToFHIR = _chunkYGPGNIXKcjs.labReportToFHIR; exports.labResultToFHIRBundle = _chunkYGPGNIXKcjs.labResultToFHIRBundle; exports.listMappedSubcategories = listMappedSubcategories; exports.loincToCode = _chunk6WXSJGXFcjs.loincToCode; exports.mapFHIRObservationToInternal = _chunkAWO3PYPJcjs.mapFHIRObservationToInternal; exports.normalizeCode = _chunk6WXSJGXFcjs.normalizeCode; exports.plural = plural; exports.pluralCount = pluralCount; exports.pluralPhrase = pluralPhrase; exports.pluralPhraseCount = pluralPhraseCount; exports.processImportBundle = _chunkAWO3PYPJcjs.processImportBundle; exports.toBiomarkerTests = _chunk6WXSJGXFcjs.toBiomarkerTests; exports.unitToUCUM = _chunkMJ254F5Kcjs.unitToUCUM; exports.userProfileToFHIR = _chunkYGPGNIXKcjs.userProfileToFHIR; exports.validateCNS = validateCNS; exports.validateCPF = validateCPF; exports.validateFHIRDiagnosticReport = _chunk3ILBFLVQcjs.validateFHIRDiagnosticReport; exports.validateFHIRImportBundle = _chunk3ILBFLVQcjs.validateFHIRImportBundle; exports.validateFHIRObservation = _chunk3ILBFLVQcjs.validateFHIRObservation; exports.validateLoincNameMatch = _chunk6WXSJGXFcjs.validateLoincNameMatch;
701
701
  //# sourceMappingURL=index.cjs.map
package/dist/index.js CHANGED
@@ -3,14 +3,14 @@ import {
3
3
  labReportToFHIR,
4
4
  labResultToFHIRBundle,
5
5
  userProfileToFHIR
6
- } from "./chunk-OP6MZT45.js";
6
+ } from "./chunk-YF3262UR.js";
7
7
  import {
8
8
  MAX_FILE_SIZE,
9
9
  MAX_OBSERVATIONS,
10
10
  extractObservationsFromBundle,
11
11
  mapFHIRObservationToInternal,
12
12
  processImportBundle
13
- } from "./chunk-DZZKR2XS.js";
13
+ } from "./chunk-MRAMTSD4.js";
14
14
  import {
15
15
  BIOMARKER_CODE_SYSTEM,
16
16
  LOINC_SYSTEM
@@ -47,7 +47,7 @@ import {
47
47
  normalizeCode,
48
48
  toBiomarkerTests,
49
49
  validateLoincNameMatch
50
- } from "./chunk-6EAXNJAN.js";
50
+ } from "./chunk-BN4XL2PL.js";
51
51
  import {
52
52
  applyFallbackReferenceRanges,
53
53
  biomarkerRangeDefinitions,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@precisa-saude/fhir",
3
- "version": "0.21.0",
3
+ "version": "0.22.0",
4
4
  "description": "Tipos FHIR R4, definições de biomarcadores, faixas de referência e conversores para o ecossistema de saúde brasileiro",
5
5
  "keywords": [
6
6
  "fhir",