Loop Development FAQs
Frequently asked questions about Loop Development and using the Loop Development Kit (LDK).
How do I become a Loop author?
Here are some steps on our Local Loop Installation page to help you become a Loop author.
How do I submit a Loop to the Loop Library?
We have a handy list of steps to follow in order to be a Loop author in the Loop Library.
How can I develop/test a Loop?
Anyone can develop and test a Loop. Follow these steps to set up and run your Loop.
1. First step is to become a Loop Author. This will unlock a new option in the menu items under Loop Authors for Local Development.
2. Create a Loop and build it to generate a ‘loop.js’ file.
3. Once you have a compiled loop.js
file, go to Local Loop Development.
4. Click the link to add a new Local Loop. This will open up a form similar to the form you filled in order to publish your Loop.
5. There are only two required pieces of information, the Loop name and path to the loop.js
file. Fill out the form with the required information, and submit it.
6. Your loop should now be running in Olive Helps! And you can test it out to see if your logic is working.
7. If you find any issues in your code, or if you need to change anything, you can make edits in your Loops files. After it is fixed/updated, you can rebuild the project. This will generate a new loop.js
file. In the Local Loops section, you will see the Loop that you are working in with a Restart button. Clicking the restart button will pull in the new loop.js
file for your loop that you were working on (assuming it is generated in the same folder path given) and reserve your Loop.
Please note: Changes to permissions will require the Loop to have to be uninstalled and then reinstalled to be picked up.
How do I find example codes for Loops?
We have some sample code available in a few places in our documentation. Namely, in our Creating a Loop documentation. We have sample code in Github and some other examples, as well.
When should my Loop create a whisper?
Anytime you’d like! Whispers are meant to tell the user what they need at specific times. Please note: try not to create a Whisper on startup unless you absolutely need to. This is to prevent too many Whispers showing for a user as soon as they open the app.
How can my Loop access an aptitude?
All aptitudes are available as long as you request permission in your package.json. To use an Aptitude, import it from the LDK library and use the functions you need. Examples can be found in each Aptitude’s documentation.
How can I view release notes?
Go to Menu -> Click Developer -> and open Release NotesWhat kind of artifact do I need to produce
What kind of artifact do I need to produce?
We require a single file, called "loop.js", which needs to be built in a specific way where metadata is embedded in a header comment. how we suggest doing it with Webpack and to build it out with our configuration. We recommend using Webpack 5 to compile your Loop code for you. Our Webpack configuration includes support for Typescript, and generates the Loop metadata required for installation.
What is the Loop Development Kit (LDK)? Is it the same as an SDK?
The LDK is the Software Development Kit (SDK) for creating Loops. Loop authors can use the LDK to create Loops, which can reach a wide audience through the Loop Library. Our platform provides a sophisticated environment for Loop development, all while adhering to Olive’s advanced security compliance.
Can I use packages / libraries from npm?
Yes, but the environment that your Loop runs in is not quite node and not quite a browser — it's a custom JavaScript runtime that has added security/sandboxing in place, accessing file, making network calls, and needs to be done through an Aptitude.
For that reason certain node/browser built-ins are not exposed to your Loop (ex. fetch
for network calls or fs
for reading files). That's how Olive Helps is able to do things like enforce which domains you can access from your Loop based on your permissions requests. So while we generally encourage you to leverage existing modules/packages/libraries from npm or other sources, you may have to do some testing to make sure it works.
Many packages should work if used properly. For example, the xlsx module can be used to read excel spreadsheets by leveraging the Filesystem Aptitude to read the contents of the file and then passing it into xlsx.read(data, read_opts)
. However, your Loop would fail with an error if you tried to use xlsx.readFile(filename, read_opts)
because that function would try to access fs
, which isn't available within the secure runtime environment. See Loop Security for more details about Loop permissions and Loop sandboxing.
As a Loop Author, do I need a Business Associate Agreement (BAA)?
Olive includes a business associate agreement as part of Olive's terms and conditions that you agree to as a Loop author. Olive also includes a business associate agreement within the terms and conditions agreed to by Olive Helps users. It is the Loop Author's responsibility to determine the terms and conditions and/or business associate agreement that are required for their Loop.
As a Loop Author, do I need a SOC Audit or HITRUST Certification to build a Loop for the Loop Library?
No. Olive will perform a security review with the Loop Author prior to the Loop being published into the Loop Library. Having a SOC or HITRUST will speed up the review process, but is not required.
When will I get access to more Loops from the Loop Library?
Olive is actively building partnerships with the goal to create Loops that will bring real-time intelligence to users in varied areas of healthcare. Much like apps in an app store, Loop building will be an ongoing process post-launch as well.
Is there a way to have a Loop get installed with the Olive Helps installation?
Not yet, but having Loops installed upon Helps installation is on the roadmap as part of “Groups.” Eventually org admins will be able to configure groups, as well as default installations, so that when those users login, the Loops are automatically downloaded, and each user will need to install any Loops they'll be using.
Last updated