Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

JSON is a lightweight, plain text data format. It’s become a standard that is widely used across many industries, even healthcare. Its simple structure makes it a good example to review some key Lua and Translator concepts.

Let's set up a simple filter component that parses a JSON object and ignores data with emails not containing the "interfaceware.com" domain name.

Lets start!

 Import the JSON Filter Tutorial component using +FROM URL

This component includes sample JSON data to make it easier to learn how to filter messages.

You can useCreate component +FROM URL to import the component.

Copy paste the following URL:

git@bitbucket.org:interfaceware/json_tutorial.git

If you don’t know how, see Sample Data for how to add sample files to a project.

 Click on the Customize then the Copy and Edit button so you can access the Translator and alter the code

Refer to Customizing components to see how it's done if you have not done this before.

 Use the Annotation Window to view your sample data in the String Viewing Window

Now we can see our sample data passed to the main function by looking at the Annotation Windows. If we click on the sample data in the annotations, we can view it using The string viewing window.

 Parse the JSON sample data using json.parse{data=Data}
local patient = json.parse{data=Data}

JSON objects are parsed into Lua tables as dictionaries with key-value pairs. You can see this clearly in the Annotation Window.

 First, isolate the email domain names

Using String:split(), we can split the email on “@“ and get the domain name.

local email = patient.contact.email
local domain = email:split("@")[2]
trace(domain)
 Use an if statement to ignore email domains not equal to "interfaceware.com"

Using if statements, we can filter out data we are not interested in processing. For example, say we only want to process data including the interfaceware domain.

if domain == 'interfaceware.com' then
  queue.push{data=Data}
else 
  return -- skip processing this message
end 

See How to push messages into a queue?

 Now lets see our filtering in action by flipping through the sample data and viewing the annotations.

  • No labels