|FHIR (Fast Healthcare Interoperability Resources)|
|1||FHIR Spec Viewer|
A browser for the FHIR specification that renders the specification as a tree of structure definitions. The tree is constructed by following the baseDefinition references in the structure definition JSONs. The top-level definitions in the tree are the definitions that do not have a base definition. (In FHIR R5 and above, the only top-level definition is the Base structure definition.)
You can view each structure definition as a TypeScript-like type definition, open element descriptions by clicking on the purple links, and navigate to the referenced structures by following the blue links. The app is integrated with the FHIR package registry and runs entirely on the client.
Connect to FHIR servers, browse the resources by type, and navigate to the referenced resources by following the blue links.
|3||FHIR Terminology Service Client|
Look up codes in FHIR-based terminology servers and expand value sets.
The app executes the $lookup and $expand operations, respectively, against the specified FHIR endpoint.
|4||FHIR GraphQL Client|
Query FHIR stores using GraphQL.
The app executes the $graphql operation against the specified FHIR endpoint.
Validate FHIR resources against a FHIR server.
The app executes the $validate operation on the specified FHIR endpoint.
|6||FHIR Message Sender|
Submit messages to FHIR servers using the $process-message operation.
|7||FHIR IG Publisher|
A cloud-based FHIR IG Publisher.
You can point the app to a directory on your computer containing the IG files, and it will generate the IG for you.
The process runs on the server, and you can see the progress in real time.
Convert FHIR resources from XML to JSON and back.
The app uses the fhir npm package to do the conversion.
A simple FHIR server implementation with a virtual REST API that runs in your browser.
You can run API requests against the server and see the results in real time. The FHIR store does not persist the data between sessions, so you can use it for testing purposes.
|10||SMART on FHIR Testing Tool|
An online tool for testing SMART on FHIR apps.
You can specify the launch context and the FHIR server content using the FSH language and then launch your app to test it against the server.
An online editor for FSH documents.
You can use the editor to author and debug FSH documents. The editor supports syntax highlighting and displays the parsed FSH document to help you debug it.
The FSH content is parsed synchronously in your browser using the fsh-sushi library.
|12||FHIR Mapping Language Compiler|
A tool for compiling FHIR Mapping Language into StructureMap resources.
The compiler runs on the server and is implemented in Java using the HAPI FHIR library.
|13||FHIR Mapping Language Testing Tool|
An online tool for authoring and debugging FHIR Mapping Language files.
You can test the FHIR Mapping Language logic by running it online. To run the mapping, you need to provide the source and target structure definitions and the input JSON. The tool will then run the mapping and display the results.
The mapping is executed on the server side in Java and uses the HAPI FHIR library.
|14||FHIR Structure Definition Snapshot Generator|
Given a FHIR structure definition JSON, this tool generates the structure definition snapshot from the provided differential. (A snapshot is a complete representation of the structure definition, with all differential elements resolved.)
Snapshot generation runs on the server side in Java and uses the ProfileUtilities class from the HAPI FHIR library.
|15||FHIR Export Tool|
Bulk-export FHIR resources from a FHIR server.
The app uses the $export operation to export resources from a FHIR server. This is useful for extracting all data from a FHIR server for testing, analysis, migration, or backup purposes.
|16||SPARQL on FHIR|
Query FHIR data with SPARQL.
|17||FHIRPath Testing Tool|
Evaluate FHIRPath expressions online.
|18||FHIR Graph Viewer|
Visualize FHIR resource networks.
An editor and parser for ER7-encoded HL7v2 messages (HL7 v2.5.1).
The tool parses the input message and shows the detailed structure of each segment.
An app that converts HL7v2 messages to FHIR using the LinuxForHealth HL7 to FHIR Converter on the server side.
|21||HL7v2 Spec Viewer|
An interactive browser for the HL7v2 specification.
The app shows the message structure in the ER7-like representation, allowing you to visually navigate the segments, fields, components, and subcomponents by following the purple and blue links.
Validate HL7v2 messages against your own HL7 abstract message syntax describing the valid message structure. I implemented the parser for the ER7 and abstract message syntaxes. Any segments are allowed in the abstract message syntax. The validation runs synchronously on the client side, every time you change the message or the syntax.
|23||HL7v2 Schema Codegen|
A tool for generating schema JSONs compatible with the Google Cloud Healthcare API from the HL7 abstract message syntax.
|CQL (Clinical Quality Language)|
An online editor for the CQL language.
The editor supports syntax highlighting and allows you to execute the CQL code against a FHIR server.
A tool for converting CQL into ELM.
The conversion can be performed either on the client side or on the server side. The client side conversion is powered by the Doppio JVM running in the browser.
|26||CQL Testing Tool|
This tool allows you to write CQL code and run it against FHIR data provided in the FSH language.
A curated list of awesome CQL resources, tools, and other shiny things.
Published on my GitHub.
|Healthcare data models|
|28||OMOP CDM Browser|
An interactive browser for the OMOP Common Data Model.
The logical model behind each table in the OMOP CDM is displayed as a TypeScript-like type definition. You can view the description of each column by clicking on the purple links. The inverse relationships are added automatically and displayed in light purple. You can navigate to the referenced tables by following the blue links.
I also added a few minor fixes to the model.
|29||PCORnet CDM Browser|
An interactive browser for the PCORnet Common Data Model.
The logical model behind each table in the PCORnet CDM is displayed as a TypeScript-like type definition. You can view the description of each column by clicking on the purple links. The inverse relationships are added automatically and displayed in light purple. You can navigate to the referenced tables by following the blue links.
An interactive browser for the SDTM data model.
The app displays the polyhierarchy of SDTM classes and domains as a tree. You can browse the attributes of each class and view their descriptions by clicking on the purple links. The structure of classes is rendered as a TypeScript-like type definition. You can navigate to the referenced classes by following the blue links.
|31||HL7 RIM Browser|
An interactive browser for exploring the HL7 Reference Information Model (RIM).
The app displays the tree of RIM classes. You can browse the attributes of each class and view their descriptions (purple links). The relationships between classes are displayed as light purple elements. The structure of classes is rendered as a TypeScript-like type definition. You can navigate to the referenced classes by following the blue links.
|32||HL7 CDA Schema Explorer|
An interactive explorer for the normative HL7 Clinical Document Architecture schema.
|33||SNOMED CT Logical Model Browser|
Browse the object model behind the SNOMED CT clinical terminology.
|Health IT (misc)|
|34||CDS Hooks Testing Tool|
The tool allows you to provide FHIR server content using FSH and run the hook against it with a pre-defined context.
Author and execute ECL queries. You can choose the SNOMED CT edition against which to run the queries.
|36||HL7 CDA Validator|
A tool for validating CDA XML documents.
The tool uses the normative CDA XML Schemas to validate the input documents. The validation runs synchronously and on the client side (no data is sent to the server).
An online editor for openEHR Archetype Definition Language (ADL) files.
An online inspector for X12 messages.
The app uses the node-x12 library to parse the X12 content and presents the output in a pretty-printed JSON form.
|39||NHI Number Validator|
Validate National Health Index (NHI) numbers used in New Zealand.
|40||Class Diagram Maker|
Create class diagrams using a simple JSON-based definition of the data model.
The tool uses the WASM port of the GraphViz library to render the diagrams synchronously on the client.
An online tool for creating PlantUML diagrams.
The diagrams are generated in real time on the server side.
Validate JSON documents against GraphQL SDL (Schema Definition Language).
At the logical level, GraphQL schemas are collections of object types with fields, they can be used as a mechanism for defining the data model for JSON documents. While not usually used for this purpose, GraphQL SDL is a very expressive language that serves as a viable alternative for capturing logical data models.
Validate JSON documents against JSON Schemas.
Validate JSON documents against TypeScript types and interfaces.
TypeScript type and interface definitions are a way to logically represent the data model of hierarchical data structures. This app parses the TypeScript code and uses the extracted constraints to validate the input JSON.
|45||XML Schema Validator|
Validate XML documents against XML Schema (XSD).
The validator runs synchronously in the browser and uses the WASM port of the xmllint library.
An online tool that allows you to validate XML documents against Schematron schemas. (Schematron is a rule-based validation language for making assertions about the presence or absence of patterns in XML trees.)
Validation is performed on the server side in Java using the SchXslt library.
|47||Database for Event Sourcing|
A prototype of a database for event-sourced systems.
Create a relational database and query it entirely in the browser.
The app uses the sql.js library (a WASM port of the SQLite database engine) and provides a SQL query editor with syntax highlighting for creating and querying tables.
The database does not persist data between sessions or send it to the server.
|Semantic Web and Linked Data|
|49||RDF Graph Editor|
A visual editor for RDF datasets.
Create RDF datasets using a visual editor. Export your graph as N-Triples. You can undo and redo your changes as you author the RDF graph.
The app is integrated with the Google Knowledge Graph API and allows you to find entities in the Google Knowledge Graph and place them in your graph. The rendered graph displays the entities as nodes and the relations between them as edges.
|50||Database for RDF|
A database for structured data.
Create RDF datasets using Turtle and query the structured data using SPARQL. You can use SPARQL Federation to query additional data from external SPARQL endpoints, all in one query.
|51||Semantic Web Browser|
The app discovers the structured data about entities on the Semantic Web and lets you explore their properties and relationships. This is a single and simple interface into exploring entities from Wikidata, Google Knowledge Graph, DBpedia, and other sources.
Edit Turtle files online.
The editor provides syntax highlighting, auto-formatting, and validation of Turtle documents. I developed a custom auto-formatter to add the missing feature to the existing online editors.
Query SPARQL endpoints online.
The app lets you to write SPARQL queries and execute them against the SPARQL endpoints.
|Developer tools and Internet standards|
Encode and decode IDNs (Internationalized Domain Names) using Punycode. The conversion happens in real time as you type (synchronously on the client side).
|55||SMTP Testing Tool|
Test your email server deployment by sending a test email to a specified email address.
A query interface for the RDAP protocol. Enter the domain name and get the RDAP data in a pretty-printed JSON format.
|57||Base64 Encoder and Decoder|
Encode into and decode from Base64.
The conversion is done entirely in the browser, using the native APIs.
Edit and preview Markdown files in the browser.
The rendering is done in the browser using the remark and rehype libraries.
Parse emails online.
The app uses the mailparser library to parse emails on the client.
|IPA (International Phonetic Alphabet), phonetics, speech technology|
An online dictionary of English words with pronunciations.
I manually collected and curated the data for this dictionary from various sources. The pronunciations use the phonetic symbols from Wikipedia's IPAc-en template.
An interactive slippy map that displays pronunciations of place names. The pronunciations use the phonetic symbols from Wikipedia's IPAc-en template. The app uses the Mapbox GL JS library for rendering the map and the labels are placed on the fly as you pan and zoom the map.
|62||IPA to Speech|
Type IPA and listen to the generated speech audio.
The app is integrated with the Google Cloud Text-to-Speech API, Amazon Polly, and Microsoft Azure Azure Cognitive Services Speech Service, any of which can be used for generating the speech audio. You can type IPA using the integrated on-screen virtual IPA keyboard that also shows example words for each phoneme.
Every week, the app checks English Wikipedia for new IPA pronunciations using the Wikipedia API.
Edit speech recognition grammars online.
The editor supports syntax highlighting for the JSGF language grammar.
|65||Text to Speech|
The app uses the Web Speech API for speech synthesis.
An online International Phonetic Alphabet (IPA) chart. Simple, responsive, mobile-friendly, and accessible.
An online tool for entering IPA characters.
The app provides a virtual keyboard that can be used to type IPA phonetic transcriptions inside mobile and desktop browsers.
A neural grapheme-to-phoneme model trained to transcribe English words into IPA pronunciations.
An online browser for emoji. Search emoji by name or browse by category. The emoji are rendered using the Noto Emoji monochrome font.
|70||Local Font Browser|
An online browser for locally installed fonts.
The app uses the queryLocalFonts() method from the Local Font Access API supported by many modern browsers.
An online browser for alphabets, scripts, and writing systems. I manually collected the data from various sources.
An online viewer for font files.
The app uses the fontkit library to parse font files and extract glyph shapes.
An online tool for hyphenating English text. (Hyphenation is the process of adding hyphens to text so that the words can be broken at the end of lines.)
The app uses the hypher library to synchronously hyphenate the input text every time you type a character.
|74||Parametric Type Foundry|
A a library of parametric fonts that allows you to preview the generated fonts and easily add them to your site.
An interactive browser for the human genome.
The app is integrated with the UCSC Genome Browser API and uses the GRCh38 assembly. You can search for genes or navigate to positions on the chromosomes. Responsive and mobile- and touch-friendly.
|76||Sequence Alignment Viewer|
A FASTA file viewer for the browser. You can open local alignments from your computer.
|77||Sequence Logo Maker|
A sequence logo maker for sequence alignments. Create sequence logo diagrams from FASTA files and save the result as a PNG or SVG image. Both nucleic acid and protein sequences are supported.
An online editor for Protein Data Bank (PDB) files.
A digital repository for your genetic information.
|Math and chemistry|
A WYSIWYG editor for math formulas. Visually create math formulas and save the result as a PNG image.
The app uses KaTeX to render the formulas.
|81||3D Mol Viewer|
A 3D molecular viewer for PDB files.
The app uses Three.js to render the models.
HTML5 Canvas-based periodic table that supports panning and zooming. Responsive and mobile- and touch-friendly.
|83||Structural Formula Viewer|
A 2D structural formula viewer for chemical compounds.
I created this renderer as a proof of concept to see if it is possible to cut the bonds around the atom labels in a smarter way to make them look more visually appealing.
|84||Simple Text Editor|
Edit plaintext files in the browser. Undo and redo your edits with Cmd+Z and Shift+Cmd+Z.
The app uses the File System Access API to read and write local files.
The app creates a compass, right in the browser. The compass responds to device orientation events and calculates the absolute positioning of the device to correctly show the direction of the magnetic north on the screen.
The app shows the current weather conditions and the forecast for the next 7 days. The app uses IP geolocation to determine the user's location and queries the OpenWeatherMap API to get the weather data in your area.
A simple analog clock.
A simple online calendar.
Monitor the battery status in the browser.
The app uses the Battery Status API, which is supported by many modern browsers.
Record audio online.
A simple camera app that uses the MediaDevices
Make a recording of your computer screen.
The app uses the MediaDevices
An online words game à la Wordle.
Unlike Wordle, this game gives you an unlimited number of attempts to guess the word. You can also choose a different language for the word list.
Play Snake on your phone or computer.
I made this game from scratch.
A web-based tool for visualizing qubits on a Bloch sphere.
You can manipulate the values of phi and theta using the sliders.
The app renders the Bloch sphere in SVG, using the projection commonly used in quantum computing and geometry books. In this projection, the YZ plane is fixed and stays in the plane of the screen, and when you "rotate" the sphere, the sphere is warped to give the illusion of a 3D rotation.
|96||Quantum Random Number Generator|
Quantum Random Number Generator is a web-based tool for generating random numbers using quantum computing. It uses the Q.js library to simulate a quantum circuit with a Hadamard gate and a measurement.
seq2seq Trainer is a web-based tool for training sequence-to-sequence models online. It uses the @tensorflow/tfjs library that I run in a web worker.
You can test the model while it is training and see the results in real time.
This app is a demo of a face detection service. It uses the face-api.js library to detect faces in images that I run in a web worker.
|99||IPFS File Transfer Tool|
This app allows you to share files using a P2P technology and IPFS. The app is built using the ipfs-core library.
|100||ASCII Art and Easter Egg Archive|
The app analyzes the video stream from your camera and converts it to ASCII art in real time.
The app parses the user-provided VIN (Vehicle Identification Number) and displays the information encoded in the VIN. VIN is a unique 17 character code assigned to every vehicle.
Detect barcodes and QR codes in your camera feed.
The app uses the BarcodeDetector
Turn on your camera and apply an emoji filter to your video.
The app analyzes the video stream to get the color values for image segments and replaces them with the closest matching emojis.
|105||Graphviz DOT Editor|
Create and edit Graphviz graphs online using the DOT language. (Graphviz is a popular open-source graph visualization software that allows users to create graphs and diagrams from DOT files.)
The app uses the Graphviz library compiled to WASM to generate the graphs synchronously in the browser.
Edit and run Asymptote scripts in your browser. (Asymptote is a powerful vector graphics language for technical drawings, inspired by MetaPost which itself is inspired by Donald Knuth's Metafont.)
The app compiles Asymptote on the server side.
The app parses and compiles Mermaid in real time on the client and renders it as SVG.
Explore Platonic solids in 3D with various rendering options.
The app can show the front (camera-facing) edges as solid lines and the back edges that are hidden from view as dashed lines. The dashed lines are uniformly dashed relative to the camera.
Look up OIDs (object identifiers) online and browse the OID tree.
Learn languages with bilingual playlists.
|111||Te Reo Maps|
An interactive map of the world in te reo Māori.