Changelog
Release history for the Vim Connect App SDK
How to read this changelog
The SDK is published to npm as @vimconnect/app-sdk.
Every release you see below changed the SDK's public type surface — the entity types, workflow
events, error codes, exports and initialization options your app compiles against.
Releases that changed only internals are deliberately not listed. Most releases are of that kind, so listing them all would bury the ones that can actually affect your code.
Each release carries a label saying how it can affect your code, and sometimes a second saying what it changed about EHR coverage:
| Label | What it means for you |
|---|---|
| New feature | Names were added. Existing code keeps compiling; adopt the new names when you need them. |
| Breaking change | A name was removed or renamed. On an SDK release your code stops compiling; on a collection release it keeps compiling and the field reads undefined, which is the more dangerous of the two. The entry names the replacement. |
| New EHR system | A whole EHR configuration is now supported. |
| New EHR fields | Additional fields on an EHR already supported. |
An entry headed Collection vNN is a collection release — a change to what the platform scrapes, maps and automates inside a live EHR. Those reach your app through the platform rather than through npm, so there is nothing to install and usually no TypeScript to diff: a new field on an existing entity, a wider enum or a whole new EHR adapter leaves the exported names untouched. The two EHR labels appear only on these, and a collection release can carry Breaking change alongside one of them — a release that both removes a field and adds coverage is both things at once. They are listed here beside the SDK releases, in date order, because a developer chasing a behaviour change does not know in advance which side it came from. Check the EHR Support Matrix for current coverage.
Pin a version in package.json if you want to upgrade deliberately. The SDK loads its runtime from
Vim's CDN, so bug fixes reach your app without a version bump — only the type surface tracked here
is tied to the version you install.
Every line links to the reference page that documents that part of the SDK: entity types, workflow events, error codes, exports and init options.
v0.6.0 — 2026-10-13
Breaking change- Entity types — added
Claim,ClaimOpenEvent,Facility,ProviderAddress,ProviderContactInfo,ProviderDemographics,ProviderFacility,ReferralFacility,ReferralOpenEvent; removedProviderFacilitty,ReferralStartEvent - Workflow events — added
claim_open,referral_open; removedreferral_start - Exports — added
Claim,ClaimOpenEvent,ClaimOpenEventSchema,ClaimSchema,DeprecationStatus,EntityManifestItem,EntitySchema,EventManifestItem,Facility,FacilityApi,FacilitySchema,FieldSchema,ProviderAddress,ProviderAddressSchema,ProviderContactInfo,ProviderContactInfoSchema,ProviderDemographics,ProviderDemographicsSchema,ProviderFacility,ProviderFacilitySchema,ReferralFacility,ReferralFacilitySchema,ReferralOpenEvent,ReferralOpenEventSchema,TypeDefinition,isSDKError; removedProviderFacilitty,ProviderFacilittySchema,ReferralStartEvent,ReferralStartEventSchema
Collection v51 — 2026-10-13
Every entity, field and operation on Vim's entity store now carries a description and an explicit order. The descriptions reach you as JSDoc on the generated SDK types, so they show in your editor's autocomplete, and they fill the columns that were blank in the API reference. Operations now list reads before writes, so patient.get comes before patient.create. Nothing changes shape — this release adds documentation and ordering only, and no code needs to change.
Collection v50 — 2026-10-12
Breaking change New EHR fieldsreferral_start is gone — subscribe to referral_open instead, which fires on an existing referral form as well as a new one, so it catches referrals the old event missed. Patient identity moved: read patient.identifiers.sourceId rather than identifierField. identifiers.ehrPatientId, id and sourcePatientId are still extracted in every system but are deprecated. referral.basicInformation.facilityName is replaced by referringFacility and targetFacility, naming the two ends of a referral separately. New this release: a claim entity with a claim_open event, and a facility entity you can read with facility.getById.
- Entity types —
claim,facility - Shared types —
provider-address,provider-contact-info,provider-demographics,provider-facility,referral-facility - Workflow events —
claim_open,referral_open - API operations —
facility.getById - Fields —
patient.identifiers.sourceId,patient.identifiers.sourcePatientId,provider.demographics,provider.identifiers,provider.identifiers.ehrProviderId,provider.identifiers.npi, and 7 more - Removed shared types —
provider-facilitty - Removed workflow events —
referral_start - Removed fields —
referral.basicInformation.facilityName
v0.5.0 — 2026-10-06
New feature- Entity types — added
MedicationBasicInformation - Error codes — added
PERMISSION_DENIED - Exports — added
MedicationBasicInformation,MedicationBasicInformationSchema
Collection v46 — 2026-10-06
New EHR fieldspatient.demographics.gender now arrives as male, female or unknown on every supported EHR. The mapping is case-tolerant, and anything unrecognised becomes unknown rather than passing through as the EHR wrote it — so you can drop any normalising you do on your side. The release also adds referral.procedureCodes and a patient read on Elation.
- Fields —
referral.procedureCodes
Collection v42 — 2026-09-28
New EHR fieldsorder.basicInformation.type now arrives populated rather than merely declared — RX and LAB on eClinicalWorks, all four values on the Sandbox EHR — so an app can tell a prescription from a lab order without inferring it from the order's contents. The medication.basicInformation shape is now a named medicationBasicInformation type; every path reads exactly as before.
- Shared types —
medicationBasicInformation
Collection v38 — 2026-09-24
New EHR system New EHR fieldsDrChrono and Elation join the supported EHRs — an app already built against the entity API now runs for those practices with no code change. The release also gives medication a basicInformation object holding six values it already exposes at the top level, so both shapes are live at once; keep reading the flat fields until the duplicates are resolved.
- EHR systems —
drchrono,elation - Fields —
medication.basicInformation,medication.basicInformation.endDate,medication.basicInformation.medicationName,medication.basicInformation.ndcCode,medication.basicInformation.onSetDate,medication.basicInformation.recordedDate, and 1 more
Collection v37 — 2026-09-10
Breaking change New EHR fieldsorder.orderingProvider is now order.orderingProviderId — the id alone, rather than the embedded provider. If you read the old field you get undefined; resolve the id through provider.getById({ providerId: order.orderingProviderId }).
- Fields —
order.orderingProviderId - Removed fields —
order.orderingProvider
Collection v34 — 2026-09-03
New EHR fieldsMedications carry status, endDate and recordedDate, so you can tell an active prescription from a discontinued one instead of treating every row on the list as current.
- Fields —
medication.endDate,medication.recordedDate,medication.status
Collection v33 — 2026-08-21
Breaking change New EHR fieldsVitals are readable through patient.getVitals(), with a LOINC code and a UCUM unit, so a blood pressure arrives labelled rather than as a bare number. The shape changed to get there: vital.name, unit, loinc, value and measurementDate moved under basicInformation and values, so the flat fields read undefined.
- API operations —
patient.getVitals - Fields —
patient.vitals,vital.basicInformation,vital.basicInformation.loinc,vital.basicInformation.name,vital.basicInformation.unit,vital.values - Removed fields —
vital.loinc,vital.measurementDate,vital.name,vital.unit,vital.value
Collection v32 — 2026-08-21
New EHR fieldspatient.getMedications() returns the medication list, with onSetDate for when each was started. Before this the only medications you could see were the ones on an order.
- API operations —
patient.getMedications - Fields —
medication.onSetDate,patient.medications
v0.4.55 — 2026-08-14
New featureAdds a provider entity you can read directly — name, specialty, NPI and facility — instead of picking provider fields out of the encounter or referral that referenced them.
- Entity types — added
ProviderFacilitty,ProviderRecord,Quantity - Exports — added
ProviderApi,ProviderFacilitty,ProviderFacilittySchema,ProviderRecord,ProviderRecordSchema,Quantity,QuantitySchema
Collection v31 — 2026-08-14
Breaking change New EHR fieldsThe provider entity is now providerRecord. The old id collided with the Provider shared type and broke type generation; if you referenced provider as an entity type, rename it. The Provider type on encounters and referrals is unchanged.
- Entity types —
providerRecord - Removed entity types —
provider - Removed fields —
provider.demographics,provider.facility,provider.identifiers,provider.identifiers.ehrProviderId,provider.identifiers.npi
Collection v30 — 2026-08-14
New EHR fieldsProviders become a thing you can fetch: provider.getById({ providerId }) returns demographics, NPI and facility for a provider id you already hold — a referral's target provider, say, or the patient's PCP — instead of making do with the few fields the referencing record carries.
- Entity types —
provider - Shared types —
provider-facilitty - API operations —
provider.getById - Fields —
provider.demographics,provider.facility,provider.identifiers,provider.identifiers.ehrProviderId,provider.identifiers.npi
Collection v29 — 2026-08-13
New EHR fieldsMedication quantity is a typed Quantity — a value and a unit — rather than a loose shape, so "30 tablets" survives the round trip with its unit attached.
- Shared types —
quantity
Collection v27 — 2026-08-10
Breaking change New EHR fieldsorder.medication is a single object, not an array. An order carries one medication, and the array implied otherwise. Code doing order.medication[0] reads undefined rather than failing, so this is worth checking for even if nothing broke visibly.
- Fields —
order.medication - Removed fields —
order.medications
v0.4.50 — 2026-07-27
New featureOrders become observable: order_select and order_sign tell your app when the provider picks an order and when they sign it, and LabResult gives lab data a type of its own. If your app reacts to ordering, this is the release that lets it.
- Entity types — added
LabResult,OrderSelectEvent,OrderSignEvent - Workflow events — added
order_select,order_sign - Exports — added
LabResult,LabResultSchema,OrderApi,OrderSelectEvent,OrderSelectEventSchema,OrderSignEvent,OrderSignEventSchema
Collection v20 — 2026-07-27
Breaking change New EHR fieldsThe largest data release so far: allergies and lab results become readable and typed, orders become observable through order_select and order_sign, and encounters expose their procedure codes. Allergy was restructured to do it — allergen, allergenType, reaction and severity moved into allergyDetails and allergyReactionDetails — and order.diagnoses became order.assessments. This is the collection half of SDK v0.4.50.
- Shared types —
labResult - Workflow events —
order_select,order_sign - API operations —
encounter.getProcedureCodes,order.getOrderById,patient.getAllergies,patient.getLabResults - Fields —
allergy.allergyDetails,allergy.allergyDetails.criticality,allergy.allergyDetails.name,allergy.allergyReactionDetails,allergy.allergyReactionDetails.name,allergy.allergyReactionDetails.severity, and 16 more - Removed fields —
allergy.allergen,allergy.allergenType,allergy.reaction,allergy.severity,order.createdDate,order.diagnoses, and 7 more
v0.4.49 — 2026-07-26
New featureTwo timeouts you can tune — handshakeTimeout and requestTimeout — for apps on slower EHR hosts where the defaults were too tight. EXTENSION_UPDATE_REQUIRED lets you tell a provider their extension is too old rather than failing with a generic connection error.
- Error codes — added
EXTENSION_UPDATE_REQUIRED - Exports — added
PaginatedResponse,Pagination - Init options — added
handshakeTimeout,requestTimeout
Collection v15 — 2026-07-09
New EHR systemeClinicalWorks (web) joins the supported EHRs. Nothing changes in your code — an app already built against the entity API now runs for ecw-web practices.
- EHR systems —
ecw_web
v0.4.46 — 2026-06-29
New featureFour workflow events gain their own types, so a handler for chart_open, encounter_open, referral_start or referral_save gets the event's shape from the compiler instead of a cast.
- Entity types — added
ChartOpenEvent,EncounterOpenEvent,ReferralSaveEvent,ReferralStartEvent - Exports — added
ApiResponse,ChartOpenEvent,ChartOpenEventSchema,EncounterOpenEvent,EncounterOpenEventSchema,ReferralSaveEvent,ReferralSaveEventSchema,ReferralStartEvent,ReferralStartEventSchema,TypedContextData
Collection v8 — 2026-06-16
Breaking change New EHR fieldsEncounters carry billing: read encounter.billingInformation.procedureCodes and write them back with encounter.updateProcedureCodes(), which is what a coding or charge-capture app needs. This replaces encounter.billingCodes and encounter.updateBillingCodes(), and the cpt_code type is now procedure — the old names are gone, not deprecated.
- EHR URLs now matched —
azalea: https://sso.azaleahealth.com/ - Shared types —
procedure - API operations —
encounter.updateProcedureCodes - Fields —
encounter.billingInformation,encounter.billingInformation.procedureCodes - Removed shared types —
cpt_code - Removed API operations —
encounter.updateBillingCodes - Removed fields —
encounter.billingCodes
v0.4.43 — 2026-06-14
Breaking changeCptCode becomes Procedure, and the system field goes with it — a procedure code now arrives without saying which code set it belongs to, so code that branched on system has nothing to branch on. The idToken init option lands in the same release, letting an app that runs its own token exchange still use getIdToken().
- Entity types — added
Procedure; removedCptCode - Error codes — added
ID_TOKEN_UNAVAILABLE - Exports — added
Procedure,ProcedureSchema; removedCptCode,CptCodeSchema - Init options — added
idToken
v0.4.38 — 2026-05-17
New featureThe error surface becomes specific: 25 codes replace guessing from messages, so an app can tell a missing extension from a timeout from a permission refusal and respond to each differently.
- Error codes — added
BRIDGE_INIT_ERROR,CONNECTION_TIMEOUT,ENTITY_NOT_IN_CONTEXT,EXTENSION_NOT_FOUND,HANDSHAKE_TIMEOUT,INIT_ERROR,INVALID_DATA,INVALID_FIELDS,INVALID_OPERATION,INVALID_TOKEN_ENDPOINT,MANIFEST_NOT_AVAILABLE,MISSING_ACCESS_TOKEN,MISSING_REQUIRED_PARAMETER,MISSING_TOKEN_CODE,NOT_CONNECTED,NOT_EXISTS,NOT_IMPLEMENTED,OPERATION_NOT_CONFIGURED,PERMISSION_REQUIRED,TIMEOUT,TOKEN_FETCH_ERROR,TOKEN_REQUIRED,TOKEN_VALIDATION_FAILED,VALIDATION_ERROR,WRONG_CONTEXT
v0.4.16 — 2026-05-03
New featureWorker Apps arrive — a headless runtime that receives EHR events without the provider opening your app — along with the namespace types the UI and worker SDKs are built from.
- Exports — added
ApiNamespace,EhrContextHandleNamespace,HookDeclaration,HubNamespace,InvalidationReason,SuggestWritebackOptions,UIAppSDK,UIContextHandle,UIWorkflowHandle,WorkerContextCallback,WorkerContextHandle,WorkerHubState,WorkerSDK,WorkerWorkflowCallback,WorkerWorkflowHandle,getWorkerVimSDK,initWorkerVimSDK
Read 39 of the 39 SDK versions published up to 0.6.1 (2026-10-15); 9 changed the public type surface. Walked the production collection to v51 (2026-10-13); 16 releases changed something an app can observe.
v0.4.0 — Initial public release
The baseline feature set, before the version-by-version history above.
- SDK initialization (
initVimSDK,getVimSDK) - Workflow event subscriptions
- Context change tracking
- Entity API (patient, encounter, referral, order)
- Context writeback with permission flow
- Hub controls (activation status, badges, push notifications)
- Worker App support (
initWorkerVimSDK,workerState,suggestWriteback) - Full TypeScript types and Zod schemas for all entity types
zodv4+ as peer dependency