UNPKG

@oystehr/sdk

Version:

Oystehr SDK

32 lines (28 loc) 1.44 kB
import { Encounter as EncounterR4B } from 'fhir/r4b'; import { Encounter as EncounterR5 } from 'fhir/r5'; export const ENCOUNTER_VS_EXTENSION_URL = 'https://extensions.fhir.zapehr.com/encounter-virtual-service-pre-release'; export const ENCOUNTER_VS_EXTENSION_RELATIVE_URL = 'addressString'; const ENCOUNTER_VS_CODING_SYSTEM = 'https://fhir.zapehr.com/virtual-service-type'; function isR5Encounter(encounter: EncounterR4B | EncounterR5): encounter is EncounterR5 { return Object.hasOwn(encounter as EncounterR5, 'virtualService'); } /** * Helper function to get a conversationId from an encounter created as an Oystehr Conversation * @param encounter well-formed FHIR R4B or R5 Encounter * @returns conversationId */ export function getConversationIdFromEncounter(encounter: EncounterR4B | EncounterR5): string | undefined { if (isR5Encounter(encounter)) { const virtualService = encounter.virtualService?.find( (vs) => vs.channelType?.system === ENCOUNTER_VS_CODING_SYSTEM ); return virtualService?.addressString; } if (!encounter.extension) return; const virtualServiceExtension = encounter.extension.find((extension) => extension.url === ENCOUNTER_VS_EXTENSION_URL); if (!virtualServiceExtension?.extension) return; const conversationId = virtualServiceExtension.extension?.find( (extension) => extension.url === ENCOUNTER_VS_EXTENSION_RELATIVE_URL )?.valueString; return conversationId; }