{"info":{"_postman_id":"f48ab469-5046-4711-9197-38e63bc00b8a","name":"Bitmec: Documentación vital-signs API","description":"<html><head></head><body><p>La API de Bitmec te permite controlar remotamente la cabina de telemedicina, medir signos vitales a los pacientes a través de los sensores instalados dentro de la cabina y utilizar el sensor de Estetoscopio que te permite escuchar los latidos del corazón de un paciente.</p>\n<h4 id=\"control-de-cabina\"><strong>CONTROL DE CABINA</strong></h4>\n<ol>\n<li><p>Dar Salida a un paciente de la cabina.</p>\n</li>\n<li><p>Activar salida de emergencia.</p>\n</li>\n<li><p>Desactivar salida de emergencia.</p>\n</li>\n<li><p>Terminar llamada (end-call)</p>\n</li>\n</ol>\n<h4 id=\"signos-vitales\"><strong>SIGNOS VITALES</strong></h4>\n<ol>\n<li><p>Esfigmomanómetro (Presión arterial)</p>\n</li>\n<li><p>Oxímetro (Frecuencia cardiaca y respiratoria)</p>\n</li>\n<li><p>Pesa (Peso)</p>\n</li>\n<li><p>Tallímetro (Altura)</p>\n</li>\n<li><p>Temperatura (Temperatura)</p>\n</li>\n</ol>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"25429540","collectionId":"f48ab469-5046-4711-9197-38e63bc00b8a","publishedId":"2sB3dQwAK1","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-12-09T22:52:42.000Z"},"item":[{"name":"Control Cabina","item":[{"name":"patient-exit","id":"dddbc69c-92b6-4720-8df4-410e43907301","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-34\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://honey-f9c7ed8b6b41.herokuapp.com/deactivate-emergency/","urlObject":{"protocol":"https","path":["deactivate-emergency",""],"host":["honey-f9c7ed8b6b41","herokuapp","com"],"query":[],"variable":[]}},"response":[{"id":"86d8089c-28b6-4c3f-bd73-ca2f934ceb13","name":"patient-exit","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-1\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{apiUrl}}/api/cabin/patient-exit/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 13 Mar 2025 05:30:26 GMT"},{"key":"Server","value":"WSGIServer/0.2 CPython/3.9.13"},{"key":"Content-Type","value":"application/json"},{"key":"Vary","value":"Accept, Origin"},{"key":"Allow","value":"POST, OPTIONS"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"16"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"}],"cookie":[],"responseTime":null,"body":"{\n    \"result\": true\n}"}],"_postman_id":"dddbc69c-92b6-4720-8df4-410e43907301"},{"name":"activate-emergency","id":"42d14413-ebb5-4591-8153-811e409f7ab5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-34\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://honey-f9c7ed8b6b41.herokuapp.com/activate-emergency/","urlObject":{"protocol":"https","path":["activate-emergency",""],"host":["honey-f9c7ed8b6b41","herokuapp","com"],"query":[],"variable":[]}},"response":[{"id":"610f0702-26cf-437a-99db-63f017e86ccd","name":"activate-emergency","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-1\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{apiUrl}}/api/cabin/activate-emergency/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 13 Mar 2025 05:30:34 GMT"},{"key":"Server","value":"WSGIServer/0.2 CPython/3.9.13"},{"key":"Content-Type","value":"application/json"},{"key":"Vary","value":"Accept, Origin"},{"key":"Allow","value":"POST, OPTIONS"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"16"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"}],"cookie":[],"responseTime":null,"body":"{\n    \"result\": true\n}"}],"_postman_id":"42d14413-ebb5-4591-8153-811e409f7ab5"},{"name":"deactivate-emergency","id":"1d95a4dc-a385-43d8-911b-f59c75b1f302","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-34\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://honey-f9c7ed8b6b41.herokuapp.com/deactivate-emergency/","urlObject":{"protocol":"https","path":["deactivate-emergency",""],"host":["honey-f9c7ed8b6b41","herokuapp","com"],"query":[],"variable":[]}},"response":[{"id":"2880901f-93f5-4d84-81c7-5c7845c0334d","name":"deactivate-emergency","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-1\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{apiUrl}}/api/cabin/deactivate-emergency/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 13 Mar 2025 05:30:38 GMT"},{"key":"Server","value":"WSGIServer/0.2 CPython/3.9.13"},{"key":"Content-Type","value":"application/json"},{"key":"Vary","value":"Accept, Origin"},{"key":"Allow","value":"POST, OPTIONS"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"16"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"}],"cookie":[],"responseTime":null,"body":"{\n    \"result\": true\n}"}],"_postman_id":"1d95a4dc-a385-43d8-911b-f59c75b1f302"},{"name":"End-call","id":"6947a8a2-98e4-449c-a491-a91d96b58acf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-42\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://honey-f9c7ed8b6b41.herokuapp.com/end-call/","urlObject":{"protocol":"https","path":["end-call",""],"host":["honey-f9c7ed8b6b41","herokuapp","com"],"query":[],"variable":[]}},"response":[{"id":"dafa76e0-f288-4576-bb68-437cd134901a","name":"End-call","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-34\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://honey-f9c7ed8b6b41.herokuapp.com/end-call/"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Allow","value":"POST, OPTIONS"},{"key":"Content-Length","value":"16"},{"key":"Content-Type","value":"application/json"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Date","value":"Thu, 26 Mar 2026 20:25:54 GMT"},{"key":"Nel","value":"{\"report_to\":\"heroku-nel\",\"response_headers\":[\"Via\"],\"max_age\":3600,\"success_fraction\":0.01,\"failure_fraction\":0.1}"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Report-To","value":"{\"group\":\"heroku-nel\",\"endpoints\":[{\"url\":\"https://nel.heroku.com/reports?s=%2BQoLiNDyWijkXa2wzvxZRvsR%2BrIAHQdPFNzAngCGUo8%3D\\u0026sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d\\u0026ts=1774556754\"}],\"max_age\":3600}"},{"key":"Reporting-Endpoints","value":"heroku-nel=\"https://nel.heroku.com/reports?s=%2BQoLiNDyWijkXa2wzvxZRvsR%2BrIAHQdPFNzAngCGUo8%3D&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&ts=1774556754\""},{"key":"Server","value":"Heroku"},{"key":"Vary","value":"Accept, origin, Cookie"},{"key":"Via","value":"1.1 heroku-router"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Frame-Options","value":"DENY"}],"cookie":[],"responseTime":null,"body":"{\n    \"result\": true\n}"}],"_postman_id":"6947a8a2-98e4-449c-a491-a91d96b58acf"}],"id":"05218526-c970-4134-a610-97ec77339f9c","description":"<p><strong>Control remoto de los sistemas de la cabina: Dar salida paciente, activar y desactivar estado de emergencia.</strong></p>\n<p><strong>Descripción:</strong> estos endpoints permiten controlar</p>\n<ul>\n<li><p><strong><code>\"patien-exit\":</code></strong> Termina la consulta y da salida al paciente de la cabina.</p>\n</li>\n<li><p><strong><code>\"activate-emergency\":</code></strong> Activa el modo de emergencia.</p>\n</li>\n<li><p><strong><code>\"deactivate-emergency\":</code></strong> Desactiva el modo de emergencia.</p>\n</li>\n</ul>\n","_postman_id":"05218526-c970-4134-a610-97ec77339f9c"},{"name":"Signos Vitales","item":[{"name":"height","id":"d27a551b-5e63-4ccd-aa01-c23dd5593099","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-34\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://honey-f9c7ed8b6b41.herokuapp.com/height/","urlObject":{"protocol":"https","path":["height",""],"host":["honey-f9c7ed8b6b41","herokuapp","com"],"query":[],"variable":[]}},"response":[{"id":"958e01bd-b486-45d7-9d08-2bcad5ddeb3e","name":"height","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-1\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{apiUrl}}/api/cabin/height/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 13 Mar 2025 05:30:42 GMT"},{"key":"Server","value":"WSGIServer/0.2 CPython/3.9.13"},{"key":"Content-Type","value":"application/json"},{"key":"Vary","value":"Accept, Origin"},{"key":"Allow","value":"POST, OPTIONS"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"16"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"}],"cookie":[],"responseTime":null,"body":"{\n    \"result\": true\n}"}],"_postman_id":"d27a551b-5e63-4ccd-aa01-c23dd5593099"},{"name":"weight","id":"928e4e5e-2eb9-4826-8fad-935ea61e7c99","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-34\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://honey-f9c7ed8b6b41.herokuapp.com/weight/","urlObject":{"protocol":"https","path":["weight",""],"host":["honey-f9c7ed8b6b41","herokuapp","com"],"query":[],"variable":[]}},"response":[{"id":"d4f92b3a-2338-437b-aec5-6a1647a25487","name":"weight","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-1\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{apiUrl}}/api/cabin/weight/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 13 Mar 2025 05:30:46 GMT"},{"key":"Server","value":"WSGIServer/0.2 CPython/3.9.13"},{"key":"Content-Type","value":"application/json"},{"key":"Vary","value":"Accept, Origin"},{"key":"Allow","value":"POST, OPTIONS"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"16"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"}],"cookie":[],"responseTime":null,"body":"{\n    \"result\": true\n}"}],"_postman_id":"928e4e5e-2eb9-4826-8fad-935ea61e7c99"},{"name":"esfigmo start","id":"f6700009-799a-40e4-a036-0a1d7d2470b5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-34\",\r\n    \"step\": \"start\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://honey-f9c7ed8b6b41.herokuapp.com/esfigmo/","description":"<p>Para poder iniciar el esfigmo utilizar el valor \"start\" en el valor propiedad step de la petición.</p>\n","urlObject":{"protocol":"https","path":["esfigmo",""],"host":["honey-f9c7ed8b6b41","herokuapp","com"],"query":[],"variable":[]}},"response":[{"id":"d23d870c-6591-4844-90f3-6fa34fad1e0a","name":"esfigmo","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-1\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{apiUrl}}/api/cabin/esfigmo/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 13 Mar 2025 05:30:50 GMT"},{"key":"Server","value":"WSGIServer/0.2 CPython/3.9.13"},{"key":"Content-Type","value":"application/json"},{"key":"Vary","value":"Accept, Origin"},{"key":"Allow","value":"POST, OPTIONS"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"16"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"}],"cookie":[],"responseTime":null,"body":"{\n    \"result\": true\n}"},{"id":"96138432-571f-4d7f-9d15-8f9d7ef9a707","name":"esfigmo","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-34\",\r\n    \"step\": \"start\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://honey-f9c7ed8b6b41.herokuapp.com/esfigmo/"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Allow","value":"POST, OPTIONS"},{"key":"Content-Length","value":"186"},{"key":"Content-Type","value":"application/json"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Date","value":"Tue, 09 Dec 2025 22:24:18 GMT"},{"key":"Nel","value":"{\"report_to\":\"heroku-nel\",\"response_headers\":[\"Via\"],\"max_age\":3600,\"success_fraction\":0.01,\"failure_fraction\":0.1}"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Report-To","value":"{\"group\":\"heroku-nel\",\"endpoints\":[{\"url\":\"https://nel.heroku.com/reports?s=vykK6YmDbNktp09kGt%2FnmAb%2BUkx36LDIrw1oRF8VQWI%3D\\u0026sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d\\u0026ts=1765319058\"}],\"max_age\":3600}"},{"key":"Reporting-Endpoints","value":"heroku-nel=\"https://nel.heroku.com/reports?s=vykK6YmDbNktp09kGt%2FnmAb%2BUkx36LDIrw1oRF8VQWI%3D&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&ts=1765319058\""},{"key":"Server","value":"Heroku"},{"key":"Vary","value":"Accept, origin, Cookie"},{"key":"Via","value":"1.1 heroku-router"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Frame-Options","value":"DENY"}],"cookie":[],"responseTime":null,"body":"{\n    \"result\": true,\n    \"status\": \"done\",\n    \"channel\": \"cabin-34\",\n    \"data\": {\n        \"sis\": \"110\",\n        \"dias\": \"70\",\n        \"map\": \"83\",\n        \"bpm\": \"76\"\n    },\n    \"run_id\": \"941839a8-b144-469b-8901-62ec595197c2\",\n    \"error\": null\n}"}],"_postman_id":"f6700009-799a-40e4-a036-0a1d7d2470b5"},{"name":"esfigmo result","id":"9074eaef-0add-41c3-abd8-b162c2cb5961","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-34\",\r\n    \"step\": \"result\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://honey-f9c7ed8b6b41.herokuapp.com/esfigmo/","description":"<p>Una vez iniciado el proceso, el cliente debe hacer polling con:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"channel\": \"cabin-34\",\n  \"step\": \"result\"\n}\n\n</code></pre>\n<p>El endpoint hace:</p>\n<ul>\n<li>Lee la corrida actual en:</li>\n</ul>\n<ol>\n<li><p>key: <code>pressure:cabin-34:current</code> → obtiene <code>run_id</code>.</p>\n</li>\n<li><p>Si no hay <code>run_id</code>, responde:</p>\n</li>\n</ol>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\"result\": false,  \"status\": \"no-active-run\",  \"channel\": \"cabin-34\"}\n\n</code></pre>\n<ul>\n<li><p>Con ese <code>run_id</code>, consulta la key:</p>\n<ul>\n<li><code>pressure:cabin-34:</code></li>\n</ul>\n</li>\n<li><p>Respuestas posibles:</p>\n</li>\n</ul>\n<h3 id=\"a-aún-no-hay-datos-el-hilo-sigue-midiendo\">a) Aún no hay datos (el hilo sigue midiendo)</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"result\": true,\n  \"status\": \"pending\",\n  \"channel\": \"cabin-34\"\n}\n\n</code></pre>\n<p>b) <strong>Medición</strong> <strong>completada</strong> correctamente</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"result\": true,\n  \"status\": \"done\",\n  \"channel\": \"cabin-34\",\n  \"data\": {\n    \"sis\": \"120\",\n    \"dias\": \"80\",\n    \"map\": \"90\",\n    \"bpm\": \"75\"\n  },\n  \"run_id\": \"&lt;uuid-de-la-corrida&gt;\"\n}\n\n</code></pre>\n<h3 id=\"c-timeout-interno-esperando-a-la-cabina\">c) Timeout interno esperando a la cabina</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"result\": true,\n  \"status\": \"timeout\",\n  \"channel\": \"cabin-34\",\n  \"data\": null,\n  \"run_id\": \"&lt;uuid-de-la-corrida&gt;\"\n}\n\n</code></pre>\n<h3 id=\"d-error-interno-en-el-hilosocket\">d) Error interno en el hilo/socket</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"result\": true,\n  \"status\": \"error\",\n  \"channel\": \"cabin-34\",\n  \"data\": null,\n  \"error\": \"detalle del error\",\n  \"run_id\": \"&lt;uuid-de-la-corrida&gt;\"\n}\n\n</code></pre>\n<h2 id=\"errores-de-validación\">Errores de validación</h2>\n<ul>\n<li>Si falta <code>channel</code>:</li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"result\": false,\n  \"error\": \"Debe enviar 'channel'\"\n}\n\n</code></pre>\n<ul>\n<li>Si <code>step</code> no es <code>\"start\"</code> ni <code>\"result\"</code>:</li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"result\": false,\n  \"error\": \"Debe enviar 'step': 'start' o 'result'\"\n}\n\n</code></pre>\n","urlObject":{"protocol":"https","path":["esfigmo",""],"host":["honey-f9c7ed8b6b41","herokuapp","com"],"query":[],"variable":[]}},"response":[{"id":"38766f63-6cac-4e94-99a6-4a8e13f2df73","name":"esfigmo","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-1\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{apiUrl}}/api/cabin/esfigmo/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 13 Mar 2025 05:30:50 GMT"},{"key":"Server","value":"WSGIServer/0.2 CPython/3.9.13"},{"key":"Content-Type","value":"application/json"},{"key":"Vary","value":"Accept, Origin"},{"key":"Allow","value":"POST, OPTIONS"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"16"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"}],"cookie":[],"responseTime":null,"body":"{\n    \"result\": true\n}"},{"id":"9f7aa0b5-257c-4844-ab69-93d8924e79e2","name":"esfigmo","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-34\",\r\n    \"step\": \"start\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://honey-f9c7ed8b6b41.herokuapp.com/esfigmo/"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Allow","value":"POST, OPTIONS"},{"key":"Content-Length","value":"186"},{"key":"Content-Type","value":"application/json"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"},{"key":"Date","value":"Tue, 09 Dec 2025 22:24:18 GMT"},{"key":"Nel","value":"{\"report_to\":\"heroku-nel\",\"response_headers\":[\"Via\"],\"max_age\":3600,\"success_fraction\":0.01,\"failure_fraction\":0.1}"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Report-To","value":"{\"group\":\"heroku-nel\",\"endpoints\":[{\"url\":\"https://nel.heroku.com/reports?s=vykK6YmDbNktp09kGt%2FnmAb%2BUkx36LDIrw1oRF8VQWI%3D\\u0026sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d\\u0026ts=1765319058\"}],\"max_age\":3600}"},{"key":"Reporting-Endpoints","value":"heroku-nel=\"https://nel.heroku.com/reports?s=vykK6YmDbNktp09kGt%2FnmAb%2BUkx36LDIrw1oRF8VQWI%3D&sid=e11707d5-02a7-43ef-b45e-2cf4d2036f7d&ts=1765319058\""},{"key":"Server","value":"Heroku"},{"key":"Vary","value":"Accept, origin, Cookie"},{"key":"Via","value":"1.1 heroku-router"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Frame-Options","value":"DENY"}],"cookie":[],"responseTime":null,"body":"{\n    \"result\": true,\n    \"status\": \"done\",\n    \"channel\": \"cabin-34\",\n    \"data\": {\n        \"sis\": \"110\",\n        \"dias\": \"70\",\n        \"map\": \"83\",\n        \"bpm\": \"76\"\n    },\n    \"run_id\": \"941839a8-b144-469b-8901-62ec595197c2\",\n    \"error\": null\n}"}],"_postman_id":"9074eaef-0add-41c3-abd8-b162c2cb5961"},{"name":"oxygen","id":"abd29c0d-74ef-4a89-98b1-bbe665d79e03","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-42\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://honey-f9c7ed8b6b41.herokuapp.com/oxygen/","urlObject":{"protocol":"https","path":["oxygen",""],"host":["honey-f9c7ed8b6b41","herokuapp","com"],"query":[],"variable":[]}},"response":[{"id":"88b605c5-53dc-4a96-99af-7845eb4aad9c","name":"oxygen","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-1\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{apiUrl}}/api/cabin/oxygen/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 13 Mar 2025 05:31:54 GMT"},{"key":"Server","value":"WSGIServer/0.2 CPython/3.9.13"},{"key":"Content-Type","value":"application/json"},{"key":"Vary","value":"Accept, Origin"},{"key":"Allow","value":"POST, OPTIONS"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"16"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"}],"cookie":[],"responseTime":null,"body":"{\n    \"result\": true\n}"}],"_postman_id":"abd29c0d-74ef-4a89-98b1-bbe665d79e03"},{"name":"temperature","id":"d18e3c5a-3098-4e03-8246-9d8865f8cb7c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-34\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://honey-f9c7ed8b6b41.herokuapp.com/temperature/","urlObject":{"protocol":"https","path":["temperature",""],"host":["honey-f9c7ed8b6b41","herokuapp","com"],"query":[],"variable":[]}},"response":[{"id":"b63d97da-650b-4705-90f4-3a42268bd972","name":"temperature","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"channel\": \"cabin-1\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{apiUrl}}/api/cabin/temperature/"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 13 Mar 2025 05:32:10 GMT"},{"key":"Server","value":"WSGIServer/0.2 CPython/3.9.13"},{"key":"Content-Type","value":"application/json"},{"key":"Vary","value":"Accept, Origin"},{"key":"Allow","value":"POST, OPTIONS"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"16"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"}],"cookie":[],"responseTime":null,"body":"{\n    \"result\": true\n}"}],"_postman_id":"d18e3c5a-3098-4e03-8246-9d8865f8cb7c"}],"id":"a3c5c07e-7e32-483c-afae-01956098fcc1","description":"<p><strong>Descripción:</strong> esta url permite medir los signos vitales por medio de los sensores en la cabina de telemedicina a través del envío de diferentes comandos dependiendo del valor enviado en el campo <strong><code>\"command\"</code></strong> dentro del \"body\"<strong>.</strong></p>\n<ul>\n<li><p><strong>channel</strong> (string, requerido): El canal de comunicación al cual se dirige el comando. Ejemplo: <strong><code>\"channel\"</code></strong>.</p>\n</li>\n<li><p><strong>command</strong> (string, requerido): El comando que se desea ejecutar. Los valores posibles son:</p>\n<ul>\n<li><p><strong><code>\"height\":</code></strong> Mide altura.</p>\n</li>\n<li><p><strong><code>\"weight\":</code></strong> Mide peso.</p>\n</li>\n<li><p><strong><code>\"temperature\":</code></strong> Mide temperatura.</p>\n</li>\n<li><p><strong><code>\"oxygen\":</code></strong> Mide frecuencia cardiaca y oxigenación.</p>\n</li>\n<li><p><strong><code>\"esfigmo\":</code></strong> Mide presión arterial.</p>\n</li>\n</ul>\n</li>\n</ul>\n<p><strong>Nota:</strong> Los sensores aún no están disponibles, pero se integrarán en futuras versiones del API. Estaremos actualizando la documentación para reflejar su disponibilidad.</p>\n<p>Si tratas de usar cualquiera de estos sensores, el servidor devolverá un mensaje como el siguiente:</p>\n","_postman_id":"a3c5c07e-7e32-483c-afae-01956098fcc1"},{"name":"Socket Connection","item":[],"id":"cf87a829-be9d-4247-8e5e-418b5942d3c1","description":"<h2 id=\"integrando-socketio\">Integrando Socket.IO</h2>\n<p>Esta documentación proporciona una guía básica para implementar <strong>Socket.IO Client</strong>, una biblioteca que permite la comunicación en tiempo real entre un cliente y un servidor a través de WebSockets. Se abordan temas esenciales como la instalación, conexión, emisión y escucha de eventos, manejo de desconexiones y reconexiones.</p>\n<h2 id=\"instalación\"><strong>Instalación</strong></h2>\n<p># Con npm</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">npm install socket.io-client\n\n</code></pre>\n<p># Con yarn</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">yarn add socket.io-client\n\n</code></pre>\n<p><code>Crea un archivo llamado \"socket.ts\"</code></p>\n<ul>\n<li>Importa la función <code>io</code> del módulo <code>socket.io-client</code></li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">import { io } from \"socket.io-client\";\n\n</code></pre>\n<ul>\n<li>Conéctate al servidor de Socket.IO y exporta la variable <code>\"socket\"</code></li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">const URL = \"https://socketio.bitmec.com:2096\"; \nexport const socket = io(URL, {secure:true});\n\n</code></pre>\n<ul>\n<li>Eventos básicos</li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">socket.on(\"connect\", () =&gt; {\n    console.log(\"Conectado al servidor\");\n});\nsocket.on(\"disconnect\", () =&gt; {\n    console.log(\"Desconectado del servidor\");\n});\nsocket.on(\"connect_error\", (error) =&gt; {\n    console.log(\"Error de conexión:\", error);\n});\nsocket.on(\"disconnect\", (reason, details) =&gt; {\n    console.log(reason, details);\n});\n\n</code></pre>\n<h2 id=\"importante\"><em><strong>IMPORTANTE</strong></em></h2>\n<h4 id=\"en-el-archivo-donde-construyes-tu-ui-importa-la-variable-socket-declarada-y-exportada-en-el-archivo-socketts\">En el archivo donde construyes tu UI importa la variable <code>socket</code> declarada y exportada en el archivo <code>socket.ts</code></h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">import { socket } from './socket';\n\n</code></pre>\n<h3 id=\"eventos-importantes\"><strong>Eventos importantes</strong></h3>\n<p><strong>Suscribirse a un canal:</strong><br />Este evento gestiona la suscripción de un cliente a un canal, permitiendo recibir cualquier mensaje que se envíe a ese canal.</p>\n<h1 id=\"conexión-a-la-cabina\"><em><strong>CONEXIÓN A LA CABINA</strong></em></h1>\n<blockquote>\n<p><strong>En este paso vamos a conectarnos a una CABINA en específio, será la cabina número \"34\" y el canal será:</strong> <strong><code>\"cabin-34\"</code></strong> </p>\n</blockquote>\n<p>La función recibe 2 parámetros:</p>\n<ol>\n<li><p><code>\"subscribe\"</code> Indica el tipo de evento que debe realizar el socket, en este caso es suscribirse a un canal para recibir mensajes.</p>\n</li>\n<li><p><code>\"cabin-34\"</code> Es el canal al que debe suscribirse el cliente para recibir mensajes, el nombre del canal puede cambiar.</p>\n</li>\n</ol>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">socket.emit(\"subscribe\", \"cabin-34\");\n\n</code></pre>\n<p><strong>Listen data (Recibir mensajes):</strong><br />Este evento escucha mensajes entrantes en el socket y muestra un mensaje en específco en consola.<br />La funcion recibe 2 parámetros:</p>\n<ol>\n<li><p><code>\"message\"</code> La función está escuchando mensajes enviados por el servidor a través de este evento.</p>\n</li>\n<li><p><code>(data: any) =&gt;:</code> Cuando el evento <code>'message'</code> se dispara, se pasa un objeto de datos a la función callback. El parámetro <code>data</code> representa la información que el servidor envía al cliente.</p>\n</li>\n</ol>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">socket.on(\"message\", (data: any) =&gt; {  \n    console.log(data[\"message\"], \"data\");    \n});\n\n</code></pre>\n<img src=\"https://content.pstmn.io/dbe1b815-afae-4d1a-8fda-5a54e7974d84/aW1hZ2UucG5n\" alt=\"Ejemplo%20de%20un%20mensaje%20recibido\" width=\"1006\" height=\"93\" />","_postman_id":"cf87a829-be9d-4247-8e5e-418b5942d3c1"},{"name":"Video Llamada","item":[],"id":"66e98b2c-17cc-4161-8130-68d177a2f0d3","_postman_id":"66e98b2c-17cc-4161-8130-68d177a2f0d3","description":""}]}