From 571dae895d1e20f21edf42607fd3eddfd87b775f Mon Sep 17 00:00:00 2001 From: Gorovoi <98281622+Gorovoi@users.noreply.github.com> Date: Fri, 27 Dec 2024 15:07:48 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Aidbox/e?= =?UTF-8?q?xamples@032bb475ea71d342874c5c8d852d212f85a3b620=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ips_ig_cl/.env.tpl | 4 +- ips_ig_cl/k8s.yaml | 14 +- ips_ig_cl/src/config.ts | 5 +- ips_ig_cl/src/ips.ts | 273 +++++++++++++++++++++++++++--------- ips_ig_cl/src/operations.ts | 3 - ips_ig_cl/src/types.d.ts | 49 +++++-- 6 files changed, 262 insertions(+), 86 deletions(-) diff --git a/ips_ig_cl/.env.tpl b/ips_ig_cl/.env.tpl index 1013ccd..4c63e6e 100644 --- a/ips_ig_cl/.env.tpl +++ b/ips_ig_cl/.env.tpl @@ -3,8 +3,8 @@ AIDBOX_LICENSE= AIDBOX_DEV_MODE=true AIDBOX_FHIR_VERSION=4.0.1 AIDBOX_FHIR_SCHEMA_VALIDATION=true -AIDBOX_FHIR_PACKAGES=hl7.fhir.r4.core#4.0.1:hl7.fhir.uv.ips#1.1.0 -AIDBOX_TERMINOLOGY_SERVICE_BASE_URL="https://r4.ontoserver.csiro.au/fhir" +AIDBOX_FHIR_PACKAGES=hl7.fhir.r4.core#4.0.1:hl7.fhir.cl.clips#0.3.0-ballot +AIDBOX_TERMINOLOGY_SERVICE_BASE_URL="https://tx.health-samurai.io/fhir" AIDBOX_COMPLIANCE=enabled PGPORT=5432 diff --git a/ips_ig_cl/k8s.yaml b/ips_ig_cl/k8s.yaml index 80786a9..07ae321 100644 --- a/ips_ig_cl/k8s.yaml +++ b/ips_ig_cl/k8s.yaml @@ -1,3 +1,4 @@ +--- apiVersion: apps/v1 kind: Deployment metadata: @@ -58,8 +59,19 @@ metadata: name: ips-app namespace: ips data: - AIDBOX_BASE_URL: https://ips.hz.aidbox.dev + AIDBOX_BASE_URL: http://aidbox-api.aidbox.svc:80 APP_PORT: "4000" APP_URL: http://ips-app.ips.svc.cluster.local:4000 APP_CALLBACK_URL: /aidbox APP_ID: ips-app +--- +apiVersion: v1 +kind: Secret +metadata: + name: ips-app + namespace: ips +data: + AIDBOX_CLIENT_SECRET: + AIDBOX_CLIENT_ID: + APP_SECRET: +type: Opaque diff --git a/ips_ig_cl/src/config.ts b/ips_ig_cl/src/config.ts index 5b9e959..3514954 100644 --- a/ips_ig_cl/src/config.ts +++ b/ips_ig_cl/src/config.ts @@ -7,9 +7,11 @@ import { Config } from "./types"; export const isDev = process.env.NODE_ENV === "development"; const envSchema = object({ - AIDBOX_BASE_URL: string([url()]), AIDBOX_CLIENT_ID: string(), AIDBOX_CLIENT_SECRET: string(), + APP_SECRET: string(), + + AIDBOX_BASE_URL: string([url()]), APP_PORT: transform(string(), (data) => { const port = parseInt(data); if (isNaN(port)) { @@ -20,7 +22,6 @@ const envSchema = object({ }), APP_URL: string([url()]), APP_CALLBACK_URL: string(), - APP_SECRET: string(), APP_ID: string(), }); diff --git a/ips_ig_cl/src/ips.ts b/ips_ig_cl/src/ips.ts index f43d4bd..8b2185e 100644 --- a/ips_ig_cl/src/ips.ts +++ b/ips_ig_cl/src/ips.ts @@ -3,19 +3,25 @@ import { generateCompositionNarrative, generateSimpleNarrative } from "./narrati import { BundleEntry, HttpClient, - IpsProfile, PatientData, SectionName, SectionProfiles, SectionToGenerateFuncMap, SimpleNarrativeEntry, } from "./types"; +import { DomainResource } from "@aidbox/sdk-r4/types/index.js"; +import Fastify from "fastify"; +import { ClinicalImpressionStatus } from "@aidbox/sdk-r4/types/hl7-fhir-r4-core/ClinicalImpression.js"; + +const buildReference = (resourceType: string, id: string) => { + return `${resourceType}/${id}`; +} const addEntry = (patientData: PatientData) => { if (patientData.length === 0) return {}; return { entry: patientData.map((resource) => ({ - reference: `${resource.resource.resourceType}/${resource.resource.id}`, + reference: buildReference(resource.resource.resourceType, resource.resource.id!), })), }; }; @@ -35,56 +41,77 @@ const buildSection = ( const sectionProfiles: SectionProfiles = { MedicationSummary: { MedicationStatement: [ - "http://hl7.org/fhir/uv/ips/StructureDefinition/MedicationStatement-uv-ips", + "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/RegMedicamentos-cl-ips", ], MedicationRequest: [ - "http://hl7.org/fhir/uv/ips/StructureDefinition/MedicationRequest-uv-ips", + "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/MedicationRequest-cl-ips", ], }, AllergyIntolerance: { AllergyIntolerance: [ - "http://hl7.org/fhir/uv/ips/StructureDefinition/AllergyIntolerance-uv-ips", + "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/AllergiaInt-cl-ips", ], }, ProblemList: { - Condition: ["http://hl7.org/fhir/uv/ips/StructureDefinition/Condition-uv-ips"], + Condition: ["https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Condition-cl-ips"], }, Procedures: { - Procedure: ["http://hl7.org/fhir/uv/ips/StructureDefinition/Procedure-uv-ips"], + Procedure: ["https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Procedimientos-cl-ips"], }, Immunizations: { - Immunization: ["http://hl7.org/fhir/uv/ips/StructureDefinition/Immunization-uv-ips"], + Immunization: ["https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Inmunizacion-cl-ips"], }, MedicalDevices: { DeviceUseStatement: [ - "http://hl7.org/fhir/uv/ips/StructureDefinition/DeviceUseStatement-uv-ips", + "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Declaracion-uso-dispositivo-cl-ips", ], }, DiagnosticResults: { DiagnosticReport: [ - "http://hl7.org/fhir/uv/ips/StructureDefinition/DiagnosticReport-uv-ips", + "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/DiagnosticReport-cl-ips", ], Observation: [ - "http://hl7.org/fhir/uv/ips/StructureDefinition/Observation-results-uv-ips", - "http://hl7.org/fhir/uv/ips/StructureDefinition/Observation-results-laboratory-uv-ips", + "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Observation-resultado-laboratorio-patologico-cl-ips", + "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Observation-resultado-radiology-cl-ips", ], }, VitalSigns: { Observation: ["http://hl7.org/fhir/StructureDefinition/vitalsigns"] }, IllnessHistory: { - Condition: ["http://hl7.org/fhir/uv/ips/StructureDefinition/Condition-uv-ips"], + Condition: ["https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Condition-cl-ips"], + }, + StatusFunctional: { + Condition: [ + "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Condition-cl-ips", + ], + ClinicalImpression: [ + "http://hl7.org/fhir/StructureDefinition/ClinicalImpression" + ] }, Pregnancy: { Observation: [ - "http://hl7.org/fhir/uv/ips/StructureDefinition/Observation-pregnancy-status-uv-ips", - "http://hl7.org/fhir/uv/ips/StructureDefinition/Observation-pregnancy-outcome-uv-ips", + "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Observation-estado-del-embarazo-cl-ips", + "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Observation-resultado-del-embarazo-cl-ips", ], }, + CarePlan: { + CarePlan: [ + "http://hl7.org/fhir/StructureDefinition/CarePlan" + ] + }, SocialHistory: { Observation: [ - "http://hl7.org/fhir/uv/ips/StructureDefinition/Observation-tobaccouse-uv-ips", - "http://hl7.org/fhir/uv/ips/StructureDefinition/Observation-alcoholuse-uv-ips", + "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Observation-uso-de-tabaco-cl-ips", + "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Observation-uso-de-alcohol-cl-ips", ], }, + Alerts: { + Flag: ["https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Flag-alerta-cl-ips"] + }, + AdvancedDirectives: { + Consent: [ + "http://hl7.org/fhir/StructureDefinition/Consent" + ] + } }; const findIntersection = ( @@ -92,6 +119,20 @@ const findIntersection = ( resourceProfiles: Array ) => sectionProfiles.find((profile) => resourceProfiles.includes(profile)); +const validateByAidbox = async ( + http: HttpClient, + resource: DomainResource, + resourceType: string, + sectionProfile: string +) => { + return http.post(`fhir/${resourceType}/$validate`, { + searchParams: { + "profile": sectionProfile + }, + json: resource, + }); +} + const getSectionResources = ( patientData: PatientData, sectionsProfiles: Record> @@ -113,13 +154,13 @@ const generateProblemListSection = (patientData: PatientData) => { const validConditions = getSectionResources(patientData, sectionProfiles.ProblemList); const section = { - title: "Active Problems", + title: "Problemas de Salud", code: { coding: [ { system: "http://loinc.org", code: "11450-4", - display: "Problem list - Reported", + display: "Lista de problemas", }, ], }, @@ -137,13 +178,13 @@ const generateAllergyIntoleranceSection = (patientData: PatientData) => { ); const section = { - title: "Allergies and Intolerances", + title: "Alergias e Intolerancias", code: { coding: [ { system: "http://loinc.org", code: "48765-2", - display: "Allergies and adverse reactions Document", + display: "Alergias y reacciones adversas", }, ], }, @@ -160,16 +201,14 @@ const generateMedicationSummarySection = (patientData: PatientData) => { sectionProfiles.MedicationSummary ); - console.log(patientData); - const section = { - title: "Medication", + title: "Resumen de Medicamentos IPS", code: { coding: [ { system: "http://loinc.org", code: "10160-0", - display: "History of Medication use Narrative", + display: "Antecedentes de consumo de medicaciones", }, ], }, @@ -188,13 +227,13 @@ const generateImmunizationsSection = (patientData: PatientData) => { ); const section = { - title: "Immunizations", + title: "Inmunizaciones", code: { coding: [ { system: "http://loinc.org", code: "11369-6", - display: "History of Immunization Narrative", + display: "Antecedente de inmunización", }, ], }, @@ -208,13 +247,13 @@ const generateProceduresSection = (patientData: PatientData) => { const validProcedures = getSectionResources(patientData, sectionProfiles.Procedures); const section = { - title: "Procedures", + title: "Procedimientos", code: { coding: [ { system: "http://loinc.org", code: "47519-4", - display: "History of Procedures Document", + display: "Historia de los procedimientos", }, ], }, @@ -228,13 +267,13 @@ const generateMedicalDevicesSection = (patientData: PatientData, http: HttpClien const validDevices = getSectionResources(patientData, sectionProfiles.MedicalDevices); const section = { - title: "Medical Devices", + title: "Dispositivos Médicos", code: { coding: [ { system: "http://loinc.org", code: "46264-8", - display: "History of medical device use", + display: "Historial de uso de dispositivos médicos", }, ], }, @@ -254,13 +293,13 @@ const generateDiagnosticResultsSection = (patientData: PatientData, http: HttpCl ); const section = { - title: "Results", + title: "Resultados", code: { coding: [ { system: "http://loinc.org", code: "30954-2", - display: "Relevant diagnostic tests/laboratory data Narrative", + display: "Pruebas diagnósticas relevantes y/o información de laboratorio", }, ], }, @@ -279,13 +318,13 @@ const generateVitalSignsSection = (patientData: PatientData, http: HttpClient) = const validVitalSigns = getSectionResources(patientData, sectionProfiles.VitalSigns); const section = { - title: "Vital Signs", + title: "Signos Vitales", code: { coding: [ { system: "http://loinc.org", code: "8716-3", - display: "Vital signs", + display: "Hallazgos físicos", }, ], }, @@ -299,13 +338,13 @@ const generatePregnancySection = (patientData: PatientData, http: HttpClient) => const validObservations = getSectionResources(patientData, sectionProfiles.Pregnancy); const section = { - title: "Pregnancy", + title: "Historial de Embarazos", code: { coding: [ { system: "http://loinc.org", code: "10162-6", - display: "History of pregnancies Narrative", + display: "Antecedentes de embarazos", }, ], }, @@ -315,6 +354,75 @@ const generatePregnancySection = (patientData: PatientData, http: HttpClient) => return buildSection(section, validObservations); }; +const generateAlertsSection = (patientData: PatientData, http: HttpClient) => { + const resources = getSectionResources( + patientData, + sectionProfiles.Alerts + ); + + const section = { + title: "Flag - Alertas", + code: { + coding: [ + { + system: "http://loinc.org", + code: "104605-1", + display: "Alerta", + }, + ], + }, + text: generateSimpleNarrative(resources as SimpleNarrativeEntry), + }; + + return buildSection(section, resources); +}; + +const generateCarePlanSection = (patientData: PatientData, http: HttpClient) => { + const resources = getSectionResources( + patientData, + sectionProfiles.CarePlan + ); + + const section = { + title: "Plan de Cuidado", + code: { + coding: [ + { + system: "http://loinc.org", + code: "18776-5", + display: "Plan de tratamiento", + }, + ], + }, + text: generateSimpleNarrative(resources as SimpleNarrativeEntry), + }; + + return buildSection(section, resources); +}; + +const generateAdvencedDirectivesSection = (patientData: PatientData, http: HttpClient) => { + const resources = getSectionResources( + patientData, + sectionProfiles.AdvancedDirectives + ); + + const section = { + title: "Sección de Consentimientos", + code: { + coding: [ + { + system: "http://loinc.org", + code: "42348-3", + display: "Directivas avanzadas", + }, + ], + }, + text: generateSimpleNarrative(resources as SimpleNarrativeEntry), + }; + + return buildSection(section, resources); +}; + const generateSocialHistorySection = (patientData: PatientData, http: HttpClient) => { const validObservations = getSectionResources( patientData, @@ -322,13 +430,13 @@ const generateSocialHistorySection = (patientData: PatientData, http: HttpClient ); const section = { - title: "Social History", + title: "Historia Social", code: { coding: [ { system: "http://loinc.org", code: "29762-2", - display: "Social history Narrative", + display: "Antecedentes sociales", }, ], }, @@ -345,13 +453,13 @@ const generateIllnessHistorySection = (patientData: PatientData) => { ); const section = { - title: "Past history of illnesses", + title: "Histórico de enfermedades", code: { coding: [ { system: "http://loinc.org", code: "11348-0", - display: "History of Past illness Narrative", + display: "Antecedentes de enfermedades pasadas", }, ], }, @@ -373,6 +481,9 @@ const sectionNames: Array = [ "IllnessHistory", "Pregnancy", "SocialHistory", + "Alerts", + "CarePlan", + "AdvancedDirectives" ]; const sectionToGenerateFuncMap: SectionToGenerateFuncMap = { @@ -387,6 +498,9 @@ const sectionToGenerateFuncMap: SectionToGenerateFuncMap = { VitalSigns: generateVitalSignsSection, Pregnancy: generatePregnancySection, SocialHistory: generateSocialHistorySection, + Alerts: generateAlertsSection, + CarePlan: generateCarePlanSection, + AdvancedDirectives: generateAdvencedDirectivesSection }; export const addFullUrl = ( @@ -405,44 +519,35 @@ export const addFullUrl = ( ); }; -const buildQueriesForSection = ( - sectionName: SectionName, +const buildQueryForSection = ( + resourceType: string, patientId: string -): Array | undefined => { - const profiles = sectionProfiles[sectionName]; - if (!profiles) return undefined; - - return Object.keys(profiles).map( - (resourceType) => - `/fhir/${resourceType}?patient=${patientId}` - ); +): string => { + return `/fhir/${resourceType}?patient=${patientId}`; }; const fetchSummaryResources = async (http: HttpClient, patientId: string) => { - const bundleEntry = sectionNames.reduce((acc: BundleEntry, sectionName) => { - if (sectionName === "IllnessHistory" && sectionNames.includes("ProblemList")) - return acc; + const resourceTypes = sectionNames.reduce((acc: Set, sectionName) => { - const sectionsQueries = buildQueriesForSection(sectionName, patientId); - if (sectionsQueries) { - const entries = sectionsQueries.map((query) => ({ - request: { method: "GET", url: query }, - })); + Object.keys(sectionProfiles[sectionName]).map( + (resourceType) => acc.add(resourceType) + ); - acc.push(...entries); - } return acc; - }, []); + }, new Set()); + + const entries = [...resourceTypes].map((resourceType) => ({ + request: { method: "GET", url: buildQueryForSection(resourceType, patientId) }, + })); const { response }: any = await http.post("", { json: { resourceType: "Bundle", type: "transaction", - entry: bundleEntry, + entry: entries, }, }); - console.log('response', JSON.stringify(response)); return response.data?.entry?.reduce((acc: PatientData, item: any) => { if (item.resource?.total > 0) { @@ -452,8 +557,46 @@ const fetchSummaryResources = async (http: HttpClient, patientId: string) => { }, []); }; +const filterResourcesByProfiles = async (http: HttpClient, patientData: PatientData) => { + const newPatientData: PatientData = []; + const profileData: Record> = {}; + + for (const resource of patientData) { + let verifiedOnce = false; + const resourceType = resource.resource.resourceType; + + for (const sectionName of sectionNames) { + const sectionProfileEntries = Object.entries(sectionProfiles[sectionName]); + + for (const [profileResourceType, profiles] of sectionProfileEntries) { + if (resourceType === profileResourceType) { + for (const profile of profiles as Array) { + const result = await validateByAidbox(http, resource.resource, resourceType, profile); + const validationResult = (result.response.data as Record)["id"] as string; + if (validationResult === "allok") { + verifiedOnce = true; + + if (!profileData[sectionName]) { + profileData[sectionName] = []; + } + profileData[sectionName].push(buildReference(resourceType, resource.resource.id!)); + } + } + } + } + } + + if (verifiedOnce) { + newPatientData.push(resource); + } + } + + return { patientData: newPatientData, profileData: profileData }; +}; + export const generateSections = async (http: HttpClient, patientId: string) => { - const patientData = await fetchSummaryResources(http, patientId); + const resources = await fetchSummaryResources(http, patientId); + const {patientData, profileData} = await filterResourcesByProfiles(http, resources); const sections = sectionNames.reduce((acc: any, item) => { const section = sectionToGenerateFuncMap[item](patientData, http); diff --git a/ips_ig_cl/src/operations.ts b/ips_ig_cl/src/operations.ts index b99c74f..c2ddb2a 100644 --- a/ips_ig_cl/src/operations.ts +++ b/ips_ig_cl/src/operations.ts @@ -16,9 +16,7 @@ const generateSummary = async ({ http, appConfig }: Request, patient: Patient) = try { assert(patient.id, "Patient Id is required"); const patientId = patient.id; - console.log('patient.id', patient.id); const { sections, bundleData }: any = await generateSections(http, patientId); - console.log(bundleData); const composition = createComposition(sections, patientId); const refResources = await getResourcesFromRefs(http, bundleData); @@ -74,7 +72,6 @@ export const patientSummarySearch = { fhirResource: ["Patient"], path: ["fhir", "Patient", "$summary"], handlerFn: async (req: Request, reply: FastifyReply) => { - console.log(req); try { const patientIdentifier = req.body?.request?.params?.identifier; diff --git a/ips_ig_cl/src/types.d.ts b/ips_ig_cl/src/types.d.ts index 5272894..3e6589c 100644 --- a/ips_ig_cl/src/types.d.ts +++ b/ips_ig_cl/src/types.d.ts @@ -1,8 +1,11 @@ import { Client as AidboxClient } from "@aidbox/sdk-r4"; import { AllergyIntolerance } from "@aidbox/sdk-r4/types/hl7-fhir-r4-core/AllergyIntolerance"; +import { CarePlan } from "@aidbox/sdk-r4/types/hl7-fhir-r4-core/CarePlan"; import { Condition } from "@aidbox/sdk-r4/types/hl7-fhir-r4-core/Condition"; +import { Consent } from "@aidbox/sdk-r4/types/hl7-fhir-r4-core/Consent"; import { DeviceUseStatement } from "@aidbox/sdk-r4/types/hl7-fhir-r4-core/DeviceUseStatement"; import { DiagnosticReport } from "@aidbox/sdk-r4/types/hl7-fhir-r4-core/DiagnosticReport"; +import { Flag } from "@aidbox/sdk-r4/types/hl7-fhir-r4-core/Flag"; import { Immunization } from "@aidbox/sdk-r4/types/hl7-fhir-r4-core/Immunization"; import { Medication } from "@aidbox/sdk-r4/types/hl7-fhir-r4-core/Medication"; import { MedicationRequest } from "@aidbox/sdk-r4/types/hl7-fhir-r4-core/MedicationRequest"; @@ -77,7 +80,11 @@ export type PatientData = Array<{ | Procedure | DeviceUseStatement | DiagnosticReport - | Observation; + | Observation + | CarePlan + | Consent + | Flag + ; }>; export type SimpleNarrativeEntry = Array<{ @@ -95,20 +102,32 @@ export type SectionName = | "DiagnosticResults" | "VitalSigns" | "Pregnancy" - | "SocialHistory"; + | "SocialHistory" + | "StatusFunctional" + | "CarePlan" + | "Alerts" + | "AdvancedDirectives"; export type IpsProfile = - | "http://hl7.org/fhir/uv/ips/StructureDefinition/Condition-uv-ips" - | "http://hl7.org/fhir/uv/ips/StructureDefinition/AllergyIntolerance-uv-ips" - | "http://hl7.org/fhir/uv/ips/StructureDefinition/MedicationStatement-uv-ips" - | "http://hl7.org/fhir/uv/ips/StructureDefinition/MedicationRequest-uv-ips" - | "http://hl7.org/fhir/uv/ips/StructureDefinition/Immunization-uv-ips" - | "http://hl7.org/fhir/uv/ips/StructureDefinition/Procedure-uv-ips" - | "http://hl7.org/fhir/uv/ips/StructureDefinition/DeviceUseStatement-uv-ips" - | "http://hl7.org/fhir/uv/ips/StructureDefinition/DiagnosticReport-uv-ips" - | "http://hl7.org/fhir/uv/ips/StructureDefinition/Observation-results-uv-ips" - | "http://hl7.org/fhir/StructureDefinition/vitalsigns" - | "http://hl7.org/fhir/uv/ips/StructureDefinition/Observation-pregnancy-outcome-uv-ips"; + | "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/RegMedicamentos-cl-ips" + | "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/MedicationRequest-cl-ips" + | "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/AllergiaInt-cl-ips" + | "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Procedimientos-cl-ips" + | "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Inmunizacion-cl-ips" + | "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Declaracion-uso-dispositivo-cl-ips" + | "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/DiagnosticReport-cl-ips" + | "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Observation-resultado-laboratorio-patologico-cl-ips" + | "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Observation-resultado-radiology-cl-ips" + | "http://hl7.org/fhir/StructureDefinition/vitalsigns" + | "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Condition-cl-ips" + | "http://hl7.org/fhir/StructureDefinition/ClinicalImpression" + | "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Observation-estado-del-embarazo-cl-ips" + | "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Observation-resultado-del-embarazo-cl-ips" + | "http://hl7.org/fhir/StructureDefinition/CarePlan" + | "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Observation-uso-de-tabaco-cl-ips" + | "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Observation-uso-de-alcohol-cl-ips" + | "https://hl7chile.cl/fhir/ig/clips/StructureDefinition/Flag-alerta-cl-ips" + | "http://hl7.org/fhir/StructureDefinition/Consent"; export type SectionToGenerateFuncMap = { [K in SectionName]?: any; @@ -124,3 +143,7 @@ export type BundleEntry = Array<{ export type SectionProfiles = { [K in SectionName]: Record>; }; + +export type SectionProfilesSearches = { + [k in IpsProfile]: string | null; +};