Jigsaw features two builders: an algorithm builder and a protocol builder. These builders provide two very different and equally important functions.

Building Algorithms

The algorithm builder allows a researcher to tell Jigsaw how, using ConceptQL, to find events of interest within a data set. These algorithms can be as simple as a set of clinical codes (e.g., ICD-10-CM codes) to search for in the data. They can be arbitrarily complex, such as searching for the third occurrence of an event after the second occurrence of a different event.

The important point is that algorithms are the appropriate place to think about how to identify events of interest and to define the best way to extract those events from the data set. Focusing narrowly on the events allows the algorithm to be as reusable as possible.

Algorithms have no sense of index dates, baseline periods, follow-up periods, or end of observation because they don’t need to. These concepts are far more specific to the protocol where an algorithm will be used. In fact, algorithms should not incorporate logic specific to a protocol because, if they do, they are far less reusable.

Building Protocols

If algorithms are like pieces of a puzzle, Jigsaw’s protocol builder is the platform where those pieces are assembled into the puzzle’s final image. The protocol builder helps a researcher focus on what events to include in a study. It uses algorithms to define index events, inclusion/exclusion criteria, look-back periods, censoring events, and more. Because algorithms encapsulate how to find events of interest, and because they are reusable, researchers can instead focus on what events of interest they wish to use for each part of their study protocol.

Within the protocol builder, Jigsaw is able to enforce temporal boundaries around each algorithm in the protocol, limiting events found by an algorithm to only those that, for example, fall within the baseline period. This is why we say above that algorithms do not, and should not, contain notions of index dates or baseline periods. Trying to force these ideas into an algorithm definition makes reasoning about an algorithm that much harder, and limits the reusability of the algorithm in another protocol.


This separation of concerns between how to find events in the data and how to use these events in the context of the protocol, is critical to Jigsaw’s overall simplicity.