When a clearance is created or updated against an IPD admission (for example a pharmacy, billing or housekeeping clearance), a webhook event is sent to registered webhooks with the clearance status and details.
Field Definitions
• service: string - The type of service. For IPD events, this will be ipd.
• event: string - The type of event. This will be ipd_admissions_clearances.created or ipd_admissions_clearances.updated.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Eka Developer Platform APIs","colors":{"primary":"#5B45C9","light":"#B6A8FF","dark":"#5B45C9"},"logo":{"light":"https://cdn.eka.care/vagus/clzwrv3o600260ti3bg9q1det.png","dark":"https://cdn.eka.care/vagus/clzws1tfc00270ti3eiwn5jo5.png"},"favicon":"https://mintcdn.com/ekacare/uZX0UtACdJOcX7uJ/favicon.svg?fit=max\u0026auto=format\u0026n=uZX0UtACdJOcX7uJ\u0026q=85\u0026s=9ecadef0a25715531f08b66c68c31915","api":{"examples":{"languages":["bash","python","typescript","java","csharp","ruby"]}},"background":{"color":{"light":"#FAFAF9","dark":"#0A0A0A"}},"navbar":{"links":[{"icon":"hammer","href":"/developer-tools","label":"Developer tools"},{"icon":"/images/icons/github.svg","href":"https://github.com/eka-care","label":"GitHub"},{"icon":"/images/icons/huggingface.svg","href":"https://huggingface.co/ekacare","label":"Hugging Face"},{"icon":"/images/icons/discord.svg","href":"https://discord.gg/THgd5S22EK","label":"Discord"}],"primary":{"type":"button","label":"Build Now","href":"https://console.eka.care"}},"footer":{"socials":{"x":"https://x.com/ekacarehq","github":"https://github.com/eka-care","linkedin":"https://www.linkedin.com/company/ekacare","discord":"https://discord.gg/THgd5S22EK","website":"https://www.eka.care"},"links":[{"header":"Solutions","items":[{"label":"Medical Scribe","href":"/docs/scribe/overview"},{"label":"Medical Document Parsing","href":"/docs/models/medical-document-parsing"},{"label":"Clinical MCP","href":"/docs/datasets/build-with-ai/mcp-server/introduction"},{"label":"ABDM Connect","href":"/docs/hie-cm/about"}]},{"header":"Resources","items":[{"label":"Get started","href":"/docs/get-started/overview"},{"label":"Cookbook","href":"/docs/get-started/cookbook"},{"label":"Auth","href":"/docs/auth/invite-flow"},{"label":"Encryption","href":"/docs/encryption/guide"},{"label":"Eka MCP","href":"/docs/emr/build-with-ai/mcp-server/introduction"},{"label":"Developer tools","href":"/developer-tools"}]},{"header":"Newsboard","items":[{"label":"Eka Labs","href":"/docs/models/spotlight"},{"label":"Under the hood","href":"/docs/get-started/under-the-hood"},{"label":"Changelog","href":"/docs/get-started/changelog"}]},{"header":"Community","items":[{"label":"GitHub","href":"https://github.com/eka-care"},{"label":"Hugging Face","href":"https://huggingface.co/ekacare"},{"label":"Discord","href":"https://discord.gg/THgd5S22EK"},{"label":"eka.care","href":"https://www.eka.care"}]}]},"fonts":{"heading":{"family":"Newsreader","weight":420},"body":{"family":"Geist"}},"icons":{"library":"fontawesome"},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"interaction":{"drilldown":false},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"ekacare","hasAudioNarration":false,"actualSubdomain":"ekacare","customDomains":["developer.eka.care"],"gitSource":{"type":"github","owner":"eka-care","repo":"eka-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae1990d51ebb4ac960cc7e8","collectionId":"eb976c09-9b05-425d-b2e5-4bdac54aa027","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae1990d51ebb4ac960cc7e8"},"feedback":{"thumbs":true,"edits":false,"issues":false},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae43765968a9af9aa452fca","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"HIE-CM","count":222},{"language":"default","tag":"ABDM Connect","count":204},{"language":"default","tag":"APIs \u0026 SDKs","count":178},{"language":"default","tag":"Documentation","count":136},{"language":"default","tag":"HIE-CM API","count":95},{"language":"default","tag":"Clinical AI","count":61},{"language":"default","tag":"Medical Scribe","count":53},{"language":"default","tag":"Resources","count":48},{"language":"default","tag":"NHCX","count":39},{"language":"default","tag":"NHCX API","count":33}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"styles.css","content":"/* cyrillic-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrodmgPn.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrMdmgPn.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* symbols2 */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFg08vz7ehw.woff2) format('woff2');\n unicode-range: U+2000-2001, U+2004-2008, U+200A, U+23B8-23BD, U+2500-259F;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrgdmgPn.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrkdmgPn.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrcdmg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n:root{--eka-accent:#98B4FC;--eka-accent-ink:#4C7EFE;--eka-lilac:#5B45C9;--eka-lilac-tint:rgba(124, 92, 255, .12);--eka-lilac-edge:rgba(124, 92, 255, .22);--eka-lilac-hover:rgba(124, 92, 255, .18);--eka-neutral-edge:#D4D4D0;--eka-accent-wash:rgba(33, 95, 255, .07);--eka-heading:color-mix(in srgb, #141413 70%, #215FFF);--eka-line:#E7E7E4;--eka-surface:#FFFFFF;--eka-dot:rgba(147, 147, 142, .156);--eka-mono:\"Geist Mono\", ui-monospace, \"SF Mono\", monospace}.dark{--eka-accent:#445C9D;--eka-accent-ink:#6B93FF;--eka-lilac:#B6A8FF;--eka-lilac-tint:rgba(160, 140, 255, .14);--eka-lilac-edge:rgba(160, 140, 255, .25);--eka-lilac-hover:rgba(160, 140, 255, .20);--eka-neutral-edge:rgba(255, 255, 255, .18);--eka-accent-wash:rgba(107, 147, 255, .07);--eka-heading:color-mix(in srgb, #EDEDEC 70%, #6B93FF);--eka-line:rgba(255, 255, 255, .08);--eka-surface:#111111;--eka-dot:rgba(255, 255, 255, .054)}#background-color::after{content:\"\";position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(circle,var(--eka-dot) .95px,transparent 1.25px);background-size:24px 24px;-webkit-mask-image:radial-gradient(ellipse 75% 70% at 50% 40%,#000 30%,transparent 100%);mask-image:radial-gradient(ellipse 75% 70% at 50% 40%,#000 30%,transparent 100%)}#content :is(h1, h2, h3, h4),#page-title{font-weight:420!important;font-optical-sizing:auto;color:var(--eka-heading)!important;letter-spacing:.012em!important}body{letter-spacing:.015em}#sidebar{border-right:1px solid var(--eka-line)}#content-side-layout{border-left:1px solid var(--eka-line)}#content>h2{position:relative;margin-top:3.5rem;padding-top:2.5rem}#content>h2::before{content:\"\";position:absolute;top:0;left:0;right:0;height:5px;pointer-events:none;background:linear-gradient(var(--eka-line),var(--eka-line)) 0 0/100% 1px no-repeat,linear-gradient(var(--eka-line),var(--eka-line)) 0 100%/100% 1px no-repeat}@media (min-width:1024px){#content>h2::before{left:-43px;right:-4px}}@media (min-width:1280px){#content>h2::before{right:-52px}}#content a.link:not(.eka-postman-btn){color:var(--eka-accent-ink)!important;border-bottom-color:color-mix(in srgb,var(--eka-accent-ink) 45%,transparent)!important}#content a.link:not(.eka-postman-btn):hover{border-bottom-color:var(--eka-accent-ink)!important}#topbar-cta-button a>span:first-child{background:var(--eka-lilac-tint)!important;box-shadow:inset 0 0 0 1px var(--eka-lilac-edge);border-radius:999px!important}#topbar-cta-button a :is(span, svg){color:var(--eka-lilac)!important}#topbar-cta-button a{height:32px;padding:0 14px!important;font-size:13px!important;font-weight:500;align-items:center}#topbar-cta-button a:hover>span:first-child{background:var(--eka-lilac-hover)!important;opacity:1!important}#navbar a[href^=\"https://discord.gg/\"]>span,#topbar-cta-button a>div>svg{display:none!important}#content :is(code, pre),[data-component-part=code-block-root]{font-family:var(--eka-mono);letter-spacing:normal}.callout:is([data-callout-type=\"note\"], [data-callout-type=\"info\"]){border:1px solid var(--eka-line)!important;border-left:2px solid var(--eka-accent)!important;border-radius:0 12px 12px 0!important;background:var(--eka-surface)!important}.callout:is([data-callout-type=\"note\"], [data-callout-type=\"info\"]) [data-component-part=callout-icon]{color:var(--eka-accent-ink)}#content .card{border-color:var(--eka-line)!important;transition:border-color .15s ease,transform .15s ease}#content a.card:hover,#content a:hover>.card{border-color:var(--eka-accent)!important;transform:translateY(-2px)}#content [data-component-part=card-icon]{color:var(--eka-accent-ink)!important;fill:var(--eka-accent-ink)!important}[data-component-part=step-indicator]{background:var(--eka-surface)!important;box-shadow:inset 0 0 0 1px var(--eka-accent)!important;color:var(--eka-accent-ink)!important;font-family:var(--eka-mono)}.eka-card-wrapper{border-radius:14px;transition:transform .15s ease}.eka-card-wrapper:hover{transform:translateY(-3px)}.eka-card-wrapper:hover>*{box-shadow:0 12px 28px rgba(94,106,152,.16);border-color:var(--eka-accent)}.eka-divider{border:0;border-top:1px solid var(--eka-line);margin:48px 0}.eka-tags{display:inline;margin-left:6px;white-space:normal}.eka-postman-link code,.eka-tag{white-space:nowrap;border-radius:6px}.eka-tag{display:inline-block;font-size:11px;font-weight:500;line-height:1;padding:3px 7px;margin:0 0 2px 4px;vertical-align:middle;color:#6b7280;background:rgba(107,114,128,.1)}.dark .eka-tag{color:#9ca3af;background:rgba(156,163,175,.14)}.eka-postman{border:1px solid rgba(17,24,39,.1);border-radius:14px;padding:20px 24px;margin:16px 0 24px}.eka-postman-text{font-size:15px;line-height:1.6;color:#4b5563}.eka-postman-actions{display:flex;flex-wrap:wrap;gap:12px;margin:16px 0}.eka-postman-btn{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border:1px solid var(--eka-neutral-edge);border-radius:8px;font-size:15px;font-weight:500;color:#141413;background:0 0;text-decoration:none;transition:background .15s ease}.eka-postman-btn:hover{background:rgba(20,20,19,.04)}.eka-postman-btn-primary{color:var(--eka-lilac);background:var(--eka-lilac-tint);border-color:var(--eka-lilac-edge)}.eka-postman-btn-primary:hover{background:rgba(124,92,255,.18)}.eka-postman-link{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid rgba(17,24,39,.1);border-radius:10px;background:rgba(17,24,39,.03)}.eka-postman-link code{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:13px;padding:6px 8px;background:rgba(17,24,39,.05)}.eka-postman-link button{flex-shrink:0;display:inline-flex;padding:4px;font-size:13px;color:#6b7280;background:0 0;border:0;cursor:pointer}.eka-postman-link button:hover{color:var(--eka-accent-ink)}.eka-postman-note{margin-top:12px;font-size:14px;color:#6b7280}.eka-postman-error{margin:-4px 0 12px;font-size:14px;color:#b42318}.dark .eka-postman-error{color:#f97066}.dark .eka-postman{border-color:rgba(255,255,255,.12)}.dark .eka-postman-text{color:#d1d5db}.dark .eka-postman-btn{color:#ededec;border-color:var(--eka-neutral-edge)}.dark .eka-postman-btn:hover{background:rgba(255,255,255,.05)}.dark .eka-postman-btn-primary{color:var(--eka-lilac);background:var(--eka-lilac-tint);border-color:var(--eka-lilac-edge)}.dark .eka-postman-btn-primary:hover{background:rgba(160,140,255,.2)}.dark .eka-postman-link{border-color:rgba(255,255,255,.12);background:rgba(255,255,255,.04)}.dark .eka-postman-link code{color:#e5e7eb;background:rgba(255,255,255,.06)}.dark .eka-postman-link button,.dark .eka-postman-note{color:#9ca3af}[data-component-part=products-selector-content]{--ps-line:#E7E7E4;--ps-ink:#141413;--ps-ink-3:#93938E;--ps-bg:#FAFAF9;--ps-surface:#FFFFFF;background:var(--ps-surface)!important;border:1px solid var(--ps-line);border-radius:16px!important;padding:14px!important;box-shadow:0 1px 2px rgba(20,20,19,.04),0 24px 48px rgba(20,20,19,.1)!important}.dark [data-component-part=products-selector-content]{--ps-line:rgba(255, 255, 255, .08);--ps-ink:#EDEDEC;--ps-ink-3:#6B6B68;--ps-bg:#0A0A0A;--ps-surface:#111111}[data-component-part=products-selector-content]>div{--fam:#64748B}[data-component-part=products-selector-content]>div:nth-child(1){--fam:#7C5CFF}[data-component-part=products-selector-content]>div:nth-child(2){--fam:#215FFF}[data-component-part=products-selector-content]>div:nth-child(3){--fam:#E8650A}.dark [data-component-part=products-selector-content]>div{--fam:#A3B1C6}.dark [data-component-part=products-selector-content]>div:nth-child(1){--fam:#A08CFF}.dark [data-component-part=products-selector-content]>div:nth-child(2){--fam:#6B93FF}.dark [data-component-part=products-selector-content]>div:nth-child(3){--fam:#FF9248}[data-component-part=products-selector-content]>div>div:first-child{width:13rem!important}@media (max-width:960px){[data-component-part=products-selector-content]>div>div:first-child{width:100%!important}}[data-component-part=products-selector-content]>div>div:first-child>div:first-child{gap:7px;margin:4px 0 6px;padding:0 10px!important;font-family:ui-monospace,\"SF Mono\",\"Geist Mono\",monospace;font-size:.64rem!important;font-weight:400!important;letter-spacing:.08em;text-transform:uppercase;color:var(--ps-ink-3)!important}[data-component-part=products-selector-content]>div>div:first-child>div:first-child::before{content:\"\";width:7px;height:7px;flex:none;border-radius:50%;background:var(--fam)}[data-component-part=products-selector-item]{grid-template-columns:30px 1fr auto!important;align-items:flex-start!important;gap:11px!important;padding:8px 10px!important;border-radius:10px!important}[data-component-part=products-selector-item]:focus-visible,[data-component-part=products-selector-item]:hover{background:color-mix(in srgb,var(--ps-ink) 4.5%,transparent)!important}.nav-dropdown-products-selector-item-icon{position:relative;width:30px;height:30px;border:1px solid var(--ps-line);border-radius:9px;background:var(--ps-bg)}.nav-dropdown-products-selector-item-icon img{opacity:0;width:15px!important;height:15px!important}.nav-dropdown-products-selector-item-icon::after{content:\"\";position:absolute;inset:0;margin:auto;width:15px;height:15px;background-color:var(--fam);mask-repeat:no-repeat;mask-position:center;mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/mic.svg\"])::after{mask-image:url(/images/icons/products/mic.svg);-webkit-mask-image:url(/images/icons/products/mic.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/plug.svg\"])::after{mask-image:url(/images/icons/products/plug.svg);-webkit-mask-image:url(/images/icons/products/plug.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/stethoscope.svg\"])::after{mask-image:url(/images/icons/products/stethoscope.svg);-webkit-mask-image:url(/images/icons/products/stethoscope.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/bot.svg\"])::after{mask-image:url(/images/icons/products/bot.svg);-webkit-mask-image:url(/images/icons/products/bot.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/brain-circuit.svg\"])::after{mask-image:url(/images/icons/products/brain-circuit.svg);-webkit-mask-image:url(/images/icons/products/brain-circuit.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/database.svg\"])::after{mask-image:url(/images/icons/products/database.svg);-webkit-mask-image:url(/images/icons/products/database.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/clipboard-list.svg\"])::after{mask-image:url(/images/icons/products/clipboard-list.svg);-webkit-mask-image:url(/images/icons/products/clipboard-list.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/bed-double.svg\"])::after{mask-image:url(/images/icons/products/bed-double.svg);-webkit-mask-image:url(/images/icons/products/bed-double.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/receipt.svg\"])::after{mask-image:url(/images/icons/products/receipt.svg);-webkit-mask-image:url(/images/icons/products/receipt.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/folder-heart.svg\"])::after{mask-image:url(/images/icons/products/folder-heart.svg);-webkit-mask-image:url(/images/icons/products/folder-heart.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/arrow-left-right.svg\"])::after{mask-image:url(/images/icons/products/arrow-left-right.svg);-webkit-mask-image:url(/images/icons/products/arrow-left-right.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/shield-check.svg\"])::after{mask-image:url(/images/icons/products/shield-check.svg);-webkit-mask-image:url(/images/icons/products/shield-check.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/network.svg\"])::after{mask-image:url(/images/icons/products/network.svg);-webkit-mask-image:url(/images/icons/products/network.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/rocket.svg\"])::after{mask-image:url(/images/icons/products/rocket.svg);-webkit-mask-image:url(/images/icons/products/rocket.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/key-round.svg\"])::after{mask-image:url(/images/icons/products/key-round.svg);-webkit-mask-image:url(/images/icons/products/key-round.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/webhook.svg\"])::after{mask-image:url(/images/icons/products/webhook.svg);-webkit-mask-image:url(/images/icons/products/webhook.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/lock.svg\"])::after{mask-image:url(/images/icons/products/lock.svg);-webkit-mask-image:url(/images/icons/products/lock.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/code.svg\"])::after{mask-image:url(/images/icons/products/code.svg);-webkit-mask-image:url(/images/icons/products/code.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/messages-square.svg\"])::after{mask-image:url(/images/icons/products/messages-square.svg);-webkit-mask-image:url(/images/icons/products/messages-square.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/compass.svg\"])::after{mask-image:url(/images/icons/products/compass.svg);-webkit-mask-image:url(/images/icons/products/compass.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/flask-conical.svg\"])::after{mask-image:url(/images/icons/products/flask-conical.svg);-webkit-mask-image:url(/images/icons/products/flask-conical.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/history.svg\"])::after{mask-image:url(/images/icons/products/history.svg);-webkit-mask-image:url(/images/icons/products/history.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/chef-hat.svg\"])::after{mask-image:url(/images/icons/products/chef-hat.svg);-webkit-mask-image:url(/images/icons/products/chef-hat.svg)}.nav-dropdown-products-selector-item-icon:has(img[src$=\"/package.svg\"])::after{mask-image:url(/images/icons/products/package.svg);-webkit-mask-image:url(/images/icons/products/package.svg)}.dark [data-component-part=products-selector-trigger]>img{filter:invert(1);opacity:.85}.nav-dropdown-products-selector-item-title{font-size:.84rem!important;font-weight:550!important;color:var(--ps-ink)!important}.nav-dropdown-products-selector-item-description{font-size:.74rem!important;line-height:1.4;margin-top:1px;color:var(--ps-ink-3)!important;white-space:normal!important;-webkit-line-clamp:2!important;line-clamp:2!important}[data-component-part=products-selector-item][data-selected=true] .nav-dropdown-products-selector-item-icon{border-color:color-mix(in srgb,var(--fam) 45%,transparent);background:color-mix(in srgb,var(--fam) 12%,var(--ps-surface))}#navigation-items .sidebar-group-header{gap:0!important;padding-left:1rem}#navigation-items .sidebar-group-header :is(svg, img){display:none!important}#navigation-items .sidebar-title{font-family:ui-monospace,\"SF Mono\",\"Geist Mono\",monospace!important;font-size:.66rem!important;font-weight:500!important;letter-spacing:.08em;text-transform:uppercase;color:#93938e!important}.dark #navigation-items .sidebar-title{color:#6b6b68!important}#navigation-items>div+div{margin-top:1.25rem!important}#navigation-items ul.sidebar-group li>ul{margin-left:1.45rem;padding-left:.5rem;border-left:1px solid #e7e7e4}.dark #navigation-items ul.sidebar-group li>ul{border-left-color:rgba(255,255,255,.08)}#navigation-items ul.sidebar-group li>ul :is(svg, img){width:14px!important;height:14px!important;opacity:.7}.eka-qs{border:1px solid #e7e7e4;border-radius:16px;background:#fff;padding:20px 24px 16px;margin:16px 0 28px;color:#1f2937;font-size:15px;line-height:1.55}.eka-qs code{font-size:13px;padding:1px 5px;border-radius:5px;background:rgba(17,24,39,.05)}.eka-qs a{color:#215fff;text-decoration:underline;text-underline-offset:2px}.eka-qs-stepper{display:flex;gap:0;list-style:none;margin:0 0 12px;padding:0 0 4px;overflow-x:auto}.eka-qs-stepper-item{display:flex;align-items:flex-start;flex:1 0 auto;margin:0;padding:0}.eka-qs-stepper-item+.eka-qs-stepper-item::before{content:\"\";flex:1 0 16px;height:1px;margin:18px 6px 0;background:#e7e7e4}.eka-qs-stepper-btn{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:72px;padding:0;border:0;background:0 0;color:inherit;font:inherit;cursor:pointer}.eka-qs-stepper-btn:disabled{cursor:default}.eka-qs-circle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;border:1px solid #e7e7e4;background:#fff;color:#6b7280;font-size:14px;font-weight:600}.eka-qs-stepper-label{font-size:13px;color:#6b7280;text-align:center;white-space:nowrap}.eka-qs-current .eka-qs-circle{background:#215fff;border-color:#215fff;color:#fff}.eka-qs-current .eka-qs-stepper-label{color:#111827;font-weight:700}.eka-qs-done .eka-qs-circle{border-color:#215fff;color:#215fff}.eka-qs-status{min-height:1.5em;margin:4px 0 12px;font-size:14px;color:#4b5563}.eka-qs-status-ok{color:#067647}.eka-qs-status-error{color:#b42318}.eka-qs-status-info{color:#1d4ed8}.eka-qs-form,.eka-qs-form form{display:flex;flex-direction:column;gap:14px}.eka-qs-title{margin:0;font-size:17px;font-weight:600;color:#111827}.eka-qs-lede{margin:-6px 0 0;color:#4b5563}.eka-qs-field{display:flex;flex-direction:column;gap:6px}.eka-qs-label{font-size:14px;font-weight:500;color:#111827}.eka-qs-pill{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:600;vertical-align:middle;color:#b54708;background:#fef0c7}.eka-qs-input{width:100%;box-sizing:border-box;padding:9px 12px;border:1px solid #d0d5dd;border-radius:10px;background:#fff;color:#111827;font:inherit}.eka-qs-input:focus{outline:2px solid rgba(33,95,255,.35);outline-offset:1px;border-color:#215fff}.eka-qs-secret{display:flex;gap:8px}.eka-qs-secret .eka-qs-input{flex:1;min-width:0}.eka-qs-reveal{flex-shrink:0;padding:0 14px;border:1px solid #d0d5dd;border-radius:10px;background:#fff;color:#374151;font-size:13px;cursor:pointer}.eka-qs-hint{margin:0;font-size:13px;color:#6b7280}.eka-qs-btn{align-self:flex-start;padding:9px 18px;border:1px solid #215fff;border-radius:10px;background:#215fff;color:#fff;font:inherit;font-weight:600;cursor:pointer}.eka-qs-btn:hover:not(:disabled){background:#1a4fd6}.eka-qs-btn:disabled{opacity:.5;cursor:not-allowed}.eka-qs-btn-quiet{background:#fff;color:#215fff}.eka-qs-btn-quiet:hover:not(:disabled){background:rgba(33,95,255,.06)}.eka-qs-chips{display:flex;flex-wrap:wrap;gap:8px}.eka-qs-chip{padding:5px 12px;border:1px solid #d0d5dd;border-radius:999px;background:#fff;color:#111827;font-size:14px;cursor:pointer}.eka-qs-chip-on{border-color:#215fff;color:#215fff;background:rgba(33,95,255,.06)}.eka-qs-callout,.eka-qs-result{padding:12px 16px;border:1px solid #e7e7e4;border-radius:12px;background:#f9fafb}.eka-qs-callout p,.eka-qs-result p{margin:0 0 8px}.eka-qs-callout p:last-child,.eka-qs-result p:last-child{margin-bottom:0}.eka-qs-callout ul{margin:0 0 8px;padding-left:20px}.eka-qs-result dl{display:grid;gap:6px;margin:0 0 12px}.eka-qs-result dl div{display:flex;flex-wrap:wrap;gap:4px 12px}.eka-qs-result dt{min-width:110px;font-weight:600;color:#374151}.eka-qs-result dd{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;word-break:break-all}.eka-qs-log{display:flex;flex-direction:column;gap:12px}.eka-qs-exchange{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.eka-qs-panel{min-width:0}.eka-qs-panel-label{display:flex;align-items:center;gap:8px;margin:0 0 4px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#6b7280}.eka-qs-pre{margin:0;max-height:320px;overflow:auto;padding:10px 12px;border:1px solid #e7e7e4;border-radius:10px;background:#f9fafb;color:#1f2937;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;line-height:1.5;white-space:pre-wrap;word-break:break-word}.eka-qs-code{padding:1px 7px;border-radius:999px;font-size:11px;letter-spacing:0}.eka-qs-code-ok{color:#067647;background:#dcfae6}.eka-qs-code-bad{color:#b42318;background:#fee4e2}.eka-qs-note{margin:6px 0 0;font-size:13px;color:#6b7280}.eka-qs-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-top:18px;padding-top:12px;border-top:1px solid #e7e7e4}.eka-qs-sandbox{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:#6b7280}@media (max-width:640px){.eka-qs{padding:16px}.eka-qs-exchange{grid-template-columns:minmax(0,1fr)}.eka-qs-stepper-btn{min-width:64px}}.dark .eka-qs{background:#0f1117;border-color:rgba(255,255,255,.12);color:#e5e7eb}.dark .eka-qs code{background:rgba(255,255,255,.08)}.dark .eka-qs a{color:#7da2ff}.dark .eka-qs-stepper-item+.eka-qs-stepper-item::before{background:rgba(255,255,255,.12)}.dark .eka-qs-circle{background:#0f1117;border-color:rgba(255,255,255,.18);color:#9ca3af}.dark .eka-qs-hint,.dark .eka-qs-note,.dark .eka-qs-panel-label,.dark .eka-qs-sandbox,.dark .eka-qs-stepper-label{color:#9ca3af}.dark .eka-qs-current .eka-qs-circle{background:#215fff;border-color:#215fff;color:#fff}.dark .eka-qs-current .eka-qs-stepper-label,.dark .eka-qs-label,.dark .eka-qs-title{color:#f9fafb}.dark .eka-qs-done .eka-qs-circle{border-color:#7da2ff;color:#7da2ff}.dark .eka-qs-lede,.dark .eka-qs-result dt,.dark .eka-qs-status{color:#d1d5db}.dark .eka-qs-status-ok{color:#75e0a7}.dark .eka-qs-status-error{color:#f97066}.dark .eka-qs-status-info{color:#93b4ff}.dark .eka-qs-pill{color:#fec84b;background:rgba(254,200,75,.14)}.dark .eka-qs-chip,.dark .eka-qs-input,.dark .eka-qs-reveal{background:#161922;border-color:rgba(255,255,255,.16);color:#f3f4f6}.dark .eka-qs-btn-quiet{background:0 0;color:#7da2ff;border-color:#7da2ff}.dark .eka-qs-chip-on{border-color:#7da2ff;color:#7da2ff;background:rgba(125,162,255,.1)}.dark .eka-qs-callout,.dark .eka-qs-pre,.dark .eka-qs-result{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.12);color:#e5e7eb}.dark .eka-qs-code-ok{color:#75e0a7;background:rgba(117,224,167,.12)}.dark .eka-qs-code-bad{color:#f97066;background:rgba(249,112,102,.12)}.dark .eka-qs-footer{border-top-color:rgba(255,255,255,.12)}#navbar a[href^=\"https://discord.gg/\"]>svg{width:18px;height:18px}#navbar a[href=\"/developer-tools\"]>span,#navbar a[href=\"https://discord.gg/THgd5S22EK\"]>span,#navbar a[href=\"https://github.com/eka-care\"]>span,#navbar a[href=\"https://huggingface.co/ekacare\"]>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}#navbar a[href=\"/developer-tools\"],#navbar a[href=\"https://discord.gg/THgd5S22EK\"],#navbar a[href=\"https://github.com/eka-care\"],#navbar a[href=\"https://huggingface.co/ekacare\"]{padding:6px;border-radius:8px}#navbar a[href=\"https://discord.gg/THgd5S22EK\"] img,#navbar a[href=\"https://github.com/eka-care\"] img,#navbar a[href=\"https://huggingface.co/ekacare\"] img{opacity:.8}.dark #navbar a[href=\"https://discord.gg/THgd5S22EK\"] img,.dark #navbar a[href=\"https://github.com/eka-care\"] img,.dark #navbar a[href=\"https://huggingface.co/ekacare\"] img{filter:invert(1)}#footer{background:color-mix(in srgb,#7c5cff 7%,transparent)}.eka-footmark{width:100%;max-width:1080px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:18px 32px 28px;border-top:1px solid rgba(124,92,255,.22);font-size:.8rem;color:rgb(var(--gray-500))}.eka-footmark b{font-weight:500;color:rgb(var(--gray-900))}.dark .eka-footmark b{color:rgb(var(--gray-100))}.eka-footmark span{display:inline-flex;align-items:center;gap:8px}.eka-heart{display:inline-flex;transition:transform .2s}.eka-heart:hover{transform:scale(1.15)}html[data-current-path=\"/\"]:not(:has(.eka-landing)) body>*{visibility:hidden}html[data-current-path=\"/\"]:not(:has(.eka-landing)) body{background:#fafaf9}html.dark[data-current-path=\"/\"]:not(:has(.eka-landing)) body{background:#0a0a0a}"}],"page":{"pagePath":"api-sdk/emr/post_webhooks/ipd-admissions-clearances","slug":"/api-sdk/emr/post_webhooks/ipd-admissions-clearances","pageMetadata":{"openapi":"post /registered_url_for_ipd_admissions_clearances_events","title":"IPD Admission Clearance","description":"\nWhen a clearance is created or updated against an IPD admission (for example a pharmacy, billing or housekeeping clearance), a webhook event is sent to registered webhooks with the clearance status and details.\n\n**Field Definitions**\n\n• **service**: string - The type of service. For IPD events, this will be `ipd`.\n\n• **event**: string - The type of event. This will be `ipd_admissions_clearances.created` or `ipd_admissions_clearances.updated`.\n\n• **event_time**: integer - Event occurrence timestamp (epoch seconds).\n\n• **transaction_id**: string - Unique transaction identifier for the event.\n\n• **timestamp**: integer - Timestamp of the event (epoch seconds).\n\n• **business_id**: string - The eka ID of the business.\n\n• **client_id**: string - Client ID associated with the event.\n\n• **data**: object - Contains details about the clearance.\n\n• **type**: string - The type of clearance (e.g. `pharmacy`).\n\n• **status**: string - Status of the clearance (e.g. `COMPLETED`).\n\n• **completed_by**: object - The actor who completed the clearance.\n\n**Example Webhook Request**\n\n**Endpoint:** [https://your-registered-webhook-url.com](https://your-registered-webhook-url.com)\n\n**Method:** POST","href":"/api-sdk/emr/post_webhooks/ipd-admissions-clearances","hidden":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"When a clearance is created or updated against an IPD admission (for example a pharmacy, billing or housekeeping clearance), a webhook event is sent to registered webhooks with the clearance status and details.\"\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Field Definitions\"\n })\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"• \", _jsx(_components.strong, {\n children: \"service\"\n }), \": string - The type of service. For IPD events, this will be \", _jsx(_components.code, {\n children: \"ipd\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"• \", _jsx(_components.strong, {\n children: \"event\"\n }), \": string - The type of event. This will be \", _jsx(_components.code, {\n children: \"ipd_admissions_clearances.created\"\n }), \" or \", _jsx(_components.code, {\n children: \"ipd_admissions_clearances.updated\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"• \", _jsx(_components.strong, {\n children: \"event_time\"\n }), \": integer - Event occurrence timestamp (epoch seconds).\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"• \", _jsx(_components.strong, {\n children: \"transaction_id\"\n }), \": string - Unique transaction identifier for the event.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"• \", _jsx(_components.strong, {\n children: \"timestamp\"\n }), \": integer - Timestamp of the event (epoch seconds).\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"• \", _jsx(_components.strong, {\n children: \"business_id\"\n }), \": string - The eka ID of the business.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"• \", _jsx(_components.strong, {\n children: \"client_id\"\n }), \": string - Client ID associated with the event.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"• \", _jsx(_components.strong, {\n children: \"data\"\n }), \": object - Contains details about the clearance.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"• \", _jsx(_components.strong, {\n children: \"type\"\n }), \": string - The type of clearance (e.g. \", _jsx(_components.code, {\n children: \"pharmacy\"\n }), \").\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"• \", _jsx(_components.strong, {\n children: \"status\"\n }), \": string - Status of the clearance (e.g. \", _jsx(_components.code, {\n children: \"COMPLETED\"\n }), \").\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"• \", _jsx(_components.strong, {\n children: \"completed_by\"\n }), \": object - The actor who completed the clearance.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Example Webhook Request\"\n })\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Endpoint:\"\n }), \" \", _jsx(_components.a, {\n href: \"https://your-registered-webhook-url.com\",\n children: \"https://your-registered-webhook-url.com\"\n })]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Method:\"\n }), \" POST\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"openapi":"post /registered_url_for_ipd_admissions_clearances_events","title":"IPD Admission Clearance","description":"\nWhen a clearance is created or updated against an IPD admission (for example a pharmacy, billing or housekeeping clearance), a webhook event is sent to registered webhooks with the clearance status and details.\n\n**Field Definitions**\n\n• **service**: string - The type of service. For IPD events, this will be `ipd`.\n\n• **event**: string - The type of event. This will be `ipd_admissions_clearances.created` or `ipd_admissions_clearances.updated`.\n\n• **event_time**: integer - Event occurrence timestamp (epoch seconds).\n\n• **transaction_id**: string - Unique transaction identifier for the event.\n\n• **timestamp**: integer - Timestamp of the event (epoch seconds).\n\n• **business_id**: string - The eka ID of the business.\n\n• **client_id**: string - Client ID associated with the event.\n\n• **data**: object - Contains details about the clearance.\n\n• **type**: string - The type of clearance (e.g. `pharmacy`).\n\n• **status**: string - Status of the clearance (e.g. `COMPLETED`).\n\n• **completed_by**: object - The actor who completed the clearance.\n\n**Example Webhook Request**\n\n**Endpoint:** [https://your-registered-webhook-url.com](https://your-registered-webhook-url.com)\n\n**Method:** POST","href":"/api-sdk/emr/post_webhooks/ipd-admissions-clearances","hidden":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/ekacare/274025ccf21300f6/api-reference-link.js","/_mintlify/custom/ekacare/55ac9669f3bf776b/ask-ai.js","/_mintlify/custom/ekacare/42ebe35a74070514/console-links.js","/_mintlify/custom/ekacare/5e6903411e400df6/footer-mark.js","/_mintlify/custom/ekacare/5f178d6c6749d135/sidebar-memory.js"],"openApiReferenceData":{"operation":{"tags":["IPD Webhooks"],"summary":"IPD Admission Clearance","description":"\nWhen a clearance is created or updated against an IPD admission (for example a pharmacy, billing or housekeeping clearance), a webhook event is sent to registered webhooks with the clearance status and details.\n\n**Field Definitions**\n\n• **service**: string - The type of service. For IPD events, this will be `ipd`.\n\n• **event**: string - The type of event. This will be `ipd_admissions_clearances.created` or `ipd_admissions_clearances.updated`.\n\n• **event_time**: integer - Event occurrence timestamp (epoch seconds).\n\n• **transaction_id**: string - Unique transaction identifier for the event.\n\n• **timestamp**: integer - Timestamp of the event (epoch seconds).\n\n• **business_id**: string - The eka ID of the business.\n\n• **client_id**: string - Client ID associated with the event.\n\n• **data**: object - Contains details about the clearance.\n\n• **type**: string - The type of clearance (e.g. `pharmacy`).\n\n• **status**: string - Status of the clearance (e.g. `COMPLETED`).\n\n• **completed_by**: object - The actor who completed the clearance.\n\n**Example Webhook Request**\n\n**Endpoint:** [https://your-registered-webhook-url.com](https://your-registered-webhook-url.com)\n\n**Method:** POST","operationId":"IPDAdmissionClearanceWebhook","parameters":[],"requestBody":"2478a603-8430-467a-a273-bcf4957bba56","responses":{"200":"32d63522-9bcc-4dd9-9a5b-6a53dff4f977"},"deprecated":false,"method":"post","type":"path","servers":["11743001-e943-464d-b0bb-b47b30f02ad1"],"security":[],"path":"/registered_url_for_ipd_admissions_clearances_events","baseUrlOptions":["https://{partner_host}"],"title":"IPD Admission Clearance","codeSamples":[],"requestExampleLanguages":["bash","python","typescript","java","csharp","ruby"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"description":"","content":{"application/json":{"schema":{"type":"object","required":["service","event","event_time","timestamp","business_id","data"],"properties":{"service":{"type":"string","example":"ipd","description":"Type of service","isRequired":true,"uniqueKey":"service","typeLabel":"string"},"event":{"type":"string","enum":["ipd_admissions_clearances.created","ipd_admissions_clearances.updated"],"example":"ipd_admissions_clearances.created","description":"Type of event","isRequired":true,"uniqueKey":"event","typeLabel":"enum\u003cstring>"},"event_time":{"type":"integer","example":1782811750,"description":"Event occurred timestamp","isRequired":true,"uniqueKey":"event_time","typeLabel":"integer"},"timestamp":{"type":"integer","example":1782811750,"description":"Timestamp of the event","isRequired":true,"uniqueKey":"timestamp","typeLabel":"integer"},"business_id":{"type":"string","example":"7175620245483777","description":"Business ID for the admission","isRequired":true,"uniqueKey":"business_id","typeLabel":"string"},"data":{"type":"object","required":["type","status"],"properties":{"status":{"type":"string","example":"COMPLETED","description":"Status of the clearance","isRequired":true,"uniqueKey":"data.status","typeLabel":"string"},"type":{"type":"string","example":"pharmacy","description":"Type of clearance","isRequired":true,"uniqueKey":"data.type","typeLabel":"string"},"completed_at":{"type":"string","example":"2026-06-30 09:29:02.236000+00:00","description":"Timestamp when the clearance was completed","uniqueKey":"data.completed_at","typeLabel":"string"},"completed_by":{"type":"object","description":"Actor who completed the clearance","properties":{"id":{"type":"string","example":"175620245502842","description":"Actor identifier","uniqueKey":"data.completed_by.id","typeLabel":"string"},"name":{"type":"string","example":"Dr Imtiyaz m,","description":"Actor name","uniqueKey":"data.completed_by.name","typeLabel":"string"}},"uniqueKey":"data.completed_by","typeLabel":"object"},"updated_at":{"type":"string","example":"2026-06-30 09:29:02.236000+00:00","description":"Last update timestamp","uniqueKey":"data.updated_at","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data","typeLabel":"object"},"transaction_id":{"type":"string","example":"ipd/7175620245483777/admissions/6909b0faba49e0b2f147cf58/clearances/pharmacy","description":"Unique transaction identifier for the event","uniqueKey":"transaction_id","typeLabel":"string"},"client_id":{"type":"string","example":"EC_1777984421469","description":"Client ID for the admission","uniqueKey":"client_id","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"service":"ipd","event":"ipd_admissions_clearances.created","event_time":1782811750,"timestamp":1782811750,"business_id":"7175620245483777","data":{"status":"COMPLETED","type":"pharmacy","completed_at":"2026-06-30 09:29:02.236000+00:00","completed_by":{"id":"175620245502842","name":"Dr Imtiyaz m,"},"updated_at":"2026-06-30 09:29:02.236000+00:00"},"transaction_id":"ipd/7175620245483777/admissions/6909b0faba49e0b2f147cf58/clearances/pharmacy","client_id":"EC_1777984421469"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"32d63522-9bcc-4dd9-9a5b-6a53dff4f977":{"description":"","headers":{}}},"security":{},"servers":{"11743001-e943-464d-b0bb-b47b30f02ad1":{"url":"https://{partner_host}","variables":{"partner_host":{"default":"api.example.com","description":"Partner API host"}}}}},"originalFileLocation":"api-reference/doc-tool/post_webhooks/post_webhook.yaml"},"subdomain":"ekacare","siteName":"Eka Developer Platform APIs","title":"IPD Admission Clearance - Eka Developer Platform APIs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-30T06:21:55.569Z","originalFileLocation":"api-sdk/emr/post_webhooks/ipd-admissions-clearances.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"When a clearance is created or updated against an IPD admission (for example a pharmacy, billing or housekeeping clearance), a webhook event is sent to registered webhooks with the clearance status and details. Field Definitions • service: string - The type of service. For IPD events, this will be ipd. • event: string - The type of event. This will be ipd_admissions_clearances.created or ipd_admissions_clearances.updated. • event_time: integer - Event occurrence timestamp (epoch seconds). • transaction_id: string - Unique transaction identifier for the event. • timestamp: integer - Timestamp of the event (epoch seconds). • business_id: string - The eka ID of the business. • client_id: string - Client ID associated with the event. • data: object - Contains details about the clearance. • type: string - The type of clearance (e.g. pharmacy). • status: string - Status of the clearance (e.g. COMPLETED). • completed_by: object - The actor who completed the clearance. Example Webhook Request Endpoint: https://your-registered-webhook-url.com Method: POST\">\u003cmeta data-mint-head name=\"application-name\" content=\"Eka Developer Platform APIs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"noindex\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ekacare/I5vwrJDJkiTYS8E3/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/ekacare/I5vwrJDJkiTYS8E3/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ekacare/I5vwrJDJkiTYS8E3/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/ekacare/I5vwrJDJkiTYS8E3/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/ekacare/I5vwrJDJkiTYS8E3/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ekacare/I5vwrJDJkiTYS8E3/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ekacare/I5vwrJDJkiTYS8E3/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/ekacare/I5vwrJDJkiTYS8E3/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/ekacare/I5vwrJDJkiTYS8E3/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"IPD Admission Clearance - Eka Developer Platform APIs\">\u003cmeta data-mint-head property=\"og:description\" content=\"When a clearance is created or updated against an IPD admission (for example a pharmacy, billing or housekeeping clearance), a webhook event is sent to registered webhooks with the clearance status and details. Field Definitions • service: string - The type of service. For IPD events, this will be ipd. • event: string - The type of event. This will be ipd_admissions_clearances.created or ipd_admissions_clearances.updated. • event_time: integer - Event occurrence timestamp (epoch seconds). • transaction_id: string - Unique transaction identifier for the event. • timestamp: integer - Timestamp of the event (epoch seconds). • business_id: string - The eka ID of the business. • client_id: string - Client ID associated with the event. • data: object - Contains details about the clearance. • type: string - The type of clearance (e.g. pharmacy). • status: string - Status of the clearance (e.g. COMPLETED). • completed_by: object - The actor who completed the clearance. Example Webhook Request Endpoint: https://your-registered-webhook-url.com Method: POST\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Eka Developer Platform APIs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.eka.care/api-sdk/emr/post_webhooks/ipd-admissions-clearances\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ekacare.mintlify.app/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=IPD+Admission+Clearance\u0026amp;description=%0AWhen+a+clearance+is+created+or+updated+against+an+IPD+admission+%28for+example+a+pharmacy%2C+billing+or+housekeeping+clearance%29%2C+a+webhook+event+is+sent+to+registe\u0026amp;theme=c05a8484a1a9b0e4a75a464b\u0026amp;signature=579739ba1430b3a9bf0fa2f23c8d03cbe76aae3512bd321aab236a04b6c9ccba\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"IPD Admission Clearance - Eka Developer Platform APIs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"When a clearance is created or updated against an IPD admission (for example a pharmacy, billing or housekeeping clearance), a webhook event is sent to registered webhooks with the clearance status and details. Field Definitions • service: string - The type of service. For IPD events, this will be ipd. • event: string - The type of event. This will be ipd_admissions_clearances.created or ipd_admissions_clearances.updated. • event_time: integer - Event occurrence timestamp (epoch seconds). • transaction_id: string - Unique transaction identifier for the event. • timestamp: integer - Timestamp of the event (epoch seconds). • business_id: string - The eka ID of the business. • client_id: string - Client ID associated with the event. • data: object - Contains details about the clearance. • type: string - The type of clearance (e.g. pharmacy). • status: string - Status of the clearance (e.g. COMPLETED). • completed_by: object - The actor who completed the clearance. Example Webhook Request Endpoint: https://your-registered-webhook-url.com Method: POST\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ekacare.mintlify.app/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=IPD+Admission+Clearance\u0026amp;description=%0AWhen+a+clearance+is+created+or+updated+against+an+IPD+admission+%28for+example+a+pharmacy%2C+billing+or+housekeeping+clearance%29%2C+a+webhook+event+is+sent+to+registe\u0026amp;theme=c05a8484a1a9b0e4a75a464b\u0026amp;signature=579739ba1430b3a9bf0fa2f23c8d03cbe76aae3512bd321aab236a04b6c9ccba\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/ekacare/I5vwrJDJkiTYS8E3/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Eka Developer Platform APIs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#5B45C9\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.eka.care/api-sdk/emr/post_webhooks/ipd-admissions-clearances\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-sdk/emr/post_webhooks/ipd-admissions-clearances.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developer.eka.care/#organization\",\"name\":\"Eka Developer Platform APIs\",\"url\":\"https://developer.eka.care\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://cdn.eka.care/vagus/clzwrv3o600260ti3bg9q1det.png\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developer.eka.care#website\",\"name\":\"Eka Developer Platform APIs\",\"url\":\"https://developer.eka.care\",\"publisher\":{\"@id\":\"https://developer.eka.care/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.eka.care/api-sdk/emr/post_webhooks/ipd-admissions-clearances#webpage\",\"url\":\"https://developer.eka.care/api-sdk/emr/post_webhooks/ipd-admissions-clearances\",\"name\":\"IPD Admission Clearance\",\"description\":\"When a clearance is created or updated against an IPD admission (for example a pharmacy, billing or housekeeping clearance), a webhook event is sent to registered webhooks with the clearance status and details. Field Definitions • service: string - The type of service. For IPD events, this will be ipd. • event: string - The type of event. This will be ipd_admissions_clearances.created or ipd_admissions_clearances.updated. • event_time: integer - Event occurrence timestamp (epoch seconds). • transaction_id: string - Unique transaction identifier for the event. • timestamp: integer - Timestamp of the event (epoch seconds). • business_id: string - The eka ID of the business. • client_id: string - Client ID associated with the event. • data: object - Contains details about the clearance. • type: string - The type of clearance (e.g. pharmacy). • status: string - Status of the clearance (e.g. COMPLETED). • completed_by: object - The actor who completed the clearance. Example Webhook Request Endpoint: https://your-registered-webhook-url.com Method: POST\",\"dateModified\":\"2026-10-30T06:21:55.569Z\",\"isPartOf\":{\"@id\":\"https://developer.eka.care#website\"},\"breadcrumb\":{\"@id\":\"https://developer.eka.care/api-sdk/emr/post_webhooks/ipd-admissions-clearances#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.eka.care/api-sdk/emr/post_webhooks/ipd-admissions-clearances#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Eka EMR API\",\"item\":\"https://developer.eka.care/api-sdk/emr/instructions/before-you-begin\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Webhooks\",\"item\":\"https://developer.eka.care/api-sdk/emr/post_webhooks/add-appointment-webhook\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"IPD Admission Clearance\",\"item\":\"https://developer.eka.care/api-sdk/emr/post_webhooks/ipd-admissions-clearances\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developer.eka.care/api-sdk/emr/post_webhooks/ipd-admissions-clearances#apireference\",\"headline\":\"IPD Admission Clearance\",\"name\":\"IPD Admission Clearance\",\"description\":\"When a clearance is created or updated against an IPD admission (for example a pharmacy, billing or housekeeping clearance), a webhook event is sent to registered webhooks with the clearance status and details. Field Definitions • service: string - The type of service. For IPD events, this will be ipd. • event: string - The type of event. This will be ipd_admissions_clearances.created or ipd_admissions_clearances.updated. • event_time: integer - Event occurrence timestamp (epoch seconds). • transaction_id: string - Unique transaction identifier for the event. • timestamp: integer - Timestamp of the event (epoch seconds). • business_id: string - The eka ID of the business. • client_id: string - Client ID associated with the event. • data: object - Contains details about the clearance. • type: string - The type of clearance (e.g. pharmacy). • status: string - Status of the clearance (e.g. COMPLETED). • completed_by: object - The actor who completed the clearance. Example Webhook Request Endpoint: https://your-registered-webhook-url.com Method: POST\",\"url\":\"https://developer.eka.care/api-sdk/emr/post_webhooks/ipd-admissions-clearances\",\"mainEntityOfPage\":{\"@id\":\"https://developer.eka.care/api-sdk/emr/post_webhooks/ipd-admissions-clearances#webpage\"},\"dateModified\":\"2026-10-30T06:21:55.569Z\",\"publisher\":{\"@id\":\"https://developer.eka.care/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.eka.care#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Eka Developer Platform APIs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Eka Developer Platform APIs","nav":{"global":null,"products":[{"product":"Clinical AI","icon":"sparkles","description":"The medical scribe, document parsing and the clinical MCP server, to build your own tools.","menu":[{"item":"Medical Scribe","icon":"https://mintlify.s3.us-west-1.amazonaws.com/ekacare/images/icons/products/mic.svg","description":"Consultations become structured notes that complete the chart","tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs/scribe/overview"}]},{"tab":"APIs \u0026 SDKs","pages":[{"title":"APIs \u0026 SDKs","href":"/api-sdk/scribe/sessions/overview"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/docs/get-started/ekascribe-changelog"}]}]},{"item":"Medical Document Parsing","icon":"https://mintlify.s3.us-west-1.amazonaws.com/ekacare/images/icons/products/brain-circuit.svg","description":"Any medical record, in any format, becomes structured data","tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs/models/medical-document-parsing"}]},{"tab":"APIs \u0026 SDKs","pages":[{"title":"APIs \u0026 SDKs","href":"/api-sdk/models/medical-document-parsing/introduction"}]}]},{"item":"Clinical MCP","icon":"https://mintlify.s3.us-west-1.amazonaws.com/ekacare/images/icons/products/stethoscope.svg","description":"Ground your agent in Indian drugs, treatment protocols, pharmacology and clinical calculators","tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs/datasets/build-with-ai/mcp-server/introduction"}]}]}],"pages":[{"title":"Clinical AI","href":"/docs/scribe/overview"}]},{"product":"ABDM Connect","icon":"hospital","description":"ABHA, consent and record exchange across India's health stack, plus insurance claims.","menu":[{"item":"HIE-CM","icon":"https://mintlify.s3.us-west-1.amazonaws.com/ekacare/images/icons/products/arrow-left-right.svg","description":"ABHA, care contexts, consent and records","tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs/hie-cm/about"}]},{"tab":"APIs \u0026 SDKs","pages":[{"title":"APIs \u0026 SDKs","href":"/api-sdk/hie-cm/overview"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/docs/hie-cm/changelog"}]}]},{"item":"NHCX","icon":"https://mintlify.s3.us-west-1.amazonaws.com/ekacare/images/icons/products/shield-check.svg","description":"Eligibility, pre-auth and insurance claims","tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs/nhcx/getting-started"}]},{"tab":"APIs \u0026 SDKs","pages":[{"title":"APIs \u0026 SDKs","href":"/api-sdk/nhcx/search-payers"}]}]},{"item":"UHI","icon":"https://mintlify.s3.us-west-1.amazonaws.com/ekacare/images/icons/products/network.svg","description":"Blood bank search and consultations across the network","tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs/uhi/journeys/uhi-book-physical-consultation"}]},{"tab":"APIs \u0026 SDKs","pages":[{"title":"APIs \u0026 SDKs","href":"/api-sdk/uhi/blood-bank/state-district"}]}]}],"pages":[{"title":"ABDM Connect","href":"/docs/hie-cm/about"}]},{"product":"Resources","icon":"book-open","description":"Keys, sign-in, encryption, every API, worked examples and the Eka MCP server.","menu":[{"item":"Get started","icon":"https://mintlify.s3.us-west-1.amazonaws.com/ekacare/images/icons/products/rocket.svg","description":"Overview, products and glossary","tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs/get-started/overview"}]}]},{"item":"Auth","icon":"https://mintlify.s3.us-west-1.amazonaws.com/ekacare/images/icons/products/key-round.svg","description":"Client credentials, OAuth2 and OIDC","tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs/auth/invite-flow"}]},{"tab":"APIs \u0026 SDKs","pages":[{"title":"APIs \u0026 SDKs","href":"/api-sdk/auth/getting-started"}]}]},{"item":"Encryption","icon":"https://mintlify.s3.us-west-1.amazonaws.com/ekacare/images/icons/products/lock.svg","description":"End-to-end encryption and IP allowlisting","tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs/encryption/guide"}]}]},{"item":"All APIs","icon":"https://mintlify.s3.us-west-1.amazonaws.com/ekacare/images/icons/products/code.svg","description":"Every Eka API, by product","tabs":[{"tab":"APIs \u0026 SDKs","pages":[{"title":"APIs \u0026 SDKs","href":"/api-sdk"}]}]},{"item":"Cookbook","icon":"https://mintlify.s3.us-west-1.amazonaws.com/ekacare/images/icons/products/chef-hat.svg","description":"Worked examples that combine Eka products","tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs/get-started/cookbook"}]}]},{"item":"Eka MCP","icon":"https://mintlify.s3.us-west-1.amazonaws.com/ekacare/images/icons/products/plug.svg","description":"Connect your agent to Eka EMR: patients, appointments and prescriptions","tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs/emr/build-with-ai/mcp-server/introduction"}]}]}],"pages":[{"title":"Resources","href":"/docs/get-started/overview"}]},{"product":"Newsboard","icon":"newspaper","description":"What changed across Eka, and the research behind it.","menu":[{"item":"Eka Labs","icon":"https://mintlify.s3.us-west-1.amazonaws.com/ekacare/images/icons/products/flask-conical.svg","description":"Open models, datasets and research for AI in Indian healthcare","tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs/models/spotlight"}]}]},{"item":"Changelog","icon":"https://mintlify.s3.us-west-1.amazonaws.com/ekacare/images/icons/products/history.svg","description":"What changed across Eka, week by week","tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs/get-started/changelog"}]}]}],"pages":[{"title":"Newsboard","href":"/docs/models/spotlight"}]},{"product":"More from Eka","icon":"box-archive","description":"Products kept out of the navigation. Their pages stay live, listed on /sitemap.","hidden":true,"menu":[{"item":"Medical Agents","icon":"https://mintlify.s3.us-west-1.amazonaws.com/ekacare/images/icons/products/bot.svg","description":"A ready-made medical assistant, a kit to build your own agent, and SDKs to embed them","tabs":[{"tab":"Documentation","pages":[{"group":"Medical Agents","pages":[{"icon":"robot","title":"Agents","description":"Build an agent for your own purpose, give it Eka's medical tools and your EMR data, and put it in front of your users.","href":"/docs/products/agents"},{"icon":"comments","title":"MedAssist","description":"Agentic medical assistant for real-time medical conversations using medical LLMs","href":"/docs/agents/medassist"},{"group":"MedAssist","icon":"mobile","expanded":true,"pages":[{"group":"MedAssist APIs","icon":"mobile","pages":[{"icon":"download","title":"Get Conversation","api":"GET https://console.eka.care/conversations/","description":"Returns the conversations (sessions) for a MedAssist agent as an HTML page, with optional filters.","href":"/docs/agents/get-conversation"},{"icon":"download","title":"Get Messages","api":"GET https://console.eka.care/conversations/{conversation_id}/messages/","description":"Returns the full transcript of a MedAssist conversation, including tool calls, user feedback and session context.","href":"/docs/agents/get-messages"},{"icon":"globe","title":"WebSocket API","description":"Real-time communication with MedAssist through WebSocket connection","href":"/docs/agents/websocket"}]},{"group":"MedAssist Client SDKs","icon":"laptop-binary","root":{"icon":"compass","title":"Overview","description":"Add a Synapse AI medical assistant to any website, React app, or custom UI","sidebarTitle":"Synapse SDK","href":"/docs/agents/medassist/synapse/introduction"},"pages":[{"icon":"file-lines","title":"Choose your integration","description":"Decide between the embed widget, the React SDK, and the core SDK","href":"/docs/agents/medassist/synapse/choose-integration"},{"group":"Embed widget","icon":"code","pages":[{"icon":"bolt","title":"Quickstart","description":"Add the MedAssist widget to any website with one tag and a script","href":"/docs/agents/medassist/synapse/embed/quickstart"},{"icon":"file-lines","title":"Customization \u0026 overrides","description":"Every attribute, theme option, and config override for the embed widget","href":"/docs/agents/medassist/synapse/embed/customization"},{"icon":"java","title":"JavaScript API","description":"Configure the embed widget programmatically with EkaMedAssist.init()","href":"/docs/agents/medassist/synapse/embed/javascript-api"}]},{"group":"React SDK","icon":"react","pages":[{"icon":"gear","title":"Installation \u0026 setup","description":"Render the prebuilt MedAssist chat widget inside your React app","href":"/docs/agents/medassist/synapse/react/installation"},{"icon":"sliders","title":"Configuration reference","description":"Every option in MedAssistConfig","href":"/docs/agents/medassist/synapse/react/configuration"},{"icon":"file-lines","title":"Theming \u0026 design system","description":"Brand the MedAssist widget with the Eka design system","href":"/docs/agents/medassist/synapse/react/theming"}]},{"group":"Core SDK","icon":"cube","pages":[{"icon":"bolt","title":"Quickstart","description":"Build a custom MedAssist UI on the raw Synapse core SDK","href":"/docs/agents/medassist/synapse/core/quickstart"},{"icon":"file-lines","title":"Events","description":"Subscribe to real-time events from the Synapse session","href":"/docs/agents/medassist/synapse/core/events"},{"icon":"screwdriver-wrench","title":"Tool calls \u0026 elicitation","description":"Render the inputs the agent asks for and send results back","href":"/docs/agents/medassist/synapse/core/tool-calls"},{"icon":"file-lines","title":"Voice \u0026 audio","description":"Record audio and run voice-mode conversations","href":"/docs/agents/medassist/synapse/core/voice"},{"icon":"code","title":"API reference","description":"Methods, types, and enums of @eka-care/medassist-core","href":"/docs/agents/medassist/synapse/core/api-reference"}]}]}]},{"group":"Tools","icon":"screwdriver-wrench","pages":[{"group":"Echo Agent Kit","icon":"robot","root":{"icon":"compass","title":"Overview","description":"Build AI agents with Echo - an open-source, LLM-agnostic framework","sidebarTitle":"About Echo Agent Kit","href":"/docs/agents/agent-kit/introduction"},"pages":[{"icon":"bolt","title":"Quickstart","description":"Build your first AI agent with Echo in 5 minutes","href":"/docs/agents/agent-kit/quickstart"},{"icon":"file-lines","title":"Installation","description":"Install Echo - open-source agent framework","href":"/docs/agents/agent-kit/installation"},{"icon":"sliders","title":"Configuration","description":"Configure LLMs, tools, and agent settings","href":"/docs/agents/agent-kit/configuration"},{"icon":"robot","title":"Agents","description":"Build agents with GenericAgent","href":"/docs/agents/agent-kit/agents"},{"icon":"screwdriver-wrench","title":"Tools","description":"Create base tools, elicitation tools, and use MCP tools","href":"/docs/agents/agent-kit/tools"},{"icon":"hospital","title":"LLM Providers","description":"Configure OpenAI, Anthropic, and Gemini","href":"/docs/agents/agent-kit/llm-providers"},{"icon":"file-lines","title":"Streaming","description":"Real-time response streaming with typed events","href":"/docs/agents/agent-kit/streaming"},{"icon":"plug","title":"MCP Integration","description":"Connect to MCP servers for external tools","href":"/docs/agents/agent-kit/mcp-integration"},{"icon":"file-lines","title":"Examples","description":"Complete working examples","href":"/docs/agents/agent-kit/examples"}]},{"group":"Synapse Client SDK","icon":"comments","root":{"icon":"compass","title":"Overview","description":"Add a Synapse AI medical assistant to any website, React app, or custom UI","sidebarTitle":"About Synapse","href":"/docs/agents/synapse/introduction"},"pages":[{"icon":"file-lines","title":"Choose your integration","description":"Decide between the embed widget, the React SDK, and the core SDK","href":"/docs/agents/synapse/choose-integration"},{"group":"Embed widget","icon":"code","pages":[{"icon":"bolt","title":"Quickstart","description":"Add the MedAssist widget to any website with one tag and a script","href":"/docs/agents/synapse/embed/quickstart"},{"icon":"file-lines","title":"Customization \u0026 overrides","description":"Every attribute, theme option, and config override for the embed widget","href":"/docs/agents/synapse/embed/customization"},{"icon":"java","title":"JavaScript API","description":"Configure the embed widget programmatically with EkaMedAssist.init()","href":"/docs/agents/synapse/embed/javascript-api"}]},{"group":"React SDK","icon":"react","pages":[{"icon":"gear","title":"Installation \u0026 setup","description":"Render the prebuilt MedAssist chat widget inside your React app","href":"/docs/agents/synapse/react/installation"},{"icon":"sliders","title":"Configuration reference","description":"Every option in MedAssistConfig","href":"/docs/agents/synapse/react/configuration"},{"icon":"file-lines","title":"Theming \u0026 design system","description":"Brand the MedAssist widget with the Eka design system","href":"/docs/agents/synapse/react/theming"}]},{"group":"Core SDK","icon":"cube","pages":[{"icon":"bolt","title":"Quickstart","description":"Build a custom MedAssist UI on the raw Synapse core SDK","href":"/docs/agents/synapse/core/quickstart"},{"icon":"file-lines","title":"Events","description":"Subscribe to real-time events from the Synapse session","href":"/docs/agents/synapse/core/events"},{"icon":"screwdriver-wrench","title":"Tool calls \u0026 elicitation","description":"Render the inputs the agent asks for and send results back","href":"/docs/agents/synapse/core/tool-calls"},{"icon":"file-lines","title":"Voice \u0026 audio","description":"Record audio and run voice-mode conversations","href":"/docs/agents/synapse/core/voice"},{"icon":"code","title":"API reference","description":"Methods, types, and enums of @eka-care/medassist-core","href":"/docs/agents/synapse/core/api-reference"}]}]}]},{"title":"Build with AI","description":"Set up a coding agent to build with Eka Agents: the reference skill, and the MCP servers your agent can use as tools.","icon":"wand-magic-sparkles","href":"/docs/agents/build-with-ai"}]}]},{"tab":"APIs \u0026 SDKs","pages":[{"group":"Medical Agents API","pages":[{"icon":"robot","title":"MedAssist Agent","description":"MedAssist is a medical assistant agentic functionality that helps users communicate with our state of the art medical LLM for medical concerns and healthcare guidance.","href":"/api-sdk/agents/overview"},{"group":"MedAssist APIs","icon":"mobile","expanded":true,"pages":[{"title":"Create Session","openapi":"POST /med-assist/session","description":"Creates a new MedAssist session that provides a session ID and session token for WebSocket communication.\n","href":"/api-sdk/agents/create-session"},{"title":"Get Session","openapi":"GET /med-assist/session/{session_id}","description":"Retrieves the current status and details of an existing MedAssist session.\n\nUse this endpoint to check session status, expiration, and metadata.\n","href":"/api-sdk/agents/get-session"},{"title":"Refresh Session Token","openapi":"GET /med-assist/session/{session_id}/refresh","description":"Refreshes an expired session token to extend the session lifetime.\n\nUse this endpoint when the session token has expired but you want to continue the conversation.\n","href":"/api-sdk/agents/refresh-session"}]}]}]},{"tab":"Changelog","pages":[{"group":"Changelog","pages":[{"icon":"clock-rotate-left","title":"EkaAgents Changelog","description":"Updates and improvements to EkaAgents — MCP Server, Echo Agent Kit, MedAssist, and agent workflows.","href":"/docs/get-started/ekaagents-changelog"},{"icon":"clock-rotate-left","title":"EkaAgents Release Notes","description":"Feature releases, improvements, and fixes across the chatbot widget, MedAssist SDK, MCP server, and AI layer.","href":"/docs/get-started/eka-agents"}]}]}]},{"item":"Medical Knowledge","icon":"https://mintlify.s3.us-west-1.amazonaws.com/ekacare/images/icons/products/database.svg","description":"Drugs, labs, protocols and medical knowledge","tabs":[{"tab":"Documentation","pages":[{"group":"Medical Knowledge","pages":[{"icon":"file-lines","title":"Medical DB","description":"Standardized medical reference database for structured clinical knowledge","href":"/docs/datasets/medical-db"},{"icon":"file-lines","title":"Accepted drug forms","description":"The dosage forms a medication's form_name is matched against.","href":"/docs/datasets/forms"},{"sidebarTitle":"Knowledge bases","title":null,"description":null,"href":"/docs/datasets/overview"},{"title":"Build with AI","description":"Set up a coding agent to build with Medical Knowledge: the reference skill and the MedAI Tools MCP server.","icon":"wand-magic-sparkles","href":"/docs/datasets/build-with-ai"}]}]},{"tab":"APIs \u0026 SDKs","pages":[{"group":"Medical Knowledge API","pages":[{"icon":"compass","title":"Overview","description":"Upload and manage your own formulary catalogs, then use them in Eka's medical search.","sidebarTitle":"Datasets API","href":"/api-sdk/datasets/overview"},{"group":"Dataset types","expanded":true,"pages":[{"title":"Medications","description":"What you can upload for each drug in your formulary, which columns are mandatory, and the values each one accepts.","href":"/api-sdk/datasets/medications"},{"title":"Lab investigations","description":"What you can upload for each lab test, scan or package your clinicians can order, which columns are mandatory, and the values each one accepts.","href":"/api-sdk/datasets/lab-investigations"},{"title":"Lab results","description":"What you can upload for each value a lab reports, such as hemoglobin, which columns are mandatory, and the values each one accepts.","href":"/api-sdk/datasets/lab-results"},{"title":"Lab panels","description":"What you can upload for each panel of results a doctor fills in, such as CBC, which columns are mandatory, and the rule for its members.","href":"/api-sdk/datasets/lab-panels"},{"title":"Symptoms","description":"What you can upload for each symptom, which columns are mandatory, and the values each one accepts.","href":"/api-sdk/datasets/symptoms"},{"title":"Diagnoses","description":"What you can upload for each diagnosis, which columns are mandatory, and the values each one accepts.","href":"/api-sdk/datasets/diagnoses"}]},{"group":"Datasets","icon":"database","expanded":true,"pages":[{"openapi":"post /admin/datasets/v1/","title":"Create or update records","description":"Writes records to the catalog. Send either a JSON list of records (`Content-Type: application/json`) or a CSV file (`multipart/form-data`, field `file`, headers as in the CSV template).\n\nWrites are **all-or-nothing**: if any record or row fails validation, nothing in the request is written and `errors` lists every problem.\n\n**Modes**\n- `upsert` (default): records in the request are inserted, or merged into the existing record with the same id. Records not in the request are left alone.\n- `reconcile`: the request is treated as your **complete** catalog. Records in it are inserted or updated, and every active record not in it is deactivated (never hard-deleted, so it can be restored by sending it again). If a reconcile would deactivate more than half of a non-empty catalog, it is rejected with a `shrink_guard` error unless you pass `confirm_shrink=true`. An empty list or a CSV with no data rows is always rejected in this mode.\n\nUse `dry_run=true` to validate and get the counts without writing anything.\n\nFor `type=lab_panel`, every id in `member_result_ids` must already be stored as a `lab_result` in your workspace, so write results first. A panel needs at least one member and an id can appear once. A member that is not a stored result is rejected with the message `\u003cid> is not a result in this catalog`.\n\n`overwrite=true` (CSV only) hard-deletes the whole catalog and replaces it with the file, in one transaction. It cannot be combined with `mode=reconcile`; prefer `reconcile`, which can be undone.","href":"/api-sdk/datasets/write"},{"openapi":"get /admin/datasets/v1/","title":"List dataset records","description":"Returns one page of the catalog for the given type, newest first. Inactive (soft-deleted or deactivated) records are left out unless `show_inactive=1`.\n\nUnlike the other endpoints, this one returns the page object directly, without the `success` / `message` envelope.","href":"/api-sdk/datasets/list"},{"openapi":"get /admin/datasets/v1/{entity_id}/","title":"Get a record","description":"Fetches one record by your own id for it.","href":"/api-sdk/datasets/get"},{"openapi":"get /admin/datasets/v1/export.csv","title":"Export the catalog as CSV","description":"Downloads the catalog as CSV, in the same column order the write endpoint accepts, so an export can be uploaded again unchanged.","href":"/api-sdk/datasets/export"},{"openapi":"get /admin/datasets/v1/batches/","title":"List CSV import batches","description":"Your recent CSV uploads for this type, newest first, with their row counts. Use it to confirm that a sync landed.\n\nReturns the page object directly, without the `success` / `message` envelope.","href":"/api-sdk/datasets/batches"},{"openapi":"post /admin/datasets/v1/delete/","title":"Deactivate records","description":"Soft-deletes the records with the given ids: they stop appearing in lists and partner search but are kept, and sending them again in a write restores them. Ids that don't exist are reported in `not_found`.","href":"/api-sdk/datasets/delete"},{"openapi":"post /admin/datasets/v1/delete-all/","title":"Delete the whole catalog","description":"**Permanently** deletes every record of this type in your workspace. This cannot be undone. Requires `confirm=true`. To remove records reversibly, use a reconcile write or deactivate them instead.","href":"/api-sdk/datasets/delete-all"},{"openapi":"get /admin/datasets/v1/search-status/","title":"Get partner search status","description":"Whether partner search in the Eka Medical Database uses this catalog. Off until you switch it on.","href":"/api-sdk/datasets/search-status-get"},{"openapi":"post /admin/datasets/v1/search-status/","title":"Turn partner search on or off","description":"Switches partner search in the Eka Medical Database to use this catalog, or back off. Turn it on once, after your first successful write; later syncs don't need to touch it. Turning it off is the rollback if a catalog turns out to be wrong.\n\nPanel search (`lab_panel`) can only be on while result search (`lab_result`) is on for the same knowledge base. A request that would break this is refused with a 400 and nothing changes: turning `lab_panel` on while `lab_result` is off returns code `turn_on_results_first`, turning `lab_panel` on while `lab_result` is on in a different knowledge base returns code `results_in_other_kb`, and turning `lab_result` off while `lab_panel` is on in the same knowledge base returns code `turn_off_panels_first`.","href":"/api-sdk/datasets/search-status-set"}]},{"group":"Medical Knowledge-bases","icon":"book-open-cover","pages":[{"openapi":"post /eka-mcp/protocols/v1/search","title":"Search Protocols","description":"This endpoint returns pages from the protocols based on the query, publishers and tag.","href":"/api-sdk/datasets/protocols/search"},{"openapi":"get /eka-mcp/protocols/v1/publishers/all","title":"Get all Publishers","description":"This endpoint returns a list of all protocols publishers","href":"/api-sdk/datasets/protocols/publishers"},{"openapi":"get /eka-mcp/medications/v1/search","title":"Search Medications","description":"This endpoint returns suggested/similar drugs from the Eka medical database for the given parameters - drug name, generics, form or volume.\nSuggestions are ranked based on similarity and also popularity (custom eka metric) of the medicine","href":"/api-sdk/datasets/medications/search"},{"openapi":"get /eka-mcp/pharmacology/v1/search","title":"Get Generic (pharmacology) Information","description":null,"href":"/api-sdk/datasets/medications/pharmacology"},{"title":"SNOMED Linking (Deprecated)","openapi":"get /eka-mcp/linking/v1/snomed","description":"**Deprecated.** Use `POST /med-link/nel/link` from the Medical Entity Codification API instead — see the [Link Entity](/api-sdk/models/medical-entity-codification/link-entity) docs. This endpoint remains operational for existing integrations.","href":"/api-sdk/datasets/linking/snomed"}]},{"group":"Medical Database","icon":"book-open-cover","pages":[{"openapi":"get /medical-db/v1/drugs-and-labs","title":"Search Drugs and Laboratory Tests","description":"This endpoint returns comprehensive information about pharmaceutical drugs and laboratory tests from the Eka medical database based on search query.\n\nThe API provides detailed drug information including manufacturer details, dosage information, generic names etc","href":"/api-sdk/datasets/medical-db/drugs-and-labs"},{"openapi":"get /medical-db/v1/sym-and-diag","title":"Search Symptoms and Diagnoses","description":"This endpoint returns comprehensive information about medical symptoms and diagnoses from the Eka medical database based on search query.\n\nThe API provides detailed symptom and diagnosis information including ICD-10 codes, common names, and medical terminology for healthcare professionals and applications.","href":"/api-sdk/datasets/medical-db/symptoms-and-diagnosis"}]},{"group":"SDKs","pages":[]}]}]}]},{"item":"Understanding Integrations","icon":"https://mintlify.s3.us-west-1.amazonaws.com/ekacare/images/icons/products/compass.svg","description":"For teams already on an Eka product: connect Eka EMR, IPD, Billing and Health Records to your own systems through the same APIs developers build with","tabs":[{"tab":"Documentation","pages":[{"group":"Understanding Integrations","pages":[{"title":"Understanding Integrations","description":"For teams already on an Eka product: connect Eka EMR, IPD, Billing and Health Records to your own systems through the same APIs developers build with.","icon":"plug","href":"/docs/integrations/overview"},{"icon":"notes-medical","title":"Integrations","description":"Connect the Eka products you already use to your own systems: Medical Scribe and Eka EMR, with IPD, Billing and Health Records.","href":"/docs/solutions/scribe-and-medical-records"}]}]}]},{"item":"Eka EMR","icon":"https://mintlify.s3.us-west-1.amazonaws.com/ekacare/images/icons/products/clipboard-list.svg","description":"Patients, appointments and prescriptions","tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/docs/emr/patients"}]},{"tab":"APIs \u0026 SDKs","pages":[{"group":"Eka EMR API","pages":[{"title":null,"description":null,"href":"/api-sdk/emr/instructions/before-you-begin"},{"group":"Patient Directory APIs","icon":"hospital-user","expanded":true,"pages":[{"openapi":"post /dr/v1/patient","title":"Add Patient to Directory","description":"This functionality enables the addition of new patient records to a business' directory. Users can provide necessary details such as personal information, contact details, and medical history to create a new patient profile.\n\n> _In case the patient is already registered with Eka care, then passing the patient eka id will be enough_","href":"/api-sdk/emr/patient-registration-api/add-patient-to-directory"},{"openapi":"get /dr/v1/business/patients/search","title":"Search Patient profiles by mobile number","description":"This API provides functionality to get all profiles of patient by their mobile number in business' directory. \n\n\u003cNote> This API only works on 10 digit mobile number and cannot be used for searching partial phone numbers. The patient with given mobile number should already be registered with business account for results to show up. \u003c/Note>\n\n\n### Request Parameter\n\n| Parameter | Type | Expected Values | Description | Required/Optional/Not Required |\n| --- | --- | --- | --- | --- |\n| mobile | string | 10 digit phone number | Patient's mobile number | Required |\n\n### **Response parameter**\n\n| Parameter | Type | Expected Values | Description |\n| ----------------------------------- | --------- | ----------------------------------------- | --------------------------------------------------------- |\n| data | object | | Response data object |\n| data.profiles | array | | List of patient profiles |\n| data.profiles[].name | string | \"Amit Kumar\" | Patient's full name |\n| data.profiles[].patient_id | string | \"123456789012345\" | Unique identifier for the patient (can be null) |\n| data.profiles[].patient_profile | object | | Detailed patient profile information |\n| data.profiles[].patient_profile.created_at | string | \"2024-08-13T07:31:53.750Z\" | Timestamp of profile creation |\n| data.profiles[].patient_profile.dob | string | \"1990-05-15\" | Patient's date of birth |\n| data.profiles[].patient_profile.first_name | string | \"Amit\" | Patient's first name |\n| data.profiles[].patient_profile.middle_name | string | \"\" | Patient's middle name (can be empty) |\n| data.profiles[].patient_profile.last_name | string | \"Kumar\" | Patient's last name |\n| data.profiles[].patient_profile.gender | string | \"M\" / \"F\" / \"O\" | Patient's gender |\n| data.profiles[].patient_profile.mobile | string | \"+919876543210\" | Patient's mobile number |\n| data.profiles[].patient_profile.patient_id | string \\| null | \"123456789012345\" | Unique identifier for the patient (can be null) |\n| status_code | integer | 200 | HTTP status code of the response |\n| success | boolean | true | Indicates if the request was successful |\n\n**Status Codes**\n\n• 200: Success\n\n• 403: Patient/Business data missing\n\n• 500: Wrong API URL/Wrong JSON request/ Something went wrong","href":"/api-sdk/emr/patient-registration-api/search-patient-by-mobile"},{"openapi":"get /dr/v1/patient/{patient_id}","title":"Get patient details by profile id","description":"This API provides functionality to get details of a patient by their Eka profile id, from a business' directory.\nThe patient should have been previously added to the business directory for this API to return the patient's details.\n","href":"/api-sdk/emr/patient-registration-api/get-patient-details-by-id"},{"openapi":"patch /dr/v1/patient/{patient_id}","title":"Update Patient Details","description":"Thi API provides functionality to update patient details for the registered patients.","href":"/api-sdk/emr/patient-registration-api/update-patient-details-api"},{"openapi":"post /profiles/v1/patient/","title":"Create a patient profile","description":"Allows businesses to add new patient record by capturing personal, contact, and medical information.\n\n**Name Field Requirement**:\n - Either `fln` **must be provided**, or at least `fn` must be included (optionally with `mn` and `ln`).\n","href":"/api-sdk/emr/patient-directory-apis/add-patient"},{"openapi":"get /profiles/v1/patient/search","title":"Search patient profiles","description":"\n**Global Search is exclusive to specific workspaces only. Please reach out to support.**\n\nSearch patient profiles by **username**, **mobile**, or **full name** (prefix match).\n\nThe `limit` parameter controls the number of results fetched internally (default: 50, maximum: 50).\n","href":"/api-sdk/emr/patient-directory-apis/search-patient"},{"openapi":"get /profiles/v1/patient/{oid}","title":"Retrieve patient profile","description":null,"href":"/api-sdk/emr/patient-directory-apis/retrieve-patient-details"},{"openapi":"patch /profiles/v1/patient/{oid}","title":"Update patient profile details","description":"Payload for updating patient profile.\n\n**Name Field Requirement**:\n - Either `fln` **must be provided**, or at least `fn` must be included (optionally with `mn` and `ln`).\n - If you do not want to change the name, omit all name fields.\n","href":"/api-sdk/emr/patient-directory-apis/update-patient-details"},{"openapi":"delete /profiles/v1/patient/{oid}","title":"Archive or permanently delete patient profile","description":"By default, the patient profile is **archived** (soft delete). Archived profiles can still be retrieved using the `arc=true` query parameter in the retrieve API.\n\nTo **permanently delete** an already archived profile, set the `perm=true` query parameter. Permanent deletion is only allowed on profiles that have already been archived.\n","href":"/api-sdk/emr/patient-directory-apis/delete-patient"},{"openapi":"get /profiles/v1/patient/minified/","title":"List patient profiles","description":"Retrieves a paginated list of patient profiles.\n\nThe following fields are **always included** in the response, regardless of the `select` parameter:\n - `mobile`\n - `oid`\n - `username`\n - `fln`\n","href":"/api-sdk/emr/patient-directory-apis/patients-list-minified"},{"openapi":"get /profiles/v1/patient/by-mobile/","title":"Retrieve patient profiles by mobile number","description":"Retrieves patient profiles using the mobile number in a workspace.\nThe mobile number must be in the format `+\u003ccountry_code>\u003cnumber>`.\n\nBy default, it returns a minimal profile with `oid`, `username`, `fln`, `gen`, `dob`, `abha`, `ccd`, `ps`. To get the full profile, set `full_profile=true`.\n","href":"/api-sdk/emr/patient-directory-apis/retrieve-patients-by-mobile"},{"openapi":"get /profiles/v1/patient/{username}/username/?flatten=true","title":"Retrieve patient profile by username","description":"Retrieves patient profile using username in a workspace.\n","href":"/api-sdk/emr/patient-directory-apis/retrieve-patient-by-username"},{"openapi":"get /profiles/v1/emr-user/{oid}","title":"Retrieve EMR user profile","description":"Retrieves an EMR user profile by OID.\n","href":"/api-sdk/emr/patient-directory-apis/retrieve-emr-user"},{"openapi":"patch /profiles/v1/emr-user/{oid}","title":"Update EMR user profile","description":"Updates an EMR user profile with validated and normalized data.\n\n**Authorization Rules**:\n - Users can update their own profile.\n - Admins can update any profile within their workspace.\n\n**Name Handling**:\n - If `fln` is provided, it will be split into `fn`, `mn`, `ln`.\n - If updating name, ensure either `fn` or `fln` is provided.\n","href":"/api-sdk/emr/patient-directory-apis/update-emr-user"}]},{"group":"Doctor and clinic API","icon":"stethoscope","pages":[{"openapi":"get /dr/v1/business/entities","title":"Get Clinic and Doctor details","description":"\n### Overview\nThe Get Clinic and Doctor Details API provides a comprehensive list of clinics and doctors associated with those clinics for a business. This API is designed to retrieve detailed information about clinics, the doctors working at each clinic, and the overarching business entity.\n### Endpoint\n**URL:** `{{HOST}}/dr/v1/business/entities`\n\n**Method:** GET\n### Request Parameters\nThis endpoint does not require any parameters. The auth header contains business-id information which will be used to fetch the details.\n### Response Parameters\n| Parameter | Type | Description |\n| --- | --- | --- |\n| status | integer | HTTP status code of the response |\n| data | object | Response data object |\n| data.clinics | array | List of clinic objects |\n| data.clinics[].clinic_id | string | Unique identifier of the clinic |\n| data.clinics[].name | string | Name of the clinic |\n| data.clinics[].doctors | array | List of doctor IDs associated with the clinic |\n| data.doctors | array | List of doctor objects |\n| data.doctors[].name | string | Name of the doctor |\n| data.doctors[].doctor_id | string | Unique identifier of the doctor |\n| data.business | object | Details of the business entity |\n| data.business.business_id | string | Unique identifier of the business |\n| data.business.name | string | Name of the business |","href":"/api-sdk/emr/doctor-and-clinic-api/get-clinic-and-doctor-details"},{"openapi":"get /dr/v1/doctor/{doctor_id}","title":"Get Doctor profile","description":"\n### Overview\nThis API endpoint is used to retrieve detailed information about a specific doctor using their unique identifier. The response includes comprehensive information about the doctor, such as personal details, specializations, and associated clinics.\n### Request Parameters\n\n| Parameter | Type | Description | Required |\n| --- | --- | --- | --- |\n| doctor_id | string | Unique identifier for the doctor | Yes |\n\n### Response Parameters\n\n| Parameter | Type | Description |\n| --- | --- | --- |\n| id | string | Unique identifier for the doctor in Eka |\n| created_at | datetime | Timestamp when the doctor profile was created |\n| profile | object | Doctor's profile details |\n| profile.personal | object | Personal details of the doctor |\n| profile.personal.salutation | string | Salutation (e.g., Dr.) |\n| profile.personal.first_name | string | First name of the doctor |\n| profile.personal.middle_name | string | Middle name of the doctor |\n| profile.personal.last_name | string | Last name of the doctor |\n| profile.personal.email | string | Email address of the doctor |\n| profile.personal.gender | string | Gender of the doctor |\n| profile.personal.dob | date | Date of birth of the doctor |\n| profile.professional | object | Professional details of the doctor |\n| profile.professional.username | string | Username of the Doctor|\n| profile.professional.active | boolean | Flag indicating if the profile is active |\n| profile.professional.about | string | About section describing the doctor |\n| profile.professional.language | array | Languages spoken by the doctor |\n| profile.professional.language\\[\\].language | string | Language name (e.g., English) |\n| profile.professional.clinics | array | Clinics associated with the doctor |\n| profile.professional.clinics\\[\\] | object | Clinic details |\n| profile.professional.clinics\\[\\]..id | string | Unique identifier for the clinic |\n| profile.professional.clinics\\[\\].city_name | string | City name where the clinic is located |\n| profile.professional.clinics\\[\\].name | string | Name of the clinic |\n| profile.professional.clinics\\[\\].email | string | Email address of the clinic |\n| profile.professional.clinics\\[\\].about | string | About section of the clinic |\n| profile.professional.clinics\\[\\].speciality | array | Specialities offered at the clinic |\n| profile.professional.clinics\\[\\].number | array | Contact numbers for the clinic |\n| profile.professional.clinics\\[\\].number\\[\\].name | string | Type of contact number (e.g., Phone, Mobile) |\n| profile.professional.clinics\\[\\].number\\[\\].n | string | Contact number |\n| profile.professional.clinics\\[\\].address | object | Address details of the clinic |\n| profile.professional.clinics\\[\\].address.line1 | string | Address line 1 |\n| profile.professional.clinics\\[\\].address.line2 | string | Address line 2 |\n| profile.professional.clinics\\[\\].address.city | string | City of the clinic |\n| profile.professional.clinics\\[\\].address.state | string | State of the clinic |\n| profile.professional.clinics\\[\\].address.country | string | Country of the clinic |\n| profile.professional.clinics\\[\\].address.pincode | string | Pincode of the clinic |\n| profile.professional.clinics\\[\\].location | array | Location coordinates of the clinic |\n| profile.professional.default_clinic | string | Default clinic ID |\n| profile.professional.all_registrations | array | Registrations of the doctor |\n| profile.professional.all_registrations\\[\\].id | number | Registration ID |\n| profile.professional.all_registrations\\[\\].council | string | Medical council name |\n| profile.professional.all_registrations\\[\\].medical_id | string | Medical ID number |\n| profile.professional.all_registrations\\[\\].year | string | Year of registration |\n| profile.professional.all_registrations\\[\\].default | boolean | Flag indicating if it is the default registration |\n| profile.professional.degree | array | Degrees earned by the doctor |\n| profile.professional.degree\\[\\].id | number | Degree ID |\n| profile.professional.degree\\[\\].name | string | Name of the degree |\n| profile.professional.degree\\[\\].branch_name | string | Branch name |\n| profile.professional.degree\\[\\].college_name | string | College name |\n| profile.professional.degree\\[\\].display_status | string | Display status of the degree |\n| profile.professional.degree\\[\\].start_year | string | Start year of the degree |\n| profile.professional.degree\\[\\].end_year | string | End year of the degree |\n| profile.professional.major_speciality | object | Major speciality of the doctor |\n| profile.professional.major_speciality.name | string | Name of the major speciality |\n| profile.professional.speciality | array | Specialities of the doctor |\n| profile.professional.speciality\\[\\].name | string | Name of the speciality |\n| **Status Codes** | | |\n\n• 200: Success\n\n• 403: Doctor data missing\n\n• 500: Wrong API URL/Token mismatched/Wrong JSON request.","href":"/api-sdk/emr/doctor-and-clinic-api/get-doctor-profile"},{"openapi":"get /dr/v1/business/clinic/{clinic_id}","title":"Get Clinic details","description":"### Overview\nThis API endpoint retrieves detailed information about a specific clinic using its unique identifier.\n### Endpoint\n**URL:** `{{HOST}}/dr/v1/business/clinic/{{clinic_id}}`\n**Method:** GET\n### Request Parameters\n| Parameter | Type | Description | Required |\n| --- | --- | --- | --- |\n| clinic_id | string | Unique identifier for the clinic | Yes |\n### Response Parameters\n| Parameter | Type | Description |\n| --- | --- | --- |\n| success | boolean | Indicates if the request was successful |\n| data | object | Response data object |\n| data.clinic | object | Clinic details |\n| data.clinic.clinic_id | string | Unique identifier of the clinic |\n| data.clinic.name | string | Name of the clinic |\n| data.clinic.address | object | Address details of the clinic |\n| data.clinic.address.city | string | City of the clinic |\n| data.clinic.address.country | string | Country of the clinic |\n| data.clinic.address.lat | string | Latitude of the clinic |\n| data.clinic.address.line1 | string | Address line 1 |\n| data.clinic.address.lon | string | Longitude of the clinic |\n| data.clinic.address.pincode | string | Pincode of the clinic |\n| data.clinic.address.state | string | State of the clinic |","href":"/api-sdk/emr/doctor-and-clinic-api/get-clinic-details"},{"openapi":"get /dr/v1/doctor/service/{doctor_id}","title":"Get Doctor services","description":"This API response returns a list of medical services offered by a specific doctor, including details like service name, duration, booking options, and fees. Each service specifies whether it supports pre-pay or post-pay, along with the delivery mode (e.g., in-clinic or teleconsultation). The data helps configure or display available appointment types for patient booking.\n### Response Parameters\n| Parameter | Type | Description |\n| --- | --- | --- |\n| data | object | Response data object |\n| data.services | array | List of services offered |\n| data.services[].appointment_type | string | Type of appointment (e.g., REGULAR, FOLLOW_UP) |\n| data.services[].archive | boolean | Service active or archived on doc tool |\n| data.services[].book_ahead_days | integer | Service bookability from today |\n| data.services[].created_at | integer | Epoch time |\n| data.services[].currency | string | Currency of Price |\n| data.services[].duration | integer | Duration of service booked in minutes |\n| data.services[].mode | array | Mode of consultation\n| data.services[].pre_pay | boolean | Payment to be taken at the time of booking an appointment or not |\n| data.services[].price | number | Price of Service |\n| data.services[].service_name | string | Service Name |\n| data.services[].conf_id | string | Configuration ID for the service |","href":"/api-sdk/emr/doctor-and-clinic-api/get-doc-service"}]},{"group":"Config management APIs","icon":"user-cog","pages":[{"openapi":"get /cdr/v1/hipusers/","title":"Get All HIP Users of a Business","description":"This API retrieves the list of all HIP users associated with a business. The response includes each user's details along with their linked doctors and clinics.\n> _Use this API to fetch all HIP users for a business account in one call._\n","href":"/api-sdk/emr/user-apis/get-all-users"},{"openapi":"get /cdr/v1/hipusers/{hip_user_id}","title":"Get HIP User Details by ID","description":"This API retrieves detailed information about a specific HIP user registered under a business. The response includes the user's personal details, assigned doctors, and associated clinics.\n> _Use this API to get complete profile details of a single HIP user by their Eka user ID._\n","href":"/api-sdk/emr/user-apis/get-user-by-id"},{"openapi":"get /cdr/v1/get_business_info/","title":"Get Workspace Information","description":"\n### Overview\nThe Get Workspace Information API retrieves basic information about a business including the business ID and business name. This API is designed to provide essential business details for authenticated requests.\n### Endpoint\n**URL:** `{{HOST}}/cdr/v1/get_business_info`\n\n**Method:** GET\n### Request Parameters\nThis endpoint does not require any parameters. The auth header contains business-id information which will be used to fetch the details.\n### Response Parameters\n| Parameter | Type | Description |\n| --- | --- | --- |\n| status | string | Status of the response (success) |\n| bid | string | Unique identifier of the business |\n| business_name | string | Name of the business |","href":"/api-sdk/emr/business-api/get-business-info"},{"openapi":"post /cdr/v1/doctor/","title":"Create Doctor Profile","description":"\n### Overview\nCreate a new doctor profile for your business. This endpoint lets you register a doctor with their personal details, specializations, qualifications, and profile image.\n\n**Endpoint:** `{{HOST}}/cdr/v1/doctor`\n\n**Method:** `POST`\n### Request Parameters\n\n| Parameter | Type | Description | Required |\n| --- | --- | --- | --- |\n| firstname | string | Doctor's first name | Yes |\n| lastname | string | Doctor's last name | Yes |\n| gender | string | Doctor's gender (M/F/O) | Yes |\n| dob | string | Doctor's date of birth (YYYY-MM-DD) | No |\n| email | string | Doctor's email address | No |\n| mobile | string | Doctor's mobile number (10 digits) | No |\n| specialisations | array | List of doctor's specializations | No |\n| qualifications | array | List of doctor's qualifications/degrees | No |\n| about | string | Brief description about the doctor | No |\n| profile_image_url | string | URL of the doctor's profile image | No |\n| clinic_ids | array | List of Eka clinic IDs to assign to this doctor | No |\n| partner_clinic_ids | array | List of partner clinic IDs to assign to this doctor | No |\n| partner_id | string | Unique identifier provided by partner | No |\n\n### Response Parameters\n\n| Parameter | Type | Description |\n| --------- | ------ | --------------------------------------------- |\n| status | string | Status of the response (e.g., \"success\") |\n| ekaid | string | Unique identifier for the created doctor |\n\n\n\n> **Note:** The `specialisations` and `qualifications` fields accept predefined values, if wanted these can be left empty as they are optional fields. For the complete and up-to-date list, see this Google Sheet: [View Specializations \u0026 Qualifications List](https://docs.google.com/spreadsheets/d/1qRf_R-WHF1F9g3XYcJWHp5IqIWzJxXCaKh22wCCm4j4/edit?usp=sharing)","href":"/api-sdk/emr/onboarding-apis/onboard-doctor"},{"openapi":"get /cdr/v1/doctor/","title":"List Doctors","description":"### Overview\nRetrieve a list of all doctors registered for your business. Each entry returns the doctor's basic profile, primary specialisation, partner ID, and the clinics they are associated with.\n\n**Endpoint:** `{{HOST}}/cdr/v1/doctor`\n\n**Method:** `GET`\n\n### Response Parameters\n\n| Parameter | Type | Description |\n| --------- | ------ | ---------------------------------------------------------- |\n| status | string | Status of the response (e.g., \"success\") |\n| doctors | array | List of doctor objects belonging to the business |","href":"/api-sdk/emr/onboarding-apis/list-doctors"},{"openapi":"get /cdr/v1/doctor/{doc_id}/","title":"Get Doctor by ID","description":"### Overview\nRetrieve a single doctor's profile using either the Eka ID or the partner-provided ID.\n\n**Endpoint:** `{{HOST}}/cdr/v1/doctor/{doc_id}/`\n\n**Method:** `GET`\n\n### Path Parameters\n\n| Parameter | Type | Description | Required |\n| --------- | ------ | ------------------------------------------------------ | -------- |\n| doc_id | string | Doctor's Eka ID or partner-provided ID | Yes |","href":"/api-sdk/emr/onboarding-apis/get-doctor"},{"openapi":"patch /cdr/v1/doctor/{doc_id}/","title":"Update Doctor","description":"### Overview\nUpdate an existing doctor's profile. Only the fields included in the request body will be updated; all fields are optional.\n\n**Endpoint:** `{{HOST}}/cdr/v1/doctor/{doc_id}/`\n\n**Method:** `PATCH`\n\n### Path Parameters\n\n| Parameter | Type | Description | Required |\n| --------- | ------ | ------------------------------------ | -------- |\n| doc_id | string | Doctor's Eka ID | Yes |","href":"/api-sdk/emr/onboarding-apis/update-doctor"},{"openapi":"delete /cdr/v1/doctor/{doc_id}/","title":"Delete Doctor","description":"### Overview\nSoft-delete a doctor by their Eka ID or partner-provided ID. Once deleted, the doctor will no longer appear in list or get responses.\n\n**Endpoint:** `{{HOST}}/cdr/v1/doctor/{doc_id}/`\n\n**Method:** `DELETE`\n\n### Path Parameters\n\n| Parameter | Type | Description | Required |\n| --------- | ------ | ------------------------------------------------------ | -------- |\n| doc_id | string | Doctor's Eka ID or partner-provided ID | Yes |","href":"/api-sdk/emr/onboarding-apis/delete-doctor"},{"openapi":"post /cdr/v1/clinic/","title":"Create Clinic","description":"### Overview\nThe Create Clinic API allows you to register a new clinic for your business, including its name, address, pincode, contact number, city, state, and assigned doctors.\n\n**Endpoint:** `{{HOST}}/cdr/v1/clinic`\n\n**Method:** POST\n### Request Parameters\n\n| Parameter | Type | Description | Required |\n| ----------- | ------- | --------------------------------------------- | -------- |\n| name | string | Name of the clinic | Yes |\n| address | string | Address of the clinic | Yes |\n| partner_id | string | Unique id of the clinic in partner's system. | No |\n| pincode | string | Pincode of the clinic | No |\n| contact | string | Contact number | No |\n| doctor_ids | array | List of doctor Eka IDs to assign to this clinic| No |\n| partner_doctor_ids | array | List of partner doctor IDs to assign to this clinic| No |\n| city | string | City name | No |\n| state | string | State name | No |\n### Response Parameters\n\n| Parameter | Type | Description |\n| ----------- | ------- | --------------------------------------------- |\n| status | string | Status of the response (e.g., \"success\") |\n| ekaid | string | Unique identifier for the created clinic |","href":"/api-sdk/emr/onboarding-apis/onboard-clinic"},{"openapi":"get /cdr/v1/clinic/","title":"List Clinics","description":"### Overview\nRetrieve a list of all clinics registered for your business. Each entry includes basic clinic details and the doctors associated with that clinic.\n\n**Endpoint:** `{{HOST}}/cdr/v1/clinic`\n\n**Method:** `GET`\n\n### Response Parameters\n\n| Parameter | Type | Description |\n| --------- | ------ | ---------------------------------------------------------- |\n| status | string | Status of the response (e.g., \"success\") |\n| clinics | array | List of clinic objects belonging to the business |","href":"/api-sdk/emr/onboarding-apis/list-clinics"},{"openapi":"get /cdr/v1/clinic/{clinic_id}/","title":"Get Clinic by ID","description":"### Overview\nRetrieve a single clinic's details using either the Eka ID or the partner-provided ID.\n\n**Endpoint:** `{{HOST}}/cdr/v1/clinic/{clinic_id}/`\n\n**Method:** `GET`\n\n### Path Parameters\n\n| Parameter | Type | Description | Required |\n| --------- | ------ | ---------------------------------------------------- | -------- |\n| clinic_id | string | Clinic's Eka ID or partner-provided ID | Yes |","href":"/api-sdk/emr/onboarding-apis/get-clinic"},{"openapi":"patch /cdr/v1/clinic/{clinic_id}/","title":"Update Clinic","description":"### Overview\nUpdate an existing clinic. Only the fields included in the request body will be updated; all fields are optional.\n\n**Endpoint:** `{{HOST}}/cdr/v1/clinic/{clinic_id}/`\n\n**Method:** `PATCH`\n\n### Path Parameters\n\n| Parameter | Type | Description | Required |\n| --------- | ------ | ----------------- | -------- |\n| clinic_id | string | Clinic's Eka ID | Yes |","href":"/api-sdk/emr/onboarding-apis/update-clinic"},{"openapi":"delete /cdr/v1/clinic/{clinic_id}/","title":"Delete Clinic","description":"### Overview\nSoft-delete a clinic by Eka ID or partner-provided ID. Deleted clinics no longer appear in list or get responses.\n\n**Endpoint:** `{{HOST}}/cdr/v1/clinic/{clinic_id}/`\n\n**Method:** `DELETE`\n\n### Path Parameters\n\n| Parameter | Type | Description | Required |\n| --------- | ------ | ---------------------------------------------------- | -------- |\n| clinic_id | string | Clinic's Eka ID or partner-provided ID | Yes |","href":"/api-sdk/emr/onboarding-apis/delete-clinic"},{"openapi":"post /cdr/v1/ekauser/","title":"Create Eka User","description":"\n### Overview\nCreate a new Eka User (HIP User) for your business. This endpoint lets you register a user with their personal details and assign them to specific doctors and clinics.\n\n**Endpoint:** `{{HOST}}/cdr/v1/ekauser`\n\n**Method:** `POST`\n### Request Parameters\n\n| Parameter | Type | Description | Required |\n|--------------|---------|-------------------------------------------------------|----------|\n| firstname | string | User's first name | Yes |\n| lastname | string | User's last name | Yes |\n| mobile | string | User's mobile number (10 digits) | Yes* |\n| email | string | User's email address | Yes* |\n| auth_userid | string | auth_userid is used for the SSO authentication | Yes* |\n| gender | string | User's gender (M/F/O) | Yes |\n| dob | string | User's date of birth (YYYY-MM-DD) | Yes |\n| is_admin | boolean | Whether the user is an admin | No |\n| seat_type | string | Seat type (b - basic, p - premium). Default: b | No |\n| persona | string | User persona (S - Staff, D - Doctor). Default: D | No |\n| doctor_ids | array | List of doctor Eka IDs to assign to this user | No |\n| partner_doctor_ids | array | List of partner doctor IDs to assign to this user | No |\n| clinic_ids | array | List of clinic Eka IDs to assign to this user | No |\n| partner_clinic_ids | array | List of partner clinic IDs to assign to this user | No |\n> **Note:** Either `mobile` or `email` or `auth_userid` is required. At least one must be provided.\n\n\n### Response Parameters\n\n| Parameter | Type | Description |\n| --------- | ------ | --------------------------------------------- |\n| status | string | Status of the response (e.g., \"success\") |\n| ekaid | string | Unique identifier for the created Eka User |","href":"/api-sdk/emr/onboarding-apis/onboard-ekauser"},{"openapi":"get /cdr/v1/ekauser/","title":"List Eka Users","description":"### Overview\nRetrieve a list of all Eka Users (HIP Users) registered for your business. Each entry includes the user's profile, role, seat type, and the doctors and clinics they are associated with.\n\n**Endpoint:** `{{HOST}}/cdr/v1/ekauser`\n\n**Method:** `GET`\n\n### Response Parameters\n\n| Parameter | Type | Description |\n| --------- | ------ | ---------------------------------------------------------- |\n| status | string | Status of the response (e.g., \"success\") |\n| users | array | List of Eka User objects belonging to the business |","href":"/api-sdk/emr/onboarding-apis/list-ekausers"},{"openapi":"get /cdr/v1/ekauser/{user_id}/","title":"Get Eka User by ID","description":"### Overview\nRetrieve a single Eka User's profile using either the Eka ID or the partner-provided ID.\n\n**Endpoint:** `{{HOST}}/cdr/v1/ekauser/{user_id}/`\n\n**Method:** `GET`\n\n### Path Parameters\n\n| Parameter | Type | Description | Required |\n| --------- | ------ | ---------------------------------------------------------- | -------- |\n| user_id | string | Eka User's Eka ID or partner-provided ID | Yes |","href":"/api-sdk/emr/onboarding-apis/get-ekauser"},{"openapi":"patch /cdr/v1/ekauser/{user_id}/","title":"Update Eka User","description":"### Overview\nUpdate an existing Eka User. Only the fields included in the request body will be updated; all fields are optional.\n\n**Endpoint:** `{{HOST}}/cdr/v1/ekauser/{user_id}/`\n\n**Method:** `PATCH`\n\n### Path Parameters\n\n| Parameter | Type | Description | Required |\n| --------- | ------ | ----------------- | -------- |\n| user_id | string | Eka User's Eka ID | Yes |","href":"/api-sdk/emr/onboarding-apis/update-ekauser"},{"openapi":"delete /cdr/v1/ekauser/{user_id}/","title":"Delete Eka User","description":"### Overview\nSoft-delete an Eka User by Eka ID or partner-provided ID. Deleted users no longer appear in list or get responses.\n\n**Endpoint:** `{{HOST}}/cdr/v1/ekauser/{user_id}/`\n\n**Method:** `DELETE`\n\n### Path Parameters\n\n| Parameter | Type | Description | Required |\n| --------- | ------ | ---------------------------------------------------------- | -------- |\n| user_id | string | Eka User's Eka ID or partner-provided ID | Yes |","href":"/api-sdk/emr/onboarding-apis/delete-ekauser"}]},{"group":"Appointment API","icon":"calendar-check","pages":[{"openapi":"get /dr/v1/doctor/{doctor_id}/clinic/{clinic_id}/appointment/slot","title":"Get Appointment Slots","description":"This API is the first step in booking appointment slot for a patient at a doctor's clinic","href":"/api-sdk/emr/appointment-api/get-appointment-slots"},{"openapi":"post /dr/v1/appointment","title":"Book Appointment Slot","description":"This API is used to book an appointment slot for a patient based on the available slots retrieved from the `get appointment slots` API.","href":"/api-sdk/emr/appointment-api/book-appointment-slot"},{"openapi":"get /dr/v1/appointment/{appointment_id}","title":"Get Appointment Details","description":"\n\n### Overview\nThis API endpoint is used to retrieve the details of an appointment using its unique identifier. The response includes comprehensive information about the appointment, including patient and doctor details, appointment status, and related services.\n\n\n### Appointment_statuses:\n\n Booked / Queue States:\n - BK (Booked) : Appointment created/confirmed.\n - CK (Checked-in) : Booked appointment added to the Queue (Checked-in).\n - RV (Reserved) : Appointment marked as Reserved, when patient said they will come for the appointment on the follow-up appointment message.\n - IN (Initiated) : Appointment marked as Initiated, when patient received follow-up appointment message.\n - PA (Parked) : Appointment moved to Parked state.\n\n Ongoing States:\n - OG (Ongoing): Consultation is in progress.\n\n Completion Statuses:\n - CM (Completed): Appointment completed with a prescription created.\n - CMNP (Completed No Prescription) : Appointment marked Exit from Queue / Completed without a prescription.\n - AB (Aborted) : Appointment was started (Start Visit) but not completed. Automatically marked AB at 12:00 AM next day.\n - NS (No Show) : Appointment was added to Queue but not started/completed. Automatically marked NS at 12:00 AM next day.\n - NSD (No Show Doctor) : No-show tagged specifically from a doctor’s action (if implemented).\n - NSS (No Show Staff) : No-show tagged specifically from a staff action (if implemented).\n\n Cancellation Statuses:\n - CN (Cancelled) : Appointment cancelled via API.\n - CND (Cancelled Doctor) : Cancelled from the doctor’s account in the tool.\n - CNS (Cancelled Staff) : Cancelled from the staff’s account in the tool.\n - PC (Provisional Cancelled) : Appointment marked as provisional cancellation, when patient said they will not come for the appointment on the follow-up appointment message.\n - PNR (Payment Not Received) : Appointment marked as PNR, when patient tried paying for a pre-paid appointment but the payment failed.\n\n Reschedule Statuses:\n - RE : Rescheduled via API.\n - RES : Rescheduled from staff account.\n - RED : Rescheduled from doctor account.","href":"/api-sdk/emr/appointment-api/get-appointment-details"},{"openapi":"patch /dr/v1/appointment/{appointment_id}","title":"Update Appointment","description":"\n### Overview\n\nThis API endpoint is used to update an existing appointment.","href":"/api-sdk/emr/appointment-api/update-appointment"},{"openapi":"patch /dr/v2/appointment/{appointment_id}","title":"Update Appointment V2","description":"\n### Overview\n\nThis API endpoint is used to update an existing appointment.","href":"/api-sdk/emr/appointment-api/update-appointment-v2"},{"openapi":"post /dr/v1/appointment/{appointment_id}/parked","title":"Parked Appointment","description":"\n### Overview\n\nThis API endpoint is used to update an existing appointment to parked state.","href":"/api-sdk/emr/appointment-api/parked-appointment"},{"openapi":"post /dr/v1/appointment/{appointment_id}/complete","title":"Complete Appointment","description":"\n### Overview\n\nThis API endpoint is used to complete an existing appointment.","href":"/api-sdk/emr/appointment-api/complete-appointment"},{"openapi":"put /dr/v1/appointment/{appointment_id}/cancel","title":"Cancel Appointment","description":"\n### Overview\n\nThis API endpoint is used to cancel an existing appointment.","href":"/api-sdk/emr/appointment-api/cancel-appointment"},{"openapi":"get /dr/v1/appointment","title":"Get Appointments","description":"\n\n### Overview\nThis API endpoint is used to retrieve all the appointments scheduled for a business with flexible filters.\n### Additional Information:\n\n - Valid filter combinations:\n 1. `patient_id` (alone)\n 2. `doctor_id`, `start_date`, `end_date`\n 3. `clinic_id`, `start_date`, `end_date`\n 4. `start_date`, `end_date`\n 5. `doctor_id`, `clinic_id`, `start_date`, `end_date`\n - Dates must follow `YYYY-MM-DD` format.\n - The date range must not exceed **7 days**.\n - `end_date` cannot be before `start_date`.\n - There is a `limit` i.e the maximum number of appointments returned per page. The value of `limit` is automatically set based on the filters used: \n - **20** → when filtering by `patient_id` (alone). \n - **50** → when filtering by (`doctor_id`, `start_date`, `end_date`) OR (`clinic_id`, `start_date`, `end_date`) OR (`doctor_id`, `clinic_id`, `start_date`, `end_date`). \n - **30** → when filtering only by (`start_date`, `end_date`). \n\n### Appointment_statuses:\n\n Booked / Queue States:\n - BK (Booked) : Appointment created/confirmed.\n - CK (Checked-in) : Booked appointment added to the Queue (Checked-in).\n - RV (Reserved) : Appointment marked as Reserved, when patient said they will come for the appointment on the follow-up appointment message.\n - IN (Initiated) : Appointment marked as Initiated, when patient received follow-up appointment message.\n - PA (Parked) : Appointment moved to Parked state.\n\n Ongoing States:\n - OG (Ongoing): Consultation is in progress.\n\n Completion Statuses:\n - CM (Completed): Appointment completed with a prescription created.\n - CMNP (Completed No Prescription) : Appointment marked Exit from Queue / Completed without a prescription.\n - AB (Aborted) : Appointment was started (Start Visit) but not completed. Automatically marked AB at 12:00 AM next day.\n - NS (No Show) : Appointment was added to Queue but not started/completed. Automatically marked NS at 12:00 AM next day.\n - NSD (No Show Doctor) : No-show tagged specifically from a doctor’s action (if implemented).\n - NSS (No Show Staff) : No-show tagged specifically from a staff action (if implemented).\n\n Cancellation Statuses:\n - CN (Cancelled) : Appointment cancelled via API.\n - CND (Cancelled Doctor) : Cancelled from the doctor’s account in the tool.\n - CNS (Cancelled Staff) : Cancelled from the staff’s account in the tool.\n - PC (Provisional Cancelled) : Appointment marked as provisional cancellation, when patient said they will not come for the appointment on the follow-up appointment message.\n - PNR (Payment Not Received) : Appointment marked as PNR, when patient tried paying for a pre-paid appointment but the payment failed.\n\n Reschedule Statuses:\n - RE : Rescheduled via API.\n - RES : Rescheduled from staff account.\n - RED : Rescheduled from doctor account.","href":"/api-sdk/emr/appointment-api/get-appointments-by-date"},{"openapi":"post /dr/v1/appointment/{appointment_id}/change-status","title":"No-Show Appointment","description":"\n### Overview\n\nThis API endpoint is used to update an existing appointment to No-Show state.","href":"/api-sdk/emr/appointment-api/change-status"},{"openapi":"put /dr/v1/appointment/{appointment_id}/follow-up/confirm","title":"Confirm Follow-Up Appointment","description":"\n### Overview\n\nThis API endpoint confirms an existing follow-up appointment by changing its status from INITIATED to BOOKED.","href":"/api-sdk/emr/appointment-api/confirm-follow-up-appointment"},{"openapi":"patch /appointments/v1/{appointment_id}/reschedule","title":"Reschedule Appointment","description":"\n### Overview\n\nThis API is used to reschedule an appointment. Rescheduling does **not** update the existing appointment. Instead, a brand new appointment is created with the supplied `start_time` and `end_time`, while the previous appointment's status is marked as `RES` (which represents *rescheduled*).\n\nThe newly created appointment carries a `prev_aids` field — an array containing the ids of the previous, rescheduled appointment(s). Each previous appointment in turn carries a `next_aid` field, which holds the id of the next appointment it was rescheduled to. This forms a linked chain across the reschedule history.\n\nThe response of this API is the **new appointment** that is created as a result of the reschedule.","href":"/api-sdk/emr/appointment-api/reschedule-appointment"},{"openapi":"post /schedule","title":"Create Schedule","description":"### Overview\nCreates a schedule for an `entity_id` in a `location_id` — `entity_id` is your doctor id, `location_id` is your clinic id. A schedule holds booking config (overbooking limit, slot-duration mode) and, optionally, its timebounds (weekly / daily / repeat-weekly / repeat-daily / block rules) and a product assignment map, all in one call. This endpoint is primarily for setting the timebounds — the `s`/`e` windows a doctor is available in, and (for service-based schedules) the `conf_ids` bookable in each window.\n\n### Duration-based vs. service-based schedules\n`config.schedule_slot_config_enabled` decides how every bound's slots get sliced, and whether that bound may carry `conf_ids`:\n\n- **Duration-based** (`schedule_slot_config_enabled: true`): requires at least one entry in `config.slot_durations`. Slots are sliced at a fixed length picked from `slot_durations`. Bounds in `timebounds` must **not** include `conf_ids` — sending any is rejected with `400`.\n- **Service-based** (`schedule_slot_config_enabled` false or omitted): every bound must include `conf_ids` — the services bookable in that window. Valid ids come from the Service Configuration APIs (`Get Service Conf List`, `Get Service Conf Details`) for the schedule's `entity_id`; an id the entity doesn't own, or an empty list, is rejected with `400`. There is no schedule- level slot duration here — each slot is sliced using the `duration` stored on the attached service (`conf_id`), so different services in the same bound can produce differently-sized slots.\n\n`product-widget` can only be assigned to one schedule per `(entity_id, location_id)` pair — a second assignment returns `409`.\n\n### Notes \u0026 Considerations\n\nRead more : ([API Reference - Get Appointment Slots](/api-sdk/emr/appointment-api/get-appointment-slots)) section — this API returns schedules assigned to `product-widget`.","href":"/api-sdk/emr/appointment-api/create-schedule"},{"openapi":"patch /schedule/{scheduleId}","title":"Update Schedule","description":"### Overview\nEdits an existing schedule's config, name, archive state, and/or its timebounds, in one call. Ownership is checked against the caller's business — a schedule belonging to another business returns `401`, and an unknown `scheduleId` returns `404`.\n\nArchiving a schedule cannot be combined with timebound additions/deletions or a product assignment in the same request (`409`). Mutating an already-archived schedule also returns `409`. The same `booking_id` cannot appear in both `timebounds` and `deleteTimebounds` (`400`).","href":"/api-sdk/emr/appointment-api/update-schedule"},{"openapi":"delete /schedule/{scheduleId}","title":"Delete Schedule","description":"### Overview\nTears down a schedule: hard-deletes the schedule head, its config document, every product assignment row, and all v2 timebounds/blocks (weekly, daily, repeat-weekly, repeat-daily) for it. Any widget-assigned targets are cleaned up on the axon side fire-and-forget.\n\nThis is irreversible. Ownership is checked the same way as `PATCH /schedule/{scheduleId}`.","href":"/api-sdk/emr/appointment-api/delete-schedule"},{"openapi":"get /schedule/resolved","title":"Get Resolved Schedule","description":"### Overview\nResolves one or more entities' schedules over a date range into concrete daily availability windows (`bounds`), any blackout `blocks`, and — when `include_rules=true` — the raw underlying rules and config each schedule was resolved from. Also returns each entity's `schedule_id`.","href":"/api-sdk/emr/appointment-api/get-business-resolved-schedule"},{"openapi":"get /schedule/service-conf/{entityId}","title":"Get Service Conf List","description":"### Overview\nLists the non-archived service configurations (`service-conf`) for an entity. `entityId` accepts either a doctor id or a clinic id.","href":"/api-sdk/emr/appointment-api/get-service-conf-list"},{"openapi":"get /schedule/service-conf/{entityId}/{conf_id}","title":"Get Service Conf Details","description":"### Overview\nFetches a single service configuration by id. `entityId` accepts either a doctor id or a clinic id. Unlike the list endpoint, this does not filter out archived records.","href":"/api-sdk/emr/appointment-api/get-service-conf-details"}]},{"openapi":"get /dr/v1/prescription/{prescription_id}","title":"Get Prescription details","description":"This API retrieves comprehensive details of a prescription created by a doctor. It provides a rich set of data encompassing patient history, diagnosis, medications, lab tests, and various other clinical elements. The response includes:","href":"/api-sdk/emr/prescription-api/get-prescription-details"},{"openapi":"post /notification/v1/notify","title":"Send Notification","description":"This API allows partners to send notifications to users. The notifications can include a title, body, image URL, link, and a param if provided. The API supports different platform flavors such as Android, iOS, iPad and Web.","href":"/api-sdk/emr/notify/notify"},{"group":"Webhooks","icon":"webhook","pages":[{"openapi":"post /registered_url_for_add_appointment_events","title":"Create appointment","description":"\nWhen an appointment is created, a webhook event is sent to registered webhooks with details about the appointment, including the appointment ID, status, doctor ID, patient ID, and event type.\n\n**Field Definitions**\n\n• **event**: string - The type of resource for which event is generated. For appointments created, this will be `appointment.created`.\n\n• **service**: string - The type of service. For appointments, this will be `appointment`.\n\n• **data**: object - Contains detailed information about the appointment event.\n\n• **appointment_id**: string - Unique identifier for the appointment.\n\n• **doctor_id**: string - Unique identifier for the doctor.\n\n• **patient_id**: string - Unique identifier for the patient.\n\n• **status**: string - Status of the appointment. Possible values can be \n\n - \"BK\" (Booked),\n\n - \"OG\" (Ongoing),\n\n - \"CM\" (Completed with Prescription),\n\n - \"CMNP\" (Completed without Prescription),\n\n - \"CN\" (Cancelled).\n\n\n• **action**: string - Current action for the appointment. Possible values can be \n\n - created\n\n - modified\n\n - completed\n\n• **partner_meta**: key value pair specified by `partner` while creating appointment. \n\n• **timestamp**: string (ISO 8601) - The date and time when the event occurred.\n\n• **custom_attibutes**: complete set of custom attributes(inclusing tags and labels) defined against this appointment. occurred.\n\n**Example Webhook Request**\n\n**Endpoint:** [https://your-registered-webhook-url.com](https://your-registered-webhook-url.com)\n\n**Method:** POST","href":"/api-sdk/emr/post_webhooks/add-appointment-webhook"},{"openapi":"post /registered_url_for_update_appointment_events","title":"Update appointment","description":"\nWhen an appointment is updated, a webhook event is sent to registered webhooks with details about the appointment, including the appointment ID, status, doctor ID, patient ID, and event type.\n\n**Field Definitions**\n\n• **event**: string - The type of resource for which event is generated. For appointments updated, this will be `appointment.updated`.\n\n• **service**: string - The type of service. For appointments, this will be `appointment`.\n\n• **data**: object - Contains detailed information about the appointment event.\n\n• **appointment_id**: string - Unique identifier for the appointment.\n\n• **doctor_id**: string - Unique identifier for the doctor.\n\n• **patient_id**: string - Unique identifier for the patient.\n\n• **status**: string - Status of the appointment. Possible values can be \n\n - \"BK\" (Booked),\n\n - \"OG\" (Ongoing),\n\n - \"CM\" (Completed with Prescription),\n\n - \"CMNP\" (Completed without Prescription),\n\n - \"CN\" (Cancelled).\n\n\n• **action**: string - Current action for the appointment. Possible values can be \n\n - created\n\n - modified\n\n - completed\n\n• **partner_meta**: key value pair specified by `partner` while creating appointment. \n\n• **timestamp**: string (ISO 8601) - The date and time when the event occurred.\n\n• **custom_attibutes**: complete set of custom attributes(inclusing tags and labels) defined against this appointment. occurred.\n\n**Example Webhook Request**\n\n**Endpoint:** [https://your-registered-webhook-url.com](https://your-registered-webhook-url.com)\n\n**Method:** POST","href":"/api-sdk/emr/post_webhooks/update-appointment-webhook"},{"openapi":"post /registered_url_for_assessment_taken_events","title":"Assessment Taken","description":"\nWhen an assessment linked to the appointment is completed, a webhook event is sent to registered webhooks with details about the appointment, including the appointment ID, status, doctor ID, patient ID, and event type.\n\n**Field Definitions**\n\n• **event**: string - The type of resource for which event is generated. Here, it will be `appointment.assessments.taken`.\n\n• **service**: string - The type of service. For appointments, this will be `appointment`.\n\n• **data**: object - Contains detailed information about the appointment event.\n\n• **appointment_id**: string - Unique identifier for the appointment.\n\n• **doctor_id**: string - Unique identifier for the doctor.\n\n• **patient_id**: string - Unique identifier for the patient.\n\n• **status**: string - Status of the appointment. Possible values can be \n\n - \"BK\" (Booked),\n\n - \"OG\" (Ongoing),\n\n - \"CM\" (Completed with Prescription),\n\n - \"CMNP\" (Completed without Prescription),\n\n - \"CN\" (Cancelled).\n\n\n• **action**: string - Current action for the appointment. Possible values can be \n\n - created\n\n - modified\n\n - completed\n\n• **partner_meta**: key value pair specified by `partner` while creating appointment. \n\n• **timestamp**: string (ISO 8601) - The date and time when the event occurred.\n\n• **custom_attibutes**: complete set of custom attributes(inclusing tags and labels) defined against this appointment. occurred.\n\n• **sa_ids**: List of self assessment IDs.\n\n• **workflow_data**: List of self assessment data.\n\n**Example Webhook Request**\n\n**Endpoint:** [https://your-registered-webhook-url.com](https://your-registered-webhook-url.com)\n\n**Method:** POST","href":"/api-sdk/emr/post_webhooks/assessment-taken-webhook"},{"openapi":"post /registered_url_for_status_change_events","title":"Status changed","description":"\nWhen status of an appointment changes, a webhook event is sent to registered webhooks with details about the appointment, including the appointment ID, status, doctor ID, patient ID, and event type.\n\n**Field Definitions**\n\n• **event**: string - The type of resource for which event is generated. Here, it will be `appointment.statuschange`.\n\n• **service**: string - The type of service. For appointments, this will be `appointment`.\n\n• **data**: object - Contains detailed information about the appointment event.\n\n• **appointment_id**: string - Unique identifier for the appointment.\n\n• **doctor_id**: string - Unique identifier for the doctor.\n\n• **patient_id**: string - Unique identifier for the patient.\n\n• **status**: string - Status of the appointment. Possible values can be \n\n - \"BK\" (Booked),\n\n - \"OG\" (Ongoing),\n\n - \"CM\" (Completed with Prescription),\n\n - \"CMNP\" (Completed without Prescription),\n\n - \"CN\" (Cancelled).\n\n\n• **action**: string - Current action for the appointment. Possible values can be \n\n - created\n\n - modified\n\n - completed\n\n• **partner_meta**: key value pair specified by `partner` while creating appointment. \n\n• **timestamp**: string (ISO 8601) - The date and time when the event occurred.\n\n• **custom_attibutes**: complete set of custom attributes(inclusing tags and labels) defined against this appointment. occurred.\n\n**Example Webhook Request**\n\n**Endpoint:** [https://your-registered-webhook-url.com](https://your-registered-webhook-url.com)\n\n**Method:** POST","href":"/api-sdk/emr/post_webhooks/status-change-webhook"},{"openapi":"post /registered_url_for_appointment_tele_dr_joined_webhook_events","title":"Doctor Joined Video Call","description":"\nThis webhook is triggered when a doctor joins a scheduled video consultation.\n\n**Field Definitions**\n\n• **event**: string - The type of resource for which event is generated. When doctor joins video call, this will be `appointment.tele.dr_joined`.\n\n• **service**: string - The type of service. For appointments, this will be `appointment`.\n\n• **business_id**: string - The eka id of business.\n\n• **event_time**: integer - Event occurrence timestamp.\n\n• **timestamp**: integer - Event occurrence timestamp.\n\n• **client_id**: string- Client ID for the appointment\n\n• **transaction_id**: string - The id of the transaction.\n\n• **data**: object - Contains detailed information about the appointment event.\n\n• **appointment_id**: string - Unique identifier for the appointment.\n\n• **doctor_id**: string - Unique identifier for the doctor.\n\n• **patient_id**: string - Unique identifier for the patient.\n\n• **clinic_id**: string - Unique identifier for the clinic.\n\n• **video_connect**: object - Contains information about vendor, meet_link and host_link.\n\n \n• **host_link**: string - Link for the doctor.\n\n• **meet_link**: string - Link for the meeting patient.\n\n• **vendor**: string - The video conferencing service provider.\n\n**Example Webhook Request**\n\n**Endpoint:** [https://your-registered-webhook-url.com](https://your-registered-webhook-url.com)\n\n**Method:** POST","href":"/api-sdk/emr/post_webhooks/appointment-tele-dr-joined-webhook"},{"openapi":"post /registered_url_for_appointment_reminder_instant_webhook_events","title":"Appointment Reminder (Instant)","description":"This webhook is triggered to send an instant reminder for an upcoming appointment. Unlike the standard reminder which is scheduled in advance, this reminder event is sent immediately. The receiving system can use this to trigger instant alerts to the patient or doctor.\n\n**Field Definitions**\n\n• **event**: string - The type of event. For instant appointment reminders, this will be `appointment.reminder_instant`.\n\n• **business_id**: string - The eka ID of the business.\n\n• **event_time**: integer - Event occurrence timestamp in milliseconds.\n\n• **partition_id**: string - Partition identifier for the event.\n\n• **transaction_id**: string - Unique transaction identifier for the event.\n\n• **data**: object - Contains detailed information about the appointment.\n\n• **appointment_id**: string - Unique identifier for the appointment.\n\n• **doctor_id**: string - Unique identifier for the doctor.\n\n• **patient_id**: string - Unique identifier for the patient.\n\n• **clinic_id**: string - Unique identifier for the clinic.\n\n**Example Webhook Request**\n\n**Endpoint:** [https://your-registered-webhook-url.com](https://your-registered-webhook-url.com)\n\n**Method:** POST","href":"/api-sdk/emr/post_webhooks/appointment-reminder-instant-webhook"},{"openapi":"post /registered_url_for_appointment_followup_reminder_instant_webhook_events","title":"Follow-up Appointment Reminder (Instant)","description":"This webhook is triggered to send an instant reminder for an upcoming follow-up appointment. Unlike the standard follow-up reminder which is scheduled in advance, this reminder event is send immediately. The receiving system can use this to trigger instant follow-up visit alerts to the patient or doctor.\n\n**Field Definitions**\n\n• **event**: string - The type of event. For instant follow-up appointment reminders, this will be `appointment.followup_reminder_instant`.\n\n• **business_id**: string - The eka ID of the business.\n\n• **event_time**: integer - Event occurrence timestamp in milliseconds.\n\n• **partition_id**: string - Partition identifier for the event.\n\n• **transaction_id**: string - Unique transaction identifier for the event.\n\n• **data**: object - Contains detailed information about the appointment.\n\n• **appointment_id**: string - Unique identifier for the appointment.\n\n• **doctor_id**: string - Unique identifier for the doctor.\n\n• **patient_id**: string - Unique identifier for the patient.\n\n• **clinic_id**: string - Unique identifier for the clinic.\n\n**Example Webhook Request**\n\n**Endpoint:** [https://your-registered-webhook-url.com](https://your-registered-webhook-url.com)\n\n**Method:** POST","href":"/api-sdk/emr/post_webhooks/appointment-followup-reminder-instant-webhook"},{"openapi":"post /registered_url_for_vaccination_reminder_webhook_events","title":"Vaccination Reminder","description":"\nThis webhook is triggered when a vaccination reminder is sent for a patient. It notifies the registered endpoint with vaccination details so the receiving system can send appropriate reminders to the patient or doctor.\n\n**Field Definitions**\n\n• **event**: string - The type of event. For vaccination reminders, this will be `vaccination.reminder`.\n\n• **service**: string - The type of service. This will be `appointment`.\n\n• **event_time**: integer - Event occurrence timestamp in milliseconds.\n\n• **partition_id**: string - Partition identifier for the event in the format `{business_id}:{patient_id}:vaccination.reminder`.\n\n• **transaction_id**: string - Unique transaction identifier for the event in the format `{patient_id}-{doctor_id}-{timestamp}`.\n\n• **data**: object - Contains detailed information about the vaccination reminder.\n\n• **doctor_id**: string - Unique identifier for the doctor.\n\n• **patient_id**: string - Unique identifier for the patient.\n\n• **patient_name**: string - Name of the patient.\n\n• **doctor_name**: string - Name of the doctor.\n\n• **booking_link**: string - Link to book an appointment.\n\n• **due_date**: string - Due date for the vaccination.\n\n• **vaccines**: string - Vaccines due for the patient.\n\n**Example Webhook Request**\n\n**Endpoint:** [https://your-registered-webhook-url.com](https://your-registered-webhook-url.com)\n\n**Method:** POST","href":"/api-sdk/emr/post_webhooks/vaccination-reminder-webhook"},{"openapi":"post /registered_url_for_prescription_events","title":"Prescription Created Event","description":"\nWhen a prescription is created or modified, a webhook event is sent to registered webhooks with details about the prescription, including the prescription ID, visit ID, doctor ID, patient ID, and event type.\n\nThe receiver can then use the `prescription_id` from webhook events to retrieve the details of a specific prescription by calling the prescription API.","href":"/api-sdk/emr/post_webhooks/prescription-webhook"},{"openapi":"post /registered_url_for_prescription_communication_events","title":"Prescription Communication Event","description":"\nThis webhook is triggered when a user performs an on-demand \"Send Rx\" action from the tool, sharing a prescription with the patient. The registered endpoint receives details about the prescription that was communicated, including the prescription ID, prescription URL, doctor, patient and appointment information.\n\nThe receiver can use the `prescription_id` or `prescription_url` from the webhook event to retrieve or render the shared prescription.","href":"/api-sdk/emr/post_webhooks/prescription-communication-webhook"},{"openapi":"post /registered_url_for_doctor_events","title":"Doctor Events","description":"When a Doctor event occurs (such as the start of a practice), a webhook event is sent to registered webhooks with details about the schedule, including the doctor ID, partner doctor ID, and event time.\nThe receiver can use the details from the webhook event to update or manage schedules in the system.","href":"/api-sdk/emr/post_webhooks/doctor-webhook"},{"openapi":"post /registered_url_for_google_review_events","title":"Google Review Automatic Event","description":"When a prescription ends then automatically a webhook is sent to the registered endpoint containing the Doctor ID, Google review link, and Patient ID.\nThe receiving system can use these details to update or manage Google review information as needed.","href":"/api-sdk/emr/post_webhooks/google-review-webhook"},{"openapi":"post /registered_url_for_google_review_manual_events","title":"Google Review Manual Event","description":"When a Google review request is manually triggered through doctor platform, a webhook is sent to the registered endpoint containing the Appointment ID, Doctor ID, Patient ID, Clinic ID, and Google review link.\nThe receiving system can use these details to update or manage Google review information as needed.","href":"/api-sdk/emr/post_webhooks/google-review-manual-webhook"},{"openapi":"post /registered_url_for_consent_form","title":"Consent Form Events","description":"When a consent form or medical certificate is created or updated, a webhook is sent to the registered endpoint containing the Doctor Id, Patient Id, Consent form url, **type(represents whether it is a medical certificate or consent form)** etc.\nThe receiving system can use these details as per their need.","href":"/api-sdk/emr/post_webhooks/mcert-webhook"},{"openapi":"post /registered_url_for_receipt_events","title":"Receipt Events","description":"When a Receipt is created, updated or deleted, a webhook is sent to the registered endpoint containing the Doctor Id, Patient Id, Clinic Id etc.\nThe receiving system can use these details as per their need.","href":"/api-sdk/emr/post_webhooks/receipt-webhook"},{"openapi":"post /registered_url_for_receipt_payment_requested_events","title":"Payment Link Requested","description":"When a payment link is requested against an appointment, a webhook event is sent to the registered endpoint containing the appointment ID, doctor ID, patient ID, net amount and the payment checkout URL.\n\nThe receiving system can share the `url` with the patient to let them complete the payment, or use the other identifiers to reconcile the request in their own system.\n\n**Field Definitions**\n\n• **service**: string - The type of service. For this event, this will be `appointment`.\n\n• **event**: string - The type of event. For a payment link request, this will be `receipt_payment.requested`.\n\n• **event_time**: integer - Event occurrence timestamp in milliseconds.\n\n• **transaction_id**: string - Unique transaction identifier for the event.\n\n• **timestamp**: integer - Timestamp of the event.\n\n• **business_id**: string - The eka ID of the business.\n\n• **client_id**: string - Client ID associated with the event.\n\n• **data**: object - Contains detailed information about the payment request.\n\n• **appointment_id**: string - Unique identifier for the appointment.\n\n• **doctor_id**: string - Unique identifier for the doctor.\n\n• **patient_id**: string - Unique identifier for the patient.\n\n• **net_amount**: number - Net payable amount for which the payment link is generated.\n\n• **url**: string - Payment checkout URL to be shared with the patient to complete the payment.\n\n**Example Webhook Request**\n\n**Endpoint:** [https://your-registered-webhook-url.com](https://your-registered-webhook-url.com)\n\n**Method:** POST","href":"/api-sdk/emr/post_webhooks/payment-link-webhook"},{"openapi":"post /registered_url_for_ipd_admissions_events","title":"IPD Admission","description":"\nWhen an IPD (In-Patient Department) admission is created or updated, a webhook event is sent to registered webhooks with the full admission details, including the patient, attending doctor, facility, department, bed, category, rate plan, insurance and billing information.\n\n**Field Definitions**\n\n• **service**: string - The type of service. For IPD events, this will be `ipd`.\n\n• **event**: string - The type of event. For admissions, this will be `ipd_admissions.created` or `ipd_admissions.updated`.\n\n• **event_time**: integer - Event occurrence timestamp (epoch seconds).\n\n• **transaction_id**: string - Unique transaction identifier for the event.\n\n• **timestamp**: integer - Timestamp of the event (epoch seconds).\n\n• **business_id**: string - The eka ID of the business.\n\n• **client_id**: string - Client ID associated with the event.\n\n• **data**: object - Contains detailed information about the admission.\n\n• **id** / **ipid**: string - Unique identifiers for the admission.\n\n• **stage** / **status**: string - Current stage and status of the admission (e.g. `AD`, `BED_ASSIGNED`).\n\n• **patient** / **doc** / **attendee**: object - Patient, attending doctor and attendee details.\n\n• **facility** / **department** / **bed** / **category**: Location and allocation details for the admission.\n\n• **rateplan** / **insurance** / **totalbilled** / **totalpaid**: Billing, package and insurance details.\n\n**Example Webhook Request**\n\n**Endpoint:** [https://your-registered-webhook-url.com](https://your-registered-webhook-url.com)\n\n**Method:** POST","href":"/api-sdk/emr/post_webhooks/ipd-admissions"},{"openapi":"post /registered_url_for_ipd_admissions_events_events","title":"IPD Admission Event","description":"\nWhen an event occurs against an IPD admission (such as a clearance, stage change or other workflow action), a webhook event is sent to registered webhooks describing the action that was performed.\n\n**Field Definitions**\n\n• **service**: string - The type of service. For IPD events, this will be `ipd`.\n\n• **event**: string - The type of event. This will be `ipd_admissions_events.created` or `ipd_admissions_events.updated`.\n\n• **event_time**: integer - Event occurrence timestamp (epoch seconds).\n\n• **transaction_id**: string - Unique transaction identifier for the event.\n\n• **timestamp**: integer - Timestamp of the event (epoch seconds).\n\n• **business_id**: string - The eka ID of the business.\n\n• **client_id**: string - Client ID associated with the event.\n\n• **data**: object - Contains details about the admission event.\n\n• **kind**: string - The kind of event (e.g. `CLEARANCE`).\n\n• **by**: object - The actor who performed the action.\n\n• **to**: string - The resulting state of the action (e.g. `COMPLETED`).\n\n**Example Webhook Request**\n\n**Endpoint:** [https://your-registered-webhook-url.com](https://your-registered-webhook-url.com)\n\n**Method:** POST","href":"/api-sdk/emr/post_webhooks/ipd-admissions-events"},{"openapi":"post /registered_url_for_ipd_admissions_clearances_events","title":"IPD Admission Clearance","href":"/api-sdk/emr/post_webhooks/ipd-admissions-clearances"},{"openapi":"post /registered_url_for_ipd_admissions_estimates_events","title":"IPD Admission Estimate","description":"\nWhen a cost estimate line item is created or updated against an IPD admission, a webhook event is sent to registered webhooks with the estimate details, including the service, rate, quantity and any discount applied.\n\n**Field Definitions**\n\n• **service**: string - The type of service. For IPD events, this will be `ipd`.\n\n• **event**: string - The type of event. This will be `ipd_admissions_estimates.created` or `ipd_admissions_estimates.updated`.\n\n• **event_time**: integer - Event occurrence timestamp (epoch seconds).\n\n• **transaction_id**: string - Unique transaction identifier for the event.\n\n• **timestamp**: integer - Timestamp of the event (epoch seconds).\n\n• **business_id**: string - The eka ID of the business.\n\n• **client_id**: string - Client ID associated with the event.\n\n• **data**: object - Contains details about the estimate line item.\n\n• **name** / **service_id**: The estimate item name and the service identifier it refers to.\n\n• **rate** / **quantity** / **discount**: Pricing details for the estimate line item.\n\n**Example Webhook Request**\n\n**Endpoint:** [https://your-registered-webhook-url.com](https://your-registered-webhook-url.com)\n\n**Method:** POST","href":"/api-sdk/emr/post_webhooks/ipd-admissions-estimates"}]},{"group":"SDKs","icon":"box-open","pages":[{"icon":"box-open","title":"Trinity Profiles SDK (TypeScript)","description":"Type-safe SDK for managing patient profiles through the Trinity API.","href":"/api-sdk/emr/sdks/patient-directory-sdks/patient-directory-ts-sdk"},{"icon":"rocket","title":"Eka Care TS SDK","description":"TS sdk for Eka care APIs, has the following modules built in appointments, patients, medicationSearch and health assessment. with full TypeScript support and TS based autocomplete on `payload`, `fns`, return `responses`.","href":"/api-sdk/sdks/sdks/web-sdk/getting-started"},{"icon":"box-open","title":"Python SDK: ekacare","description":"A python sdk for ekacare backend","href":"/api-sdk/sdks/sdks/backend/ekapython-sdk"}]},{"group":"Webhook setup","pages":[{"icon":"rocket","title":"Getting Started","sidebarTitle":"Webhooks API","description":null,"href":"/api-sdk/webhooks/getting-started"},{"openapi":"post /notification/v1/connect/webhook/subscriptions","title":"Register Webhook","description":"Registers a new webhook triggered by specific events. Each webhook is linked to a `business_id`, `client_id`, `endpoint`, and `event_names` defining the events that trigger it. The service sends POST requests to the specified URL for these events. The URL must be reachable and preferably secure (HTTPS). Optionally, a signing key can be provided to verify webhook payload authenticity.\n","href":"/api-sdk/webhooks/register-webhook"},{"openapi":"get /notification/v1/connect/webhook/subscriptions","title":"Get Webhooks","description":"Retrieves all registered webhooks. This endpoint allows partners to get a list of all webhooks that have been registered. Each webhook in the list includes details such as the unique identifier, event names that trigger the webhook, the endpoint URL, the signing key (if provided), the client ID, the protocol used, and timestamps for when the webhook was created and last updated. This information helps partners manage and audit their webhook configurations.\n","href":"/api-sdk/webhooks/get-webhooks"},{"openapi":"delete /notification/v1/connect/webhook/subscriptions/{id}","title":"Delete a Webhook","description":"Deletes an existing webhook based on its ID. This endpoint allows partners to remove a previously registered webhook by specifying its unique identifier in the path parameter. The `id` parameter is required and must match the ID of the webhook to be deleted. Upon successful deletion, the service will no longer send POST requests to the webhook's URL for the specified scope. This operation helps partners manage and clean up their webhook configurations.\n","href":"/api-sdk/webhooks/delete-webhook"},{"icon":"webhook","title":"Webhook Signature","description":null,"href":"/docs/webhooks/webhook-signature"},{"icon":"webhook","title":"Webhook Samples","description":null,"href":"/docs/webhooks/webhook-samples"},{"title":"Glossary","sidebarTitle":"Glossary","description":"The terms used in the Webhooks docs, what each one means, and the page where you meet it.","icon":"book","href":"/docs/webhooks/glossary"},{"icon":"webhook","title":"EkaCare Webhook SDK","description":"SDK for processing EkaCare webhook events","href":"/api-sdk/sdks/sdks/backend/webhook-sdk"}]}]},{"group":"IPD","icon":"/images/icons/products/bed-double.svg","pages":[{"group":"Configuration","expanded":true,"pages":[{"group":"Setup data","pages":[{"openapi":"get /ipd/service/ipd","title":"Get IPD Setup Data","description":"\n### Overview\n\nThis API returns your workspace's **IPD setup data in one call**: beds, rooms, categories, rate plans, rate plan inclusions, and the bed and rate plan links to clinics. Only active (not deleted) items are returned.\n\nBoth query parameters are optional:\n\n- `keys` — comma-separated list of the collections to return (for example `beds,rooms`). Unknown keys are ignored. When omitted, all collections are returned.\n- `from` — return only items updated after this date-time, to sync changes since your last call.\n\n> **Deletions are not returned.** Deleted items are left out of every response, including with `from`. To detect deletions, compare against a full fetch without `from`.","href":"/api-sdk/ipd/configuration/setup/get-ipd-setup-data"}]},{"group":"Categories","pages":[{"openapi":"post /ipd/service/categories","title":"Create Category","description":"\n### Overview\n\nThis API creates a new **IPD category** for your workspace. A category groups rooms (for example *ICU*, *General Ward* or *Private Room*); rooms are created under a category and beds under a room.\n\nOnly `name` is required. The category `id` and `updatedAt` are server-generated. Fields not listed in the request body are rejected.","href":"/api-sdk/ipd/configuration/categories/create-category"},{"openapi":"post /ipd/service/categories/{category_id}","title":"Update Category","description":"\n### Overview\n\nThis API updates an existing **IPD category** of your workspace. It is a partial update: only the fields sent in the request body are changed, and fields that are omitted keep their current value.\n\nReturns `400` with `Category not found` when the `category_id` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/configuration/categories/update-category"},{"openapi":"delete /ipd/service/categories/{category_id}","title":"Delete Category","description":"\n### Overview\n\nThis API deletes an **IPD category** of your workspace. The delete is a soft delete: the category is archived, not removed.\n\n> **Cascading archive:** deleting a category also archives **every room under it and every bed in those rooms**. Archived categories, rooms and beds are no longer returned in listings.\n\nReturns `400` with `Category not found` when the `category_id` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/configuration/categories/delete-category"}]},{"group":"Rooms","pages":[{"openapi":"post /ipd/service/rooms","title":"Create Room","description":"\n### Overview\n\nThis API creates a new **IPD room** for your workspace. A room belongs to a category (for example *ICU*) and holds beds; beds are created under a room.\n\nOnly `name` is required. Pass `category` with a category id from [Create Category](/api-sdk/ipd/configuration/categories/create-category) to place the room under that category. The room `id` and `updatedAt` are server-generated. Fields not listed in the request body are rejected.","href":"/api-sdk/ipd/configuration/rooms/create-room"},{"openapi":"post /ipd/service/rooms/{room_id}","title":"Update Room","description":"\n### Overview\n\nThis API updates an existing **IPD room** of your workspace. It is a partial update: only the fields sent in the request body are changed, and fields that are omitted keep their current value. Send `category` to move the room to another category.\n\nReturns `400` with `Room not found` when the `room_id` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/configuration/rooms/update-room"},{"openapi":"delete /ipd/service/rooms/{room_id}","title":"Delete Room","description":"\n### Overview\n\nThis API deletes an **IPD room** of your workspace. The delete is a soft delete: the room is archived, not removed.\n\n> **Cascading archive:** deleting a room also archives **every bed in that room**. Archived rooms and beds are no longer returned in listings.\n\nReturns `400` with `Room not found` when the `room_id` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/configuration/rooms/delete-room"}]},{"group":"Beds","pages":[{"openapi":"post /ipd/service/beds","title":"Create Bed","description":"\n### Overview\n\nThis API creates a new **IPD bed** for your workspace. A bed belongs to a room; pass `room` with a room id from [Create Room](/api-sdk/ipd/configuration/rooms/create-room) to place the bed in that room.\n\nOnly `name` is required. The bed `id` and `updatedAt` are server-generated. Fields not listed in the request body are rejected.","href":"/api-sdk/ipd/configuration/beds/create-bed"},{"openapi":"post /ipd/service/beds/{bed_id}","title":"Update Bed","description":"\n### Overview\n\nThis API renames an existing **IPD bed** of your workspace. Only the bed `name` can be changed; the bed's room cannot be changed with this API.\n\nReturns `400` with `Bed not found` when the `bed_id` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/configuration/beds/update-bed"},{"openapi":"delete /ipd/service/beds/{bed_id}","title":"Delete Bed","description":"\n### Overview\n\nThis API deletes an **IPD bed** of your workspace. The delete is a soft delete: the bed is archived, not removed, and is no longer returned in listings.\n\nReturns `400` with `Bed not found` when the `bed_id` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/configuration/beds/delete-bed"},{"openapi":"post /ipd/service/bed-clinic-relations","title":"Link Bed to Clinic","description":"\n### Overview\n\nThis API links an **IPD bed** to a **clinic** of your workspace, so the bed is available at that clinic. A bed can be linked to more than one clinic.\n\nThe link is unique per `bed` and `clinic_id`: calling this API again for the same pair updates the existing link instead of creating a new one. `archived` defaults to `false`, so calling it for a previously removed link makes it active again.\n\nReturns `400` with `Bed not found` when the `bed` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/configuration/beds/link-bed-to-clinic"},{"openapi":"delete /ipd/service/bed-clinic-relations","title":"Unlink Bed from Clinic","description":"\n### Overview\n\nThis API removes the link between an **IPD bed** and a **clinic** of your workspace. The link is archived, not removed, and can be made active again with [Link Bed to Clinic](/api-sdk/ipd/configuration/beds/link-bed-to-clinic).\n\nThe bed and clinic are sent in the **request body**, not in the path.\n\nReturns `400` with `Bed clinic relation not found` when no link exists for the given `bed` and `clinic_id` in your workspace.","href":"/api-sdk/ipd/configuration/beds/unlink-bed-from-clinic"}]},{"group":"Rate plans","pages":[{"openapi":"post /ipd/service/rateplans","title":"Create Rate Plan","description":"\n### Overview\n\nThis API creates a new **IPD rate plan** for your workspace. A rate plan is a named set of charges (for example *Standard ICU*); the individual charges are added to it as inclusions with [Create Rate Plan Inclusion](/api-sdk/ipd/configuration/rate-plans/create-rate-plan-inclusion).\n\nOnly `name` is accepted. The rate plan `id` and `updatedAt` are server-generated. Fields not listed in the request body are rejected.","href":"/api-sdk/ipd/configuration/rate-plans/create-rate-plan"},{"openapi":"post /ipd/service/rateplans/{rate_plan_id}","title":"Update Rate Plan","description":"\n### Overview\n\nThis API renames an existing **IPD rate plan** of your workspace. When `name` is omitted the rate plan is returned unchanged.\n\nReturns `400` with `Rate plan not found` when the `rate_plan_id` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/configuration/rate-plans/update-rate-plan"},{"openapi":"delete /ipd/service/rateplans/{rate_plan_id}","title":"Delete Rate Plan","description":"\n### Overview\n\nThis API deletes an **IPD rate plan** of your workspace. The delete is a soft delete: the rate plan is archived, not removed.\n\n> **Cascading archive:** deleting a rate plan also archives **every inclusion of that rate plan**. Archived rate plans and inclusions are no longer returned in listings.\n\nReturns `400` with `Rate plan not found` when the `rate_plan_id` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/configuration/rate-plans/delete-rate-plan"},{"openapi":"post /ipd/service/rateplans/inclusions","title":"Create Rate Plan Inclusion","description":"\n### Overview\n\nThis API adds an **inclusion** to an IPD rate plan of your workspace. An inclusion is a single charge in the rate plan (for example *Bed charges* or *Nursing charges*) with its `rate`.\n\n`name`, `rate` and `plan` are all required. The inclusion `id` and `updatedAt` are server-generated. Fields not listed in the request body are rejected.","href":"/api-sdk/ipd/configuration/rate-plans/create-rate-plan-inclusion"},{"openapi":"post /ipd/service/rateplans/inclusions/{inclusion_id}","title":"Update Rate Plan Inclusion","description":"\n### Overview\n\nThis API updates an existing **rate plan inclusion** of your workspace. It is a partial update: only the fields sent in the request body are changed, and fields that are omitted keep their current value. Send `plan` to move the inclusion to another rate plan.\n\nReturns `400` with `Rate plan inclusion not found` when the `inclusion_id` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/configuration/rate-plans/update-rate-plan-inclusion"},{"openapi":"delete /ipd/service/rateplans/inclusions/{inclusion_id}","title":"Delete Rate Plan Inclusion","description":"\n### Overview\n\nThis API deletes an **inclusion** from an IPD rate plan of your workspace. The delete is a soft delete: the inclusion is archived, not removed, and is no longer returned in listings.\n\nReturns `400` with `Rate plan inclusion not found` when the `inclusion_id` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/configuration/rate-plans/delete-rate-plan-inclusion"},{"openapi":"post /ipd/service/rate-plan-clinic-relations","title":"Link Rate Plan to Clinic","description":"\n### Overview\n\nThis API links an **IPD rate plan** to a **clinic** of your workspace, so the rate plan is available at that clinic. A rate plan can be linked to more than one clinic.\n\nThe link is unique per `plan` and `clinic_id`: calling this API again for the same pair updates the existing link instead of creating a new one. `archived` defaults to `false`, so calling it for a previously removed link makes it active again.\n\nReturns `400` with `Rate plan not found` when the `plan` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/configuration/rate-plans/link-rate-plan-to-clinic"},{"openapi":"delete /ipd/service/rate-plan-clinic-relations","title":"Unlink Rate Plan from Clinic","description":"\n### Overview\n\nThis API removes the link between an **IPD rate plan** and a **clinic** of your workspace. The link is archived, not removed, and can be made active again with [Link Rate Plan to Clinic](/api-sdk/ipd/configuration/rate-plans/link-rate-plan-to-clinic).\n\nThe rate plan and clinic are sent in the **request body**, not in the path.\n\nReturns `400` with `Rate plan clinic relation not found` when no link exists for the given `plan` and `clinic_id` in your workspace.","href":"/api-sdk/ipd/configuration/rate-plans/unlink-rate-plan-from-clinic"}]},{"group":"IPID settings","pages":[{"openapi":"post /ipd/service/admissions/generate-ipid","title":"Generate IPID","description":"\n### Overview\n\nThis API generates the **next IPD case number (IPID)** for your workspace, as `prefix` followed by a running number.\n\nEach call **uses up a number**: the running number is increased by one and the new value is returned, so calling it twice returns two different IPIDs. The prefix and running number are set with [Update IPID Config](/api-sdk/ipd/configuration/ipid/update-ipid-config). For a workspace that has never set it, the first IPID is `IPD1`.\n\n`GET` on the same path behaves exactly the same, including using up a number.","href":"/api-sdk/ipd/configuration/ipid/generate-ipid"},{"openapi":"get /ipd/service/admissions/generate-ipid","title":"Generate IPID (GET)","description":"\n### Overview\n\nSame as [Generate IPID](/api-sdk/ipd/configuration/ipid/generate-ipid): returns the next IPD case number for your workspace.\n\n> **This GET changes data.** Each call increases the running number by one, exactly like the `POST`. Do not call it just to preview the next IPID — use [Get IPID Config](/api-sdk/ipd/configuration/ipid/get-ipid-config) instead.","href":"/api-sdk/ipd/configuration/ipid/generate-ipid-get"},{"openapi":"get /ipd/service/admissions/ipid-config","title":"Get IPID Config","description":"\n### Overview\n\nThis API returns how IPD case numbers (IPIDs) are generated for your workspace: the `prefix`, the running number `startsFrom`, and two settings for the admission form.\n\n`startsFrom` is the **last number used**: the next generated IPID is `prefix` + (`startsFrom` + 1). A workspace that has never set the config returns the defaults (`prefix: IPD`, `startsFrom: 1`, both settings `false`).","href":"/api-sdk/ipd/configuration/ipid/get-ipid-config"},{"openapi":"post /ipd/service/admissions/ipid-config","title":"Update IPID Config","description":"\n### Overview\n\nThis API sets how IPD case numbers (IPIDs) are generated for your workspace.\n\n`prefix` (a non-empty string, trimmed) and `startsFrom` (a whole number, `1` or more) are required. `startsFrom` is the **last number used**, so after setting `startsFrom: 100` the next generated IPID is `prefix101`. The two admission-form settings are optional; when omitted they keep their current value.","href":"/api-sdk/ipd/configuration/ipid/update-ipid-config"}]}]},{"group":"Admissions","pages":[{"group":"Admissions","pages":[{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions","title":"List IPD admissions","description":"Lists your workspace's IPD admissions, optionally filtered. Without `stage`, only admitted (`AD`) admissions are returned. Discharged (`DC`) admissions need `discharge_date_start`; `discharge_date_end` is optional. Archived admissions are excluded unless `include_archived=true`.","href":"/api-sdk/ipd/admissions/admissions/list-ipd-admissions"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions","title":"Create an IPD admission","description":"Creates an IPD admission in your workspace. The admission id is server-generated and the authenticated user is recorded as the actor.","href":"/api-sdk/ipd/admissions/admissions/create-an-ipd-admission"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}","title":"Get an IPD admission by id","description":"Fetches an IPD admission of your workspace.","href":"/api-sdk/ipd/admissions/admissions/get-an-ipd-admission-by-id"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json patch /ipd/sdk/admissions/{admission_id}","title":"Update an IPD admission","description":"Updates the given fields of an admission. Only the editable fields are accepted; ids, billing totals and clearance state cannot be set. Setting `status` also sets the matching `stage`, but does not run any workflow — use the discharge endpoints to discharge. Billing is reconciled best-effort (room meters follow a bed or rate plan change); a billing problem is reported in `billingWarning` and never fails the update.","href":"/api-sdk/ipd/admissions/admissions/update-an-ipd-admission"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/can-admit","title":"Check whether a patient can be admitted","description":"Returns `can_admit: false` when the patient already has an active (`AD`) admission in your workspace.","href":"/api-sdk/ipd/admissions/admissions/check-whether-a-patient-can-be-admitted"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/ipid-in-use","title":"Check whether an IPD case number is in use","description":"Returns `in_use: true` when another admission in your workspace already uses the IPID. Pass `exclude_admission_id` to ignore the admission being edited.","href":"/api-sdk/ipd/admissions/admissions/check-whether-an-ipd-case-number-is-in-use"},{"openapi":"get /ipd/service/admissions/{admission_id}","title":"Get Admission","description":"\n### Overview\n\nThis API returns a single **IPD admission** of your workspace — the patient, attendee, insurance, bed and rate plan, the doctor, department and facility, billing totals, and the admission's lifecycle state (`stage` and `status`). All timestamps are ISO-8601 strings.\n\nWhen the admission's `bed` is a bed id, the bed is also returned in `bedDetails`.\n\nReturns `400` with `Admission not found` when the admission does not exist in your workspace.","href":"/api-sdk/ipd/admissions/admissions/get-admission"}]},{"group":"Visits \u0026 advices","pages":[{"openapi":"get /ipd/service/admissions/{admission_id}/visits","title":"Get Admission with Visits","description":"\n### Overview\n\nThis API returns an **IPD admission** of your workspace (same as [Get Admission](/api-sdk/ipd/admissions/admissions/get-admission)) together with the **prescriptions of the visits** linked to the admission.\n\nEach prescribed medication and injection gets a `prescribe_dose_id` (`\u003cprescription id>-\u003cmedication id>`, with `-\u003cindex>` added for each tapering dose), so a dose can be referred to uniquely — for example when recording medicine administration.\n\nReturns `400` with `Admission not found` when the admission does not exist in your workspace.","href":"/api-sdk/ipd/admissions/visits/get-admission-visits"},{"openapi":"get /ipd/service/admissions/advices/{patient_id}","title":"List Admission Advices for Patient","description":"\n### Overview\n\nThis API lists the **admission advices** for a patient in your workspace — the times a doctor advised admission in a prescription (the \"Admission Advised\" section), newest first. Use it to start an admission from a doctor's advice.","href":"/api-sdk/ipd/admissions/visits/list-admission-advices"}]},{"group":"Estimates","pages":[{"openapi":"get /ipd/service/admissions/{admission_id}/estimate","title":"Get Admission Estimate","description":"\n### Overview\n\nThis API returns the **bill estimate** of an IPD admission of your workspace: the estimate lines, the billing totals, and the receipts of the admission's visits.\n\nThe **first item is always the rate plan line**: its `rate` is the sum of the rate plan's inclusions (per night), `quantity` is the admission duration (or `1`), and `name` is `\u003crate plan name>/night`. When the admission has no rate plan, this line is a placeholder with `rate` and `quantity` of `0` and `name` of `-`. The remaining items are the admission's estimate lines.\n\nEstimate line ids are not included in this response.\n\nReturns `400` with `Admission not found` when the admission does not exist in your workspace.","href":"/api-sdk/ipd/admissions/estimates/get-admission-estimate"},{"openapi":"post /ipd/service/admissions/{admission_id}/fs-estimates","title":"Save Admission Estimates","description":"\n### Overview\n\nThis API adds, changes and removes **estimate lines** of an IPD admission of your workspace in one call, then recalculates the admission's billed total and returns it.\n\nAll three lists are optional:\n\n- `creates` — new estimate lines.\n- `updates` — replace an existing line (`estimateId`) with `payload`.\n- `deletes` — ids of lines to remove.","href":"/api-sdk/ipd/admissions/estimates/save-admission-estimates"}]},{"group":"Audit events","pages":[{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/events","title":"List an admission's events","description":"Returns every audit event of the admission (status changes, clearances, discharge steps, pharmacy notifications, …), newest first.","href":"/api-sdk/ipd/admissions/events/list-an-admission-s-events"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/events","title":"Record an admission event","description":"Appends one event to the admission's audit trail. The event id is server-generated; `at` defaults to now and `by` to the authenticated operator.","href":"/api-sdk/ipd/admissions/events/record-an-admission-event"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json delete /ipd/sdk/admissions/{admission_id}/events/{event_id}","title":"Delete an admission event","description":"Deletes one event from the admission's audit trail. Deleting an id that does not exist is not an error.","href":"/api-sdk/ipd/admissions/events/delete-an-admission-event"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/events/latest","title":"Get the latest event of a kind","description":"Returns the newest event of the given `kind` (optionally only those whose `to` matches), or `event: null` when there is none.","href":"/api-sdk/ipd/admissions/events/get-the-latest-event-of-a-kind"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/events/discharge-initiation","title":"Get the discharge initiation event","description":"Latest `STATUS_CHANGE` into a discharge-in-progress status (for example `DISCHARGE_INITIATED`). Returns `event: null` when there is none.","href":"/api-sdk/ipd/admissions/events/get-the-discharge-initiation-event"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/events/discharge-disposition","title":"Get the discharge disposition event","description":"Latest `DISCHARGE_STEP` to `clearance_exit` — the disposition was completed. Returns `event: null` when there is none.","href":"/api-sdk/ipd/admissions/events/get-the-discharge-disposition-event"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/events/discharge-clearance","title":"Get the discharge clearance-exit event","description":"Latest `DISCHARGE_STEP` to `complete_discharge` — the clearance exit was completed. Returns `event: null` when there is none.","href":"/api-sdk/ipd/admissions/events/get-the-discharge-clearance-exit-event"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/events/discharge-summary","title":"Get the discharge summary submitted event","description":"Latest `DISCHARGE_SUMMARY` event with a `submitted` action, optionally for one `summary_id`. Returns `event: null` when there is none.","href":"/api-sdk/ipd/admissions/events/get-the-discharge-summary-submitted-event"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/events/latest-clearance-meta","title":"Get the latest completion per clearance","description":"For each clearance type that has been completed, when it was last completed and by whom — read from the events trail.","href":"/api-sdk/ipd/admissions/events/get-the-latest-completion-per-clearance"}]}]},{"group":"Clinical","pages":[{"group":"Nursing notes","pages":[{"openapi":"post /ipd/service/nursing-notes","title":"Create Nursing Note","description":"\n### Overview\n\nThis API adds a **nursing note** to an IPD admission of your workspace. The note content is sent in two forms: `content_html` (rendered HTML) and `content_json` (the structured form of the same content).\n\nThe note's author (`actor_name` and `actor_oid`) is recorded from the user making the request. The note `id` and timestamps are server-generated. Fields not listed in the request body are rejected.","href":"/api-sdk/ipd/clinical/nursing-notes/create-nursing-note"},{"openapi":"get /ipd/service/nursing-notes/admission/{admission_id}","title":"List Nursing Notes for Admission","description":"\n### Overview\n\nThis API returns all **nursing notes** of an IPD admission of your workspace, newest first (by `date`). An admission with no notes returns an empty list.\n\n> **Archived notes are included.** Notes removed with [Update Nursing Note](/api-sdk/ipd/clinical/nursing-notes/update-nursing-note) are returned with `archived: true`; filter them out if you only want active notes.","href":"/api-sdk/ipd/clinical/nursing-notes/list-nursing-notes"},{"openapi":"patch /ipd/service/nursing-notes/{note_id}","title":"Update Nursing Note","description":"\n### Overview\n\nThis API updates a **nursing note** of your workspace. It is a partial update: only the fields sent in the request body are changed, and fields that are omitted keep their current value.\n\n**To delete a note**, send `archived: true`. The note is archived (not removed) and the user making the request is recorded in `archived_by_oid`, `archived_by_name` and `archived_at`. Sending `archived: false` has no effect, so an archived note cannot be restored.\n\nReturns `404` with `Nursing note not found` when the `note_id` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/clinical/nursing-notes/update-nursing-note"},{"openapi":"post /ipd/service/nursing-notes-templates","title":"Create Nursing Note Template","description":"\n### Overview\n\nThis API creates a **nursing note template** for your workspace. A template holds reusable note content that can be used to fill in new nursing notes.\n\nThe template's author (`actor_name` and `actor_oid`) is recorded from the user making the request. The template `id` and timestamps are server-generated. Fields not listed in the request body are rejected.","href":"/api-sdk/ipd/clinical/nursing-notes/create-nursing-note-template"},{"openapi":"get /ipd/service/nursing-notes-templates","title":"List Nursing Note Templates","description":"\n### Overview\n\nThis API returns all **nursing note templates** of your workspace, newest first.\n\n> **Archived templates are included.** Templates removed with [Update Nursing Note Template](/api-sdk/ipd/clinical/nursing-notes/update-nursing-note-template) are returned with `archived: true`; filter them out if you only want active templates.","href":"/api-sdk/ipd/clinical/nursing-notes/list-nursing-note-templates"},{"openapi":"patch /ipd/service/nursing-notes-templates/{template_id}","title":"Update Nursing Note Template","description":"\n### Overview\n\nThis API updates a **nursing note template** of your workspace. It is a partial update: only the fields sent in the request body are changed, and fields that are omitted keep their current value.\n\n**To delete a template**, send `archived: true`. The template is archived (not removed) and the user making the request is recorded in `archived_by_oid`, `archived_by_name` and `archived_at`. Sending `archived: false` has no effect, so an archived template cannot be restored.\n\nReturns `404` with `Nursing note template not found` when the `template_id` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/clinical/nursing-notes/update-nursing-note-template"}]}]},{"group":"Discharge","pages":[{"group":"Initiate \u0026 clearances","pages":[{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/discharge/initiate","title":"Initiate a discharge","description":"Moves the admission to DISCHARGE_INITIATED, records the transition, and notifies every pharmacy the admission ordered from — in that order, as one operation. The status commits before any pharmacy is contacted, so a pharmacy is never told about a discharge that did not happen. A pharmacy that could not be reached comes back as `pharmacy_warning` and never fails the request.","href":"/api-sdk/ipd/discharge/clearances/initiate-a-discharge"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/clearances","title":"List an admission's discharge clearances","description":"Returns the admission's clearance documents (`pharmacy`, `lab`, `financial`, `nursing`, `doctor`). A clearance that has never been completed or reopened has no document yet, so it is not listed. The `pharmacy` clearance also carries the per-pharmacy notification state in `notify`.","href":"/api-sdk/ipd/discharge/clearances/list-an-admission-s-discharge-clearances"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/clearances/{type}/complete","title":"Complete a discharge clearance","description":"Marks one clearance COMPLETED, optionally with a `note` (\"cleared with note\"), records a `CLEARANCE` event, and updates the admission's `clearances_summary` and `discharge_ready`. When it was the last of the five, a `READY_FOR_DISCHARGE` event is also recorded. Any authenticated user of the workspace can complete any clearance; restrict who may do this in your own application.","href":"/api-sdk/ipd/discharge/clearances/complete-a-discharge-clearance"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/clearances/{type}/reopen","title":"Reopen a discharge clearance","description":"Moves one clearance back to PENDING — the undo for a mistaken completion — records a `CLEARANCE` event, and updates the admission's `clearances_summary` and `discharge_ready`.","href":"/api-sdk/ipd/discharge/clearances/reopen-a-discharge-clearance"}]},{"group":"Release rules","pages":[{"openapi":"get /ipd/service/admissions/discharge-release-rules","title":"Get Discharge Release Rules","description":"\n### Overview\n\nThis API returns the **discharge release rules** of your workspace — the departments that must clear a patient before discharge (nursing, billing, pharmacy, labs, doctor and discharge summary).\n\nEvery rule is always returned, with your saved settings applied on top of the defaults (all enabled, none mandatory). The `discharge-summary` rule is always enabled and cannot be turned off (`can_disable: false`); it is always listed last.","href":"/api-sdk/ipd/discharge/release-rules/get-discharge-release-rules"},{"openapi":"put /ipd/service/admissions/discharge-release-rules","title":"Update Discharge Release Rules","description":"\n### Overview\n\nThis API saves the **discharge release rules** of your workspace. Send each rule's `id` with whether it is `enabled` and `mandatory`.\n\nThe saved list **replaces** your previous settings; rules you leave out go back to their defaults (enabled, not mandatory). Unknown rule ids are ignored, and the `discharge-summary` rule is always kept enabled. The response is the full, updated rule list.\n\nRule ids: `nursing`, `billing`, `pharmacy`, `lab`, `doctor`, `discharge-summary`.","href":"/api-sdk/ipd/discharge/release-rules/update-discharge-release-rules"}]},{"group":"Discharge summaries","pages":[{"openapi":"post /ipd/service/discharge-summaries","title":"Create Discharge Summary","description":"\n### Overview\n\nThis API saves a **discharge summary** for an IPD admission of your workspace. The summary content is sent in two forms: `content_html` (rendered HTML) and `content_json` (the structured form of the same content).\n\nEach call creates a new discharge summary, so an admission can have more than one. To change an existing summary, use [Update Discharge Summary](/api-sdk/ipd/discharge/summaries/update-discharge-summary).\n\nThe summary's author (`actor_name` and `actor_oid`) is recorded from the user making the request. The summary `id` and timestamps are server-generated. Fields not listed in the request body are rejected.","href":"/api-sdk/ipd/discharge/summaries/create-discharge-summary"},{"openapi":"get /ipd/service/discharge-summaries/admission/{admission_id}","title":"List Discharge Summaries for Admission","description":"\n### Overview\n\nThis API returns all **discharge summaries** of an IPD admission of your workspace, newest first (by creation time). An admission with no discharge summary returns an empty list.","href":"/api-sdk/ipd/discharge/summaries/list-discharge-summaries"},{"openapi":"patch /ipd/service/discharge-summaries/{summary_id}","title":"Update Discharge Summary","description":"\n### Overview\n\nThis API updates the content of a **discharge summary** of your workspace. It is a partial update: only the fields sent in the request body are changed, and fields that are omitted keep their current value. The original author (`actor_name` and `actor_oid`) is not changed.\n\nReturns `404` with `Discharge summary not found` when the `summary_id` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/discharge/summaries/update-discharge-summary"},{"openapi":"get /ipd/service/admissions/generate-discharge-summary/{admission_id}","title":"Generate Discharge Summary","description":"\n### Overview\n\nThis API uses AI to **draft a discharge summary** for an IPD admission of your workspace, from the patient's details and the prescriptions of the admission's visits (latest visit first, each dated). The draft is **streamed** as HTML while it is written. To save it, use [Create Discharge Summary](/api-sdk/ipd/discharge/summaries/create-discharge-summary).\n\n**Response format:** `text/event-stream`. Each event is one line starting with `data:` followed by JSON:\n\n- `text` — the next piece of the summary as HTML, sent a line at a time (append it to what you have).\n- `is_eof` — `true` on the last event, which has empty `text`.\n- `tokens.index` — the position of the piece in the stream.\n\nEvents are separated by a single newline. If the summary cannot be started (for example the admission does not exist), a JSON error is returned instead with status `400`.","href":"/api-sdk/ipd/discharge/summaries/generate-discharge-summary"}]}]},{"group":"Billing","pages":[{"group":"Account","pages":[{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/billing/price-lists","title":"List billing price lists","description":"Your workspace's price lists (rate masters / tariff cards), offered when admitting and when editing an account. Returns 503 when billing is not configured on the server.","href":"/api-sdk/ipd/billing/account/list-billing-price-lists"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/account","title":"Open the admission's billing account","description":"Finds or creates the admission's billing account and links it to the admission. Pass `priceListId` to bill a newly created account against that price list. Safe to call again — an existing account is returned.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/account/open-the-admission-s-billing-account"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json put /ipd/sdk/admissions/{admission_id}/billing/price-list","title":"Change the account's price list","description":"Bills NEW charges against another price list (`null` = the default). Existing charges keep their prices.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/account/change-the-account-s-price-list"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/billing/summary","title":"Get the billing summary","description":"The account's rollups — `charges`, `invoiced`, `paid`, `outstanding`, `due`, `balance` — also refreshed onto the admission's billing totals.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/account/get-the-billing-summary"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/billing/state","title":"Get the full billing state","description":"Everything a billing view needs in one read: the account, summary, charges, room meters, returns, invoices, adjustment notes and final bills. Also refreshes the admission's billing totals.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/account/get-the-full-billing-state"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/settle","title":"Settle the billing account","description":"Finalises a zero-balance account at discharge without closing it (status stays `active`, reason `settled`). A non-zero balance is rejected.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/account/settle-the-billing-account"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/close","title":"Close the billing account","description":"Formally closes the account (status `closed`). Requires a zero balance unless `writeOff: true`, which writes the remaining balance off as bad debt.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/account/close-the-billing-account"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/reopen","title":"Reopen the billing account","description":"Re-opens a closed account — for a late charge or a mistaken close.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/account/reopen-the-billing-account"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/suspend","title":"Put the billing account on hold","description":"Puts the account on a credit hold (\"discharged — pending settlement\"): the patient has left and dues settle later (insurance, TPA, credit). Payments are still accepted; status becomes `suspended`.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/account/put-the-billing-account-on-hold"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/resume","title":"Lift the billing account's hold","description":"Lifts a credit hold; status becomes `active`.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/account/lift-the-billing-account-s-hold"}]},{"group":"Charges","pages":[{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/billing/charges","title":"List charges","description":"The account's charges.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/charges/list-charges"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/charges","title":"Add charges","description":"Adds one or more charges. Each is a catalog `chargeableId` or an inline `item`; prices come from the active price list unless `unitPrice` is given. Use `idempotencyKey` to make a retry safe.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/charges/add-charges"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json patch /ipd/sdk/admissions/{admission_id}/billing/charges/{charge_id}","title":"Update a charge","description":"Changes a charge's quantity, unit price, discount, description or service date.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/charges/update-a-charge"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/charges/{charge_id}/void","title":"Void a charge","description":"Voids a charge so it is no longer billed. `voidType` records why: `cancelled` (valid, but no longer applies) or `entered_in_error` (a mistake).\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/charges/void-a-charge"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/draft/quote","title":"Price draft charges","description":"Live pricing for draft lines (prices, discounts, tax, totals). Nothing is saved.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/charges/price-draft-charges"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/draft/submit","title":"Save draft charges","description":"Applies a set of new charges, changes and voids together, as one atomic save. `idempotencyKey` is required so a retry never applies the draft twice. Returns the resulting charges.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/charges/save-draft-charges"}]},{"group":"Payments","pages":[{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/billing/payments","title":"List payments","description":"The account's payments.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/payments/list-payments"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/payments","title":"Record a payment","description":"Records a payment against the account. To settle a specific invoice, use Pay an invoice instead.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/payments/record-a-payment"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/payments/{payment_id}/void","title":"Void a payment","description":"Reverses a wrongly recorded payment.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/payments/void-a-payment"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/payments/{payment_id}/allocate","title":"Apply a payment to an invoice","description":"Applies part of a payment's unapplied balance — for example money freed when a paid invoice was cancelled — to an invoice.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/payments/apply-a-payment-to-an-invoice"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/invoices/{invoice_id}/pay","title":"Pay an invoice","description":"Records a payment and settles it against the given invoice.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/payments/pay-an-invoice"}]},{"group":"Invoices","pages":[{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/billing/invoices","title":"List invoices","description":"The account's invoices.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/invoices/list-invoices"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/invoices","title":"Create an invoice","description":"Invoices the given charges (all un-invoiced charges when `chargeIds` is omitted), with an optional bill-level discount. Running room meters are billed up to now unless `meterIds` says otherwise.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/invoices/create-an-invoice"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/invoices/{invoice_id}/void","title":"Void an invoice","description":"Cancels a wrongly raised invoice; its charges go back to open. For an already-issued invoice, use Cancel an issued invoice (which issues a credit note).\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/invoices/void-an-invoice"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/invoices/{invoice_id}/cancel","title":"Cancel an issued invoice","description":"GST-correct cancellation of an issued invoice: issues a full credit note and moves the invoice to `credit_noted`.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/invoices/cancel-an-issued-invoice"}]},{"group":"Deposits","pages":[{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/billing/deposits","title":"List deposits","description":"The account's advances / deposits.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/deposits/list-deposits"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/deposits","title":"Collect a deposit","description":"Records an advance / deposit paid by the patient.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/deposits/collect-a-deposit"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/deposits/{deposit_id}/allocate","title":"Apply a deposit to an invoice","description":"Applies part of a held deposit against an invoice.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/deposits/apply-a-deposit-to-an-invoice"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/deposits/{deposit_id}/refund","title":"Refund a deposit","description":"Refunds a held deposit back to the patient.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/deposits/refund-a-deposit"}]},{"group":"Room meters","pages":[{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/billing/room-meters","title":"List room meters","description":"The account's room meters (per-night room charges that accrue over the stay).\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/room-meters/list-room-meters"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/room-meter/sync","title":"Sync the room meter","description":"Creates or replaces the single room meter to match the given rate. Returns `meter: null` when nothing changed. For one meter per rate plan inclusion, use Sync room meters.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/room-meters/sync-the-room-meter"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/room-meters/sync","title":"Sync room meters","description":"Reconciles one room meter per rate plan inclusion to the current plan; meters that already match are left alone.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/room-meters/sync-room-meters"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/room-meters/{meter_id}/pause","title":"Pause a room meter","description":"Pauses one room meter (for example a leave of absence); its clock stops.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/room-meters/pause-a-room-meter"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/room-meters/{meter_id}/resume","title":"Resume a room meter","description":"Resumes one paused room meter.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/room-meters/resume-a-room-meter"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/room-meters/{meter_id}/slice","title":"Bill part of a room meter","description":"Bills one interval of a running room meter as a charge (every un-billed night when `from`/`to` are omitted). The meter keeps running, and cancelling the invoice the charge lands on frees the interval to be billed again.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/room-meters/bill-part-of-a-room-meter"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/room-meters/pause","title":"Pause all room meters","description":"Pauses every running room meter (a whole-room leave of absence).\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/room-meters/pause-all-room-meters"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/room-meters/resume","title":"Resume all room meters","description":"Resumes every paused room meter.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/room-meters/resume-all-room-meters"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/room-meters/stop","title":"Stop the room meter","description":"Stops the running room meter (for example at discharge). It is frozen but not billed — use Stop and bill room meters to post the charges.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/room-meters/stop-the-room-meter"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/billing/room-meters/stop-and-bill","title":"Stop and bill room meters","description":"The final stop at clearance or discharge: stops every open room meter and posts the accrued nights as charges. Pass `endedAt` to bill up to a past time (for example the discharge time) and stop there. Returns the ids of the charges posted.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/room-meters/stop-and-bill-room-meters"}]},{"group":"Returns \u0026 links","pages":[{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/billing/returns","title":"List returns","description":"The account's sales returns.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/returns-links/list-returns"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/billing/adjustment-notes","title":"List credit and debit notes","description":"The account's credit and debit notes — what returns and cancellations issue.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/returns-links/list-credit-and-debit-notes"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/billing/order-charge-links","title":"List pharmacy order charge links","description":"Which charges each pharmacy order was billed as.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/returns-links/list-pharmacy-order-charge-links"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/billing/order-return-links","title":"List pharmacy return links","description":"The item names captured for each return when it was posted.\n\nThe admission must be on new billing (`use_new_billing`); otherwise this returns 409. Returns 503 when billing is not configured on the server, and 502 when the billing service fails.","href":"/api-sdk/ipd/billing/returns-links/list-pharmacy-return-links"}]}]},{"group":"Pharmacy","pages":[{"group":"Pharmacies","pages":[{"openapi":"get /ipd/service/pharmacies","title":"List Pharmacies","description":"\n### Overview\n\nThis API lists the **pharmacies** your workspace can order medicines from, across all pharmacy providers set up for it: eVital pharmacies (when eVital is set up) and the in-house pharmacy (`id: dawakhana`, when Dawakhana is enabled).\n\nUse a pharmacy's `id` as `pharmacyId` when placing an order. Check `managesInventory` before ordering: when `true` (eVital), check stock with [Get Inventory Status](/api-sdk/ipd/pharmacy/pharmacies/get-inventory-status) and send each item's `quantity` in the pharmacy's `orderMode` unit; when `false` (in-house pharmacy), stock and prices are not tracked and the order is priced at dispatch.\n\nIf one provider cannot be reached, its pharmacies are left out and the rest are still returned.","href":"/api-sdk/ipd/pharmacy/pharmacies/list-pharmacies"},{"openapi":"post /ipd/service/pharmacies/inventory-status","title":"Get Inventory Status","description":"\n### Overview\n\nThis API returns the **stock and price** of the given medicines at each pharmacy that tracks inventory (eVital pharmacies). Each result is one pharmacy with the matching medicines' availability, price and packaging.\n\nThe in-house pharmacy does not track stock, so it is not included. If one provider cannot be reached, its results are left out.","href":"/api-sdk/ipd/pharmacy/pharmacies/get-inventory-status"}]},{"group":"Orders","pages":[{"openapi":"post /ipd/service/orders","title":"Create Order","description":"\n### Overview\n\nThis API places a **medicine order** for an IPD admission of your workspace. The order is sent to a pharmacy provider: `evital` (an external pharmacy on eVital) or `dawakhana` (your in-house pharmacy).\n\n**Choosing the provider:** pass `provider` to pick one. When it is omitted, the order goes to eVital if eVital is set up for your workspace, otherwise to Dawakhana; if neither is set up the request fails with `400`.\n\n**eVital orders** require `pharmacyId` (the `id` of a pharmacy from the pharmacies list). Each item's `quantity` must already be in that pharmacy's order unit (loose or strip), and items are matched by `medicine_id`.\n\n**Dawakhana orders** get a server-generated `orderNumber`. An item's `name` is used as the line name (falling back to `medicine_id`).\n\nThe order starts in status `CREATED`. The user making the request is recorded in `createdBy` and `createdByName`. Fields not listed in the request body are rejected.","href":"/api-sdk/ipd/pharmacy/orders/create-order"},{"openapi":"get /ipd/service/orders","title":"List Orders","description":"\n### Overview\n\nThis API lists the **medicine orders** of your workspace, newest first. Orders and **return orders** are listed together: use `kind` to tell them apart (or to filter), and `parentOrderId` to find the returns placed against an order.\n\nAll filters are optional. Results are paged with `limit` (default `50`) and `skip` (default `0`).","href":"/api-sdk/ipd/pharmacy/orders/list-orders"},{"openapi":"get /ipd/service/orders/{order_id}","title":"Get Order","description":"\n### Overview\n\nThis API returns a single **medicine order** of your workspace with its full detail. On top of the fields returned by List Orders it includes:\n\n- `lineItems` — the ordered medicines, in the same shape for every provider (for eVital orders these are fetched live from eVital).\n- `pharmacyName` — the name of the fulfilling pharmacy.\n- `returns` — for an order (`kind: order`), the return orders placed against it.\n\nFor a return order (`kind: return`), `lineItems` lists the returned medicines.\n\nReturns `404` with `Order not found` when the `order_id` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/pharmacy/orders/get-order"},{"openapi":"patch /ipd/service/orders/{order_id}","title":"Mark Order Collected","description":"\n### Overview\n\nThis API marks a **medicine order** of your workspace as collected (or not collected) by the patient.\n\nSending `isCollected: true` also records the user making the request in `collectedBy`, `collectedByName` and `collectedAt`. Sending `isCollected: false` clears the flag but keeps the earlier collected details.\n\nA return order (`kind: return`) cannot be marked collected and returns `400`. Returns `404` with `Order not found` when the `order_id` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/pharmacy/orders/mark-order-collected"},{"openapi":"patch /ipd/service/orders/{order_id}/status","title":"Update Order Status","description":"\n### Overview\n\nThis API sets the `status` of a **medicine order** of your workspace.\n\n> **Status only.** This API only changes the stored `status`; it does not dispatch, cancel or return the order with the pharmacy, and does not bill anything. To act on a Dawakhana order, use the Dawakhana order APIs instead.\n\nReturns `404` with `Order not found` when the `order_id` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/pharmacy/orders/update-order-status"}]},{"group":"Billing settings","pages":[{"openapi":"get /ipd/service/pharmacies/billing-config/evital","title":"Get eVital Billing Config","description":"\n### Overview\n\nThis API returns the **eVital integration's state** for your workspace: whether eVital is set up (`isEnabled`), and how medicines from eVital are priced for a GST-exempt admission (`exemptAdmissionPricing`).\n\n`exemptAdmissionPricing` is `base` (the default) or `mrp`:\n\n- `base` — bill the tax-exclusive rate; the workspace absorbs the pharmacy's GST.\n- `mrp` — bill the GST-inclusive price per unit that the pharmacy charged.\n\nIt reads as `base` when it has never been set, or while eVital is not set up.","href":"/api-sdk/ipd/pharmacy/billing-settings/get-evital-billing-config"},{"openapi":"put /ipd/service/pharmacies/billing-config","title":"Update Pharmacy Billing Config","description":"\n### Overview\n\nThis API sets how one pharmacy provider's medicines are priced for a **GST-exempt admission** in your workspace. Each provider (`evital`, `dawakhana`) is configured separately.\n\n`exemptAdmissionPricing` is `base` (the default) or `mrp`:\n\n- `base` — bill the tax-exclusive rate; the workspace absorbs the pharmacy's GST.\n- `mrp` — bill the GST-inclusive price per unit that the pharmacy charged.","href":"/api-sdk/ipd/pharmacy/billing-settings/update-pharmacy-billing-config"}]},{"group":"Discharge clearance","pages":[{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json get /ipd/sdk/admissions/{admission_id}/pharmacy-clearance-notify","title":"Get the pharmacy discharge-notification state","description":"Returns the per-pharmacy state of the discharge notification — the same shape the notify, retry and cancel endpoints return. An admission whose pharmacies were never notified reads as `state: none` with no targets.","href":"/api-sdk/ipd/pharmacy/clearance/get-the-pharmacy-discharge-notification-state"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/pharmacy-clearance-notify","title":"Notify the admission's pharmacies of a discharge","description":"Tells every pharmacy this admission ordered from that the patient is being discharged, so they close unreturned medicines and dues. Recipients are resolved from the admission's own orders, not chosen by the caller. Responds 200 even when a pharmacy could not be reached — that failure is carried per-pharmacy in `targets`, and the caller can resend.","href":"/api-sdk/ipd/pharmacy/clearance/notify-the-admission-s-pharmacies-of-a-discharge"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/pharmacy-clearance-notify/retry","title":"Resend to the pharmacies that failed","description":"Retries only the pharmacies whose last attempt failed. A no-op reporting `skipped: no-targets` when none did, so the caller need not pre-check.","href":"/api-sdk/ipd/pharmacy/clearance/resend-to-the-pharmacies-that-failed"},{"openapi":"api-reference/doc-tool/ipd-api/ipd-sdk-openapi.json post /ipd/sdk/admissions/{admission_id}/pharmacy-clearance-notify/cancel","title":"Withdraw a discharge notification","description":"Withdraws a previous notification because the discharge was cancelled. Pharmacies that cannot withdraw a notification come back `UNSUPPORTED` rather than failed.","href":"/api-sdk/ipd/pharmacy/clearance/withdraw-a-discharge-notification"},{"openapi":"post /ipd/service/pharmacies/clearance-clear","title":"Mark Pharmacy Clearance Cleared","description":"\n### Overview\n\nThis API records that **one pharmacy has closed its dues** for a patient being discharged from your workspace. The pharmacy must already have been notified about the discharge for this admission; otherwise the request fails with `400`.\n\nWhen this was the **last pharmacy still pending**, the admission's pharmacy clearance is completed automatically and the response returns `clearanceCompleted: true`.\n\nFor the in-house pharmacy (`provider: dawakhana`, `pharmacyId: dawakhana`), the admission is also removed from [List Dawakhana Pending Clearances](/api-sdk/ipd/pharmacy/dawakhana/worklist/list-dawakhana-clearances). The user making the request is recorded as the person who cleared it.","href":"/api-sdk/ipd/pharmacy/clearance/mark-pharmacy-clearance-cleared"}]},{"group":"In-house pharmacy (Dawakhana)","pages":[{"group":"Settings","pages":[{"openapi":"get /ipd/service/dawakhana/config","title":"Get Dawakhana Config","description":"\n### Overview\n\nThis API returns whether the **in-house pharmacy (Dawakhana)** is enabled for your workspace. When enabled, Dawakhana is listed as a pharmacy and orders can be placed with it.\n\nDawakhana is **enabled by default**: a workspace that has never changed the setting returns `enabled: true`.","href":"/api-sdk/ipd/pharmacy/dawakhana/settings/get-dawakhana-config"},{"openapi":"put /ipd/service/dawakhana/config","title":"Update Dawakhana Config","description":"\n### Overview\n\nThis API turns the **in-house pharmacy (Dawakhana)** on or off for your workspace. When turned off, Dawakhana is no longer listed as a pharmacy.","href":"/api-sdk/ipd/pharmacy/dawakhana/settings/update-dawakhana-config"}]},{"group":"Orders","pages":[{"openapi":"get /ipd/service/dawakhana/orders","title":"List Dawakhana Orders","description":"\n### Overview\n\nThis API lists the **in-house pharmacy (Dawakhana) orders** of your workspace, newest first, each with its order lines. It is the pharmacist's work list: lines carry the ordered quantity and, once dispatched, the fulfilled quantity and rate.\n\nAll filters are optional:\n\n- `status` — repeat the parameter to match several statuses (for example `status=RETURNED\u0026status=PARTIALLY_RETURNED`).\n- `from` / `to` — creation date range, as an ISO-8601 date or epoch milliseconds. **Ignored when `admissionId` is set**, so all orders of an admission are returned regardless of date.\n\nResults are paged with `limit` (default `50`) and `skip` (default `0`).","href":"/api-sdk/ipd/pharmacy/dawakhana/orders/list-dawakhana-orders"},{"openapi":"get /ipd/service/dawakhana/orders/count","title":"Count Dawakhana Orders","description":"\n### Overview\n\nThis API returns the number of **Dawakhana orders** of your workspace in each status, for dashboard counters. The counts cover every matching order, regardless of paging.\n\n`from`, `to` and `admissionId` filter the status counts the same way as [List Dawakhana Orders](/api-sdk/ipd/pharmacy/dawakhana/orders/list-dawakhana-orders). `clearancePending` is the number of admissions still waiting for the in-house pharmacy's discharge clearance, and is not affected by the filters.","href":"/api-sdk/ipd/pharmacy/dawakhana/orders/count-dawakhana-orders"},{"openapi":"get /ipd/service/dawakhana/orders/{order_id}","title":"Get Dawakhana Order","description":"\n### Overview\n\nThis API returns a single **Dawakhana order** of your workspace with its order lines. Use the line `id`s with [Dispatch Dawakhana Order](/api-sdk/ipd/pharmacy/dawakhana/orders/dispatch-dawakhana-order) and [Return Dawakhana Order](/api-sdk/ipd/pharmacy/dawakhana/returns/return-dawakhana-order).\n\nReturns `404` with `Order not found` when the `order_id` does not exist or belongs to another workspace.","href":"/api-sdk/ipd/pharmacy/dawakhana/orders/get-dawakhana-order"},{"openapi":"post /ipd/service/dawakhana/orders/{order_id}/dispatch","title":"Dispatch Dawakhana Order","description":"\n### Overview\n\nThis API **dispatches** a pending Dawakhana order of your workspace: for each order line, send the quantity actually given (`fulfilledQty`) and the price per unit (`rate`). Only an order in status `CREATED` can be dispatched.\n\nFor each line sent, `amount` is `fulfilledQty × rate` and the line status becomes `FULFILLED` (full quantity), `PARTIAL` (less than ordered) or `UNAVAILABLE` (`fulfilledQty` of `0`). Lines are matched by their `id` from [Get Dawakhana Order](/api-sdk/ipd/pharmacy/dawakhana/orders/get-dawakhana-order); lines that are not sent stay `PENDING`.\n\nThe order moves to `DISPATCHED`, with `billedTotal` set to the sum of line amounts and `fulfilmentType` set to `FULL` only when every line is `FULFILLED` (otherwise `PARTIAL`). The fulfilled medicines are **added to the admission's bill**. The user making the request is recorded in `dispatchedBy`, `dispatchedByName` and `dispatchedAt`.","href":"/api-sdk/ipd/pharmacy/dawakhana/orders/dispatch-dawakhana-order"},{"openapi":"post /ipd/service/dawakhana/orders/{order_id}/cancel","title":"Cancel Dawakhana Order","description":"\n### Overview\n\nThis API **cancels** a pending Dawakhana order of your workspace. Only an order in status `CREATED` can be cancelled; nothing is billed.\n\nThe order moves to `CANCELLED`, and the user making the request is recorded in `cancelledBy`, `cancelledByName` and `cancelledAt`.","href":"/api-sdk/ipd/pharmacy/dawakhana/orders/cancel-dawakhana-order"}]},{"group":"Returns","pages":[{"openapi":"post /ipd/service/dawakhana/orders/{order_id}/return","title":"Return Dawakhana Order","description":"\n### Overview\n\nThis API **returns medicines** against a dispatched Dawakhana order of your workspace. Only an order in status `DISPATCHED` or `PARTIALLY_RETURNED` can be returned, so an order can be returned in several steps.\n\nFor each line sent, `returnQty` is capped at the quantity still outstanding (fulfilled minus already returned); lines with nothing left to return are skipped. A line whose whole fulfilled quantity is back becomes `RETURNED`. The order moves to `RETURNED` when every fulfilled line is fully returned, otherwise to `PARTIALLY_RETURNED`.\n\nThe returned amount (`returnQty × rate`) is **deducted from the admission's bill** and added to the order's `returnedTotal`. A return order (`kind: return`, with `parentOrderId` set to this order) is also created. The response is the original order with its updated lines.","href":"/api-sdk/ipd/pharmacy/dawakhana/returns/return-dawakhana-order"},{"openapi":"post /ipd/service/dawakhana/orders/returns","title":"Create Dawakhana Standalone Return","description":"\n### Overview\n\nThis API records a **standalone return** to the in-house pharmacy for an IPD admission of your workspace — medicines taken back that are not tied to a dispatched order. For a return against a dispatched order, use [Return Dawakhana Order](/api-sdk/ipd/pharmacy/dawakhana/returns/return-dawakhana-order) instead.\n\nEach line's `qty × rate` is **deducted from the admission's bill**. The return is saved as a return order (`kind: return`, with no `parentOrderId`) and is listed in List Orders and List Dawakhana Orders. The patient details are taken from the admission's existing orders.\n\nAt least one line is required. The user making the request is recorded as the creator.","href":"/api-sdk/ipd/pharmacy/dawakhana/returns/create-dawakhana-return"}]},{"group":"Discharge worklist","pages":[{"openapi":"get /ipd/service/dawakhana/orders/clearances","title":"List Dawakhana Pending Clearances","description":"\n### Overview\n\nThis API lists the **admissions waiting for the in-house pharmacy's discharge clearance** in your workspace — patients being discharged whose pharmacy dues the in-house pharmacy still has to close. The oldest request comes first.","href":"/api-sdk/ipd/pharmacy/dawakhana/worklist/list-dawakhana-clearances"}]}]}]},{"group":"Workflows","pages":[{"group":"Tasks","pages":[{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json get /protocol/workflow/tasks","title":"List tasks","description":"Newest first: the hospital's tasks, or one scope's (an admission) with `scope_id`.","href":"/api-sdk/ipd/workflows/tasks/list-tasks"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/tasks","title":"Create a task","description":"Creates a task by hand on an admission or a discharge, now or at `start_at`. A task with `every` repeats on that schedule.","href":"/api-sdk/ipd/workflows/tasks/create-a-task"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json get /protocol/workflow/tasks/{id}","title":"Get a task","description":null,"href":"/api-sdk/ipd/workflows/tasks/get-a-task"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/tasks/{id}","title":"Act on a task","description":"One action per call: `claim`, `release`, `complete` or `cancel`, with an optional note for the timeline. An action the task is not in a state for returns 409.","href":"/api-sdk/ipd/workflows/tasks/act-on-a-task"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json get /protocol/workflow/tasks/{id}/timeline","title":"Get a task's timeline","description":"Every change, oldest first.","href":"/api-sdk/ipd/workflows/tasks/get-a-tasks-timeline"}]},{"group":"Forms","pages":[{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json get /protocol/workflow/forms","title":"List an entity's forms","description":"Newest first, for one entity (`entity_type` + `entity_id`).","href":"/api-sdk/ipd/workflows/forms/list-an-entitys-forms"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/forms","title":"Add a form","description":"Starts a form on an entity; it is IN_PROGRESS.","href":"/api-sdk/ipd/workflows/forms/add-a-form"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json get /protocol/workflow/forms/{id}/timeline","title":"Get a form's timeline","description":"Oldest first.","href":"/api-sdk/ipd/workflows/forms/get-a-forms-timeline"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/forms/{id}/complete","title":"Complete a form","description":"COMPLETED with the response, or AWAITING_SIGNATURE when `awaiting_signature` is set (a consent still to be signed).","href":"/api-sdk/ipd/workflows/forms/complete-a-form"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/forms/{id}/cancel","title":"Cancel a form","description":"An open form only.","href":"/api-sdk/ipd/workflows/forms/cancel-a-form"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/forms/{id}/decline","title":"Decline a form","description":"An open form only.","href":"/api-sdk/ipd/workflows/forms/decline-a-form"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/forms/{id}/events","title":"Record a form event","description":"Adds OPENED, VIEWED or PRINTED to the timeline.","href":"/api-sdk/ipd/workflows/forms/record-a-form-event"}]},{"group":"Rules \u0026 catalog","pages":[{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json get /protocol/workflow/rules","title":"List rules","description":"Filter by `scope`, or by `event` for the rules that include it.","href":"/api-sdk/ipd/workflows/rules/list-rules"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/rules","title":"Create a rule","description":null,"href":"/api-sdk/ipd/workflows/rules/create-a-rule"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json get /protocol/workflow/rules/active","title":"List an event's active rules","description":"What firing the event would start.","href":"/api-sdk/ipd/workflows/rules/list-an-events-active-rules"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/rules/compile","title":"Compile a rule","description":"A preview: validates and compiles without saving.","href":"/api-sdk/ipd/workflows/rules/compile-a-rule"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json get /protocol/workflow/rules/{id}","title":"Get a rule","description":null,"href":"/api-sdk/ipd/workflows/rules/get-a-rule"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json put /protocol/workflow/rules/{id}","title":"Update a rule","description":"Saved as the next version; `active` turns it on or off.","href":"/api-sdk/ipd/workflows/rules/update-a-rule"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json get /protocol/workflow/rules/{id}/versions","title":"List a rule's versions","description":null,"href":"/api-sdk/ipd/workflows/rules/list-a-rules-versions"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/rules/{id}/versions/{version}/restore","title":"Restore a rule version","description":"Saves an earlier version's source again as the newest version.","href":"/api-sdk/ipd/workflows/rules/restore-a-rule-version"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json get /protocol/workflow/default-events","title":"Get the catalog","description":"The events and fields rules can use, for one `scope` or all.","href":"/api-sdk/ipd/workflows/rules/get-the-catalog"}]},{"group":"Events","pages":[{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/events","title":"Fire an event","description":"Starts one run per active rule on the event, for the given scope.","href":"/api-sdk/ipd/workflows/events/fire-an-event"}]},{"group":"SA forms","pages":[{"group":"Forms","pages":[{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json get /protocol/workflow/sa-forms","title":"List SA forms","description":"The hospital's forms; `archived=true` for the archived ones.","href":"/api-sdk/ipd/workflows/sa-forms/forms/list-sa-forms"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/sa-forms","title":"Create an SA form","description":null,"href":"/api-sdk/ipd/workflows/sa-forms/forms/create-an-sa-form"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json get /protocol/workflow/sa-forms/{id}","title":"Get an SA form","description":null,"href":"/api-sdk/ipd/workflows/sa-forms/forms/get-an-sa-form"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json put /protocol/workflow/sa-forms/{id}","title":"Update an SA form","description":"Saved as the next version.","href":"/api-sdk/ipd/workflows/sa-forms/forms/update-an-sa-form"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json get /protocol/workflow/sa-forms/{id}/view","title":"View an SA form","description":"The form page by page, read only.","href":"/api-sdk/ipd/workflows/sa-forms/forms/view-an-sa-form"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json get /protocol/workflow/sa-forms/{id}/versions","title":"List an SA form's versions","description":null,"href":"/api-sdk/ipd/workflows/sa-forms/forms/list-an-sa-forms-versions"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/sa-forms/{id}/versions/{version}/restore","title":"Restore an SA form version","description":"Saves an earlier version again as the newest one.","href":"/api-sdk/ipd/workflows/sa-forms/forms/restore-an-sa-form-version"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/sa-forms/{id}/rename","title":"Rename an SA form","description":null,"href":"/api-sdk/ipd/workflows/sa-forms/forms/rename-an-sa-form"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/sa-forms/{id}/archive","title":"Archive an SA form","description":null,"href":"/api-sdk/ipd/workflows/sa-forms/forms/archive-an-sa-form"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/sa-forms/{id}/unarchive","title":"Unarchive an SA form","description":null,"href":"/api-sdk/ipd/workflows/sa-forms/forms/unarchive-an-sa-form"}]},{"group":"Drafts","pages":[{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json get /protocol/workflow/sa-forms/drafts","title":"List SA form drafts","description":null,"href":"/api-sdk/ipd/workflows/sa-forms/drafts/list-sa-form-drafts"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/sa-forms/drafts","title":"Create an SA form draft","description":null,"href":"/api-sdk/ipd/workflows/sa-forms/drafts/create-an-sa-form-draft"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json get /protocol/workflow/sa-forms/drafts/{id}","title":"Get an SA form draft","description":null,"href":"/api-sdk/ipd/workflows/sa-forms/drafts/get-an-sa-form-draft"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json put /protocol/workflow/sa-forms/drafts/{id}","title":"Update an SA form draft","description":null,"href":"/api-sdk/ipd/workflows/sa-forms/drafts/update-an-sa-form-draft"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json delete /protocol/workflow/sa-forms/drafts/{id}","title":"Delete an SA form draft","description":null,"href":"/api-sdk/ipd/workflows/sa-forms/drafts/delete-an-sa-form-draft"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/sa-forms/drafts/{id}/publish","title":"Publish an SA form draft","description":"Creates the SA form from the full form in the body and removes the draft.","href":"/api-sdk/ipd/workflows/sa-forms/drafts/publish-an-sa-form-draft"}]},{"group":"AI drafts","pages":[{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json get /protocol/workflow/sa-forms/ai-draft","title":"Check AI drafting","description":"Whether AI drafting is set up here.","href":"/api-sdk/ipd/workflows/sa-forms/ai-drafts/check-ai-drafting"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json post /protocol/workflow/sa-forms/ai-draft","title":"Start an AI draft","description":"From a prompt, a file (base64), or both. Returns a job to poll.","href":"/api-sdk/ipd/workflows/sa-forms/ai-drafts/start-an-ai-draft"},{"openapi":"api-reference/doc-tool/ipd-api/protocol-openapi.json get /protocol/workflow/sa-forms/ai-draft/{jobId}","title":"Get an AI draft","description":"Poll until `status` is DONE (with the draft) or FAILED (with the error).","href":"/api-sdk/ipd/workflows/sa-forms/ai-drafts/get-an-ai-draft"}]}]}]}]},{"group":"Billing","icon":"/images/icons/products/receipt.svg","pages":[{"openapi":"get /dr/v1/payment/transaction_status/{transaction_id}","title":"Get Transaction Status","description":null,"href":"/api-sdk/billing/get-transaction-status"}]},{"group":"Health Records","icon":"/images/icons/products/folder-heart.svg","pages":[{"icon":"compass","title":"Overview","sidebarTitle":"Records API","description":null,"href":"/api-sdk/health-records/create-overview"},{"group":"Medical Records","icon":"book-open-cover","expanded":true,"pages":[{"openapi":"post /mr/api/v1/docs","title":"Step 1: Upload Record","description":"Generate a presigned URL that allows you to securely upload a document to the server. This URL can be used to upload the document directly without needing additional authentication or authorization steps.","href":"/api-sdk/health-records/obtain-authorization"},{"openapi":"get /mr/api/v1/docs/{id}","title":"Describes a document","description":"Once you retrieve a list of all documents with their corresponding IDs, you can use this endpoint to get more details about a specific document.","href":"/api-sdk/health-records/describe-record"},{"openapi":"get /mr/api/v1/docs","title":"List Documents","description":"To get the list of all the records for a given authenticated user.","href":"/api-sdk/health-records/list-records"},{"openapi":"get /health/api/v1/fhir/retrieve","title":"Retrieve health records","description":"Retrieve a health record based on the given identifier, hip_id, and health_id in nrces FHIR json format.","href":"/api-sdk/health-records/retrieve-health-records"},{"openapi":"get /mr/api/v1/docs/refresh","title":"Sends a refresh event to the origin","description":"This endpoint triggers a refresh event for the specified document, prompting the origin to update its state.","href":"/api-sdk/health-records/send-refresh"},{"openapi":"patch /mr/api/v1/docs/{id}","title":"Update Document","description":"This API is used to update the document.","href":"/api-sdk/health-records/update-document"},{"openapi":"delete /mr/api/v1/docs/{id}","title":"Delete a document","description":"This API is used to delete a document using a document ID.","href":"/api-sdk/health-records/delete-document"},{"openapi":"post /mr/api/v1/cases","title":"Create Case","description":"This endpoint creates a new medical case.","href":"/api-sdk/health-records/create-case"},{"openapi":"patch /mr/api/v1/cases/{id}","title":"Update Case","description":"This endpoint allows updating details of an existing medical case using the case ID.","href":"/api-sdk/health-records/update-case"},{"openapi":"get /mr/api/v1/cases","title":"List Cases","description":"This endpoint returns a list of all cases. Results are always ordered by ascending value of `updated_at`.\n\n**Note**: Use the `offset` param (i.e. `next_token`) for pagination and `u_at__gt` for incremental sync.","href":"/api-sdk/health-records/list-case"},{"openapi":"delete /mr/api/v1/cases/{id}","title":"Delete Case","description":"This endpoint allows deleting a case using the case ID.","href":"/api-sdk/health-records/delete-case"}]},{"group":"User App","icon":"mobile","pages":[{"openapi":"post /notification/add-device","title":"Add Device","description":"Call to add or register a device for notifications. This endpoint allows clients to register a device by providing its details such as device ID, FCM ID, app version, and other relevant information. The registered device will be used to send notifications. The request body must contain the device payload information.\n","href":"/api-sdk/health-records/notifications/add-device"},{"openapi":"delete /notification/delete-device","title":"Delete Device","description":"To be called when the device is logged out or uninstalled. This endpoint allows clients to remove a registered device by specifying its device ID in the header. Upon successful deletion, the device will no longer receive notifications. The `device-id` parameter in the header is required.\n","href":"/api-sdk/health-records/notifications/delete-device"},{"openapi":"post /notification/fcm-creds","title":"Add FCM Credentials","description":"Store FCM credentials. This endpoint allows clients to store Firebase Cloud Messaging (FCM) credentials by providing the service account key details. The stored credentials will be used for sending notifications to the registered devices. The request body must contain the FCM payload information.\n","href":"/api-sdk/health-records/notifications/fcm-creds"},{"openapi":"patch /trackers/api/v1/vitals/{txn_id}","title":"Update Patient Vitals and Link to ABHA","description":"Update the vitals data for a specific patient using the transaction ID. It processes the data and links it to the ABHA (Ayushman Bharat Health Account) if requested. Request body must include valid list of vitals.\n\nRefer to the [Table](https://developer.eka.care/docs/health-records/vitals/vital-information-table) for proper eka_code, LOINC code and UCUM code mappings for different vital signs.\n","href":"/api-sdk/health-records/vitals/vitals"},{"openapi":"post /webhook/event","title":null,"description":null,"href":"/api-sdk/health-records/webhook/right-to-access"},{"openapi":"post /privacy/v1/user-data","title":"Request User Data","description":"This endpoint prepares the user data. After a 202 response from this API, the client will receive the user data via a webhook.","href":"/api-sdk/health-records/privacy/right-to-access"}]},{"group":"SDKs","icon":"box-open","pages":[{"title":null,"description":null,"href":"/api-sdk/health-records/sdks/ios-sdk"},{"icon":"rocket","title":"Get Started","description":"Complete implementation guide for the Medical Records Web SDK","sidebarTitle":"Records web SDK","href":"/api-sdk/health-records/sdks/web-sdk/mr-sdk/get-started"},{"icon":"file-medical","title":"Records","description":"Upload, list, group, download, edit and delete medical documents with the Medical Records Web SDK","href":"/api-sdk/health-records/sdks/web-sdk/mr-sdk/records"},{"icon":"file-lines","title":"Cases","description":"Organise medical records into cases (folders) with the Medical Records Web SDK","href":"/api-sdk/health-records/sdks/web-sdk/mr-sdk/cases"},{"icon":"file-lines","title":"Offline \u0026 Sync","description":"Offline support, background sync, reactive UI updates, logging and Electron setup for the Medical Records Web SDK","href":"/api-sdk/health-records/sdks/web-sdk/mr-sdk/offline-and-sync"},{"title":null,"description":null,"href":"/api-sdk/sdks/sdks/android/medical-records"}]}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/docs/get-started/emr-changelog"}]}]}]}]},"title":"IPD Admission Clearance - Eka Developer Platform APIs","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-26-lDe7V.js","utils-CWQmgYtH.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-4-Aw3rSD.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-C2zjXYA5.js","snippetPresets-DFmpFA7C.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-FJpQavWq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D_GvPF7k.js","shallow-Bs2ZB0NO.js","getApiPlaygroundDisplay-DCcqJJk-.js","CodeSnippet-DzDxawVe.js","CodeSnippets-aUr7fU-7.js","Page-CT9uE8Ip.js","getPastedJson-Y1fKsj_I.js","icon-DI4zTsDr.js","MethodPill-C0nDlmSQ.js","DuplicateIcon-NUXbx2nQ.js","createIcon-BdTHrPAi.js","DynamicMarkdown-CtpgKJwj.js","SectionHeading-B3x35tOt.js","axios-vUo_bRtp.js","Markdown-3OmurJMP.js","clsx-DMKzROTp.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-1ms6tsT-.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Ke9xIMFx.js"]}