Today we are excited to announce a new feature in Philter that is a result of Philter’s open beta testing. We are excited to offer this functionality just prior to Philter going live. Thanks to those who provided their feedback to make this possible!
Previously in Philter the configurations of each “filter” was static and configured when Philter started. The limitation imposed by this implementation is that if you wanted to filter documents differently based on some criteria you had to run two instances of Philter and add logic when using Philter’s API to send your document to the appropriate instance. It was also restrictive because each enabled filter was configured with some of the same values such as the replacement format. You could not replace a zip code differently than a credit card number, for example.
We have changed how the filters are configured and we are introducing the new feature as “filter profiles.” A feature profile is a defined set of filters and each’s respective configuration defined in a JSON file. Now, a single instance of Philter can simultaneously apply multiple filter profiles and selectively choose which to utilize on a per-request basis. We have also added more options to handling each individual PII/PHI identifier such as being able to independently configure how to redact or replace each one. For instance, it is now possible to truncate zip codes to a chosen length instead of simply replacing the whole zip code.
Here’s an example filter profile that enables filters and defines how corresponding PII/PHI should be replaced. Note how each identifier has its own strategy for handling items – individual types are no longer constrained to sharing the same strategy. With filter profiles, you can also selectively enable identifier filters. Filters not defined in the profile will not be enabled for that profile. Non-deterministic filters such as NLP-based ones can now have their own sensitivity setting, too.
{ "name":"default", "identifiers":{ "creditCard":{ "creditCardFilterStrategy":{ "strategy":"REDACT", "redactionFormat":"{{{REDACTED-%t}}}" } }, "ipAddress":{ "ipAddressFilterStrategy":{ "strategy":"REDACT", "redactionFormat":"{{{REDACTED-%t}}}" } }, "zipCode":{ "zipCodeFilterStrategy":{ "truncateDigits":2, "strategy":"TRUNCATE" } } } }
You can initialize Philter with as many filter profiles as you need. Using the REST API you can select the filter profile to use when making your request by providing a p parameter along with the name of a filter profile as shown in this sample request:
curl -k -X POST "https://localhost:8080/api/filter?c=context&p=profile" \ -d @file.txt \ -H Content-Type "text/plain"
We have lots of ways to expand the filter profiles on our to-do list, such as providing centralized filter profile management and an API around filter profiles to allow for remote management of them so look for updates on those features soon.