> For the complete documentation index, see [llms.txt](https://docs.extrahorizon.com/extrahorizon/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.extrahorizon.com/extrahorizon/use-cases/medical-device-tutorial/preparation.md).

# Preparation

Before you begin, make sure you have the credentials to access your Extra Horizon environment. You'll need

<table><thead><tr><th width="358">Variable</th><th>Example</th></tr></thead><tbody><tr><td>Host URL</td><td><code>api.dev.my-company.extrahorizon.io</code></td></tr><tr><td>OAUTH1 consumer key</td><td><code>bb6c5186acf8aca8ed64ef4ef49e08bb4484c7c4</code></td></tr><tr><td>OAUTH1 consumer secret</td><td><code>4808fbc315294aa7aeb2e40b76d84680c0b582ee</code></td></tr><tr><td>e-mail</td><td><code>john.doe@extrahorizon.com</code></td></tr><tr><td>password</td><td><code>SomeDiff!UnguessableP8ssword</code></td></tr></tbody></table>

Using `Host URL`, `e-mail` and `password`, you can access the Control Center UI at <https://app.extrahorizon.com>. Please log in and explore the UI at your leisure.

This tutorial will be based on code located in the GitHub repository at <https://github.com/ExtraHorizon/medical-device-tutorial>.

1. You'll need to have [Node.js](https://nodejs.org/en/learn/getting-started/how-to-install-nodejs) installed in order to use the repository
2. Check out the repository:

```bash
git clone git@github.com:ExtraHorizon/medical-device-tutorial.git
```

3. In the repository, do

```sh
npm install
```

This will install all the repository dependencies, including the [Extra Horizon SDK](https://docs.extrahorizon.com/javascript-sdk/) and [CLI](https://docs.extrahorizon.com/cli/). The SDK will be used by our tutorial application to interact with the Extra Horizon API, while we'll use the CLI to set up & manage our Extra Horizon configuration.

4. Now we'll need to authenticate the CLI to the Extra Horizon backend so that we can use the CLI to manage our configuration. Using the credentials mentioned at the top of this page, do

<pre class="language-bash"><code class="lang-bash"><strong>npx exh login --host=https://&#x3C;Host URL> --email=&#x3C;email> 
</strong>    --password=&#x3C;password> --consumerKey=&#x3C;consumer key> 
    --consumerSecret=&#x3C;consumer secret>
</code></pre>

The CLI will authenticate you & store your credentials in `~/.exh/credentials`.

5. Verify that the CLI works correctly by doing

```
npx exh data schemas list
```

which should return an (empty) list of data schemas.

#### Repository structure

The structure of the repository is as follows:

```
.
├── 1-data-model
│   └── schemas
├── 2-workflows
│   ├── schemas
│   ├── tasks
│   │   └── analyze-blood-pressure
│   │       └── src
│   └── templates
│       ├── mail-analysis
│       └── pdf-analysis
├── 3-permissions
│   └── schemas
├── 4-oauth-frontend
│   └── front-end
│       ├── dist
│       └── src
└── examples
    ├── permissions
    ├── workflow 1
    └── workflow 2
```

There are separate directories for each section of this tutorial. Next to that, there's an `examples` directory, which contains sample scripts to perform certain operations on the Extra Horizon backend. They will be used throughout the tutorial.

That's it! Now you're all set to begin the tutorial.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.extrahorizon.com/extrahorizon/use-cases/medical-device-tutorial/preparation.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
