HomeProjectsBlogContact
Made with ❤️ by Anton Vasetenkov
Homepage
Browse my projects
#ProjectDescription
FHIR (Fast Healthcare Interoperability Resources)
1FHIR 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.

2FHIR Viewer

Connect to FHIR servers, browse the resources by type, and navigate to the referenced resources by following the blue links.

3FHIR 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.

4FHIR GraphQL Client

Query FHIR stores using GraphQL.

The app executes the $graphql operation against the specified FHIR endpoint.

5FHIR Validator

Validate FHIR resources against a FHIR server.

The app executes the $validate operation on the specified FHIR endpoint.

6FHIR Message Sender

Submit messages to FHIR servers using the $process-message operation.

7FHIR 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.

8FHIR Converter

Convert FHIR resources from XML to JSON and back.

The app uses the fhir npm package to do the conversion.

9FHIR Server

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.

10SMART 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.

11FSH Editor

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.

12FHIR 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.

13FHIR 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.

14FHIR 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.

15FHIR 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.

16SPARQL on FHIR

Query FHIR data with SPARQL.

17FHIRPath Testing Tool

Evaluate FHIRPath expressions online.

18FHIR Graph Viewer

Visualize FHIR resource networks.

HL7v2
19HL7v2 Editor

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.

20HL7v2-to-FHIR Converter

An app that converts HL7v2 messages to FHIR using the LinuxForHealth HL7 to FHIR Converter on the server side.

21HL7v2 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.

22HL7v2 Validator

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.

23HL7v2 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)
24CQL Editor

An online editor for the CQL language.

The editor supports syntax highlighting and allows you to execute the CQL code against a FHIR server.

25CQL-to-ELM Converter

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.

26CQL Testing Tool

This tool allows you to write CQL code and run it against FHIR data provided in the FSH language.

27Awesome CQL

A curated list of awesome CQL resources, tools, and other shiny things.

Published on my GitHub.

Healthcare data models
28OMOP 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.

29PCORnet 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.

30SDTM Explorer

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.

31HL7 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.

32HL7 CDA Schema Explorer

An interactive explorer for the normative HL7 Clinical Document Architecture schema.

33SNOMED CT Logical Model Browser

Browse the object model behind the SNOMED CT clinical terminology.

Health IT (misc)
34CDS 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.

35ECL Editor

Author and execute ECL queries. You can choose the SNOMED CT edition against which to run the queries.

36HL7 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).

37ADL Editor

An online editor for openEHR Archetype Definition Language (ADL) files.

38X12 Parser

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.

39NHI Number Validator

Validate National Health Index (NHI) numbers used in New Zealand.

Data modeling
40Class 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.

41PlantUML Editor

An online tool for creating PlantUML diagrams.

The diagrams are generated in real time on the server side.

42GraphQL Validator

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.

43JSON Validator

Validate JSON documents against JSON Schemas.

This app uses the jsonschema JavaScript library to perform validation synchronously on the client side.

44TypeScript Validator

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.

45XML 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.

46Schematron Validator

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.

Databases
47Database for Event Sourcing

A prototype of a database for event-sourced systems.

You can simulate an event log and define views that aggregate (reduce) the events using JavaScript. The views can then be queried as at any point in time.

48SQL Playground

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
49RDF 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.

50Database 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.

51Semantic 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.

52Turtle Editor

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.

53SPARQL Client

Query SPARQL endpoints online.

The app lets you to write SPARQL queries and execute them against the SPARQL endpoints.

Developer tools and Internet standards
54Punycode Converter

Encode and decode IDNs (Internationalized Domain Names) using Punycode. The conversion happens in real time as you type (synchronously on the client side).

55SMTP Testing Tool

Test your email server deployment by sending a test email to a specified email address.

56RDAP Client

A query interface for the RDAP protocol. Enter the domain name and get the RDAP data in a pretty-printed JSON format.

57Base64 Encoder and Decoder

Encode into and decode from Base64.

The conversion is done entirely in the browser, using the native APIs.

58Markdown Editor

Edit and preview Markdown files in the browser.

The rendering is done in the browser using the remark and rehype libraries.

59Email Parser

Parse emails online.

The app uses the mailparser library to parse emails on the client.

IPA (International Phonetic Alphabet), phonetics, speech technology
60Dictionary

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.

61IPA Map

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.

62IPA 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.

63IPA Finder

Every week, the app checks English Wikipedia for new IPA pronunciations using the Wikipedia API.

64JSGF Editor

Edit speech recognition grammars online.

The editor supports syntax highlighting for the JSGF language grammar.

65Text to Speech

The app uses the Web Speech API for speech synthesis.

66IPA Chart

An online International Phonetic Alphabet (IPA) chart. Simple, responsive, mobile-friendly, and accessible.

67IPA Keyboard

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.

68 Phonetically

A neural grapheme-to-phoneme model trained to transcribe English words into IPA pronunciations.

Typography
69Emoji Browser

An online browser for emoji. Search emoji by name or browse by category. The emoji are rendered using the Noto Emoji monochrome font.

70Local 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.

71Alphabets

An online browser for alphabets, scripts, and writing systems. I manually collected the data from various sources.

72Font Viewer

An online viewer for font files.

The app uses the fontkit library to parse font files and extract glyph shapes.

73Hyphenation Tool

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.

74Parametric Type Foundry

A a library of parametric fonts that allows you to preview the generated fonts and easily add them to your site.

Bioinformatics
75Genome Browser

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.

76Sequence Alignment Viewer

A FASTA file viewer for the browser. You can open local alignments from your computer.

77Sequence 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.

78PDB Editor

An online editor for Protein Data Bank (PDB) files.

79My Sequences

A digital repository for your genetic information.

Math and chemistry
80Math Editor

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.

813D Mol Viewer

A 3D molecular viewer for PDB files.

The app uses Three.js to render the models.

82Periodic Table

HTML5 Canvas-based periodic table that supports panning and zooming. Responsive and mobile- and touch-friendly.

83Structural 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.

Productivity
84Simple 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.

85Compass

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.

86Weather

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.

87Clock

A simple analog clock.

88Calendar

A simple online calendar.

89Battery Manager

Monitor the battery status in the browser.

The app uses the Battery Status API, which is supported by many modern browsers.

90Sound Recorder

Record audio online.

91Camera

A simple camera app that uses the MediaDevices.getUserMedia() method to access the user's camera and display the video stream on the screen. You can take a photo and save it as a PNG file.

92Screen Recorder

Make a recording of your computer screen.

The app uses the MediaDevices.getDisplayMedia() method to access the contents of the user's display and the MediaStream Recording API to make a screen recording. You can save the recording as a WebM file.

Games
93Words Game

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.

94Snake

Play Snake on your phone or computer.

I made this game from scratch.

Quantum computing
95Bloch Sphere

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.

96Quantum 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.

Machine learning
97seq2seq Trainer

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.

98Face Detector

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.

Misc
99IPFS 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.

100ASCII Art and Easter Egg Archive

I manually collected a small library of ASCII art and Easter eggs hidden in the source code of various websites or in the JavaScript console.

101ASCII Camera

The app analyzes the video stream from your camera and converts it to ASCII art in real time.

102VIN Decoder

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.

103Barcode Reader

Detect barcodes and QR codes in your camera feed.

The app uses the BarcodeDetector.detect() method from the Barcode Detection API, which is supported by many modern browsers.

104Emoji Camera

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.

105Graphviz 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.

106Asymptote Editor

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.

107Mermaid Editor

Edit and compile Mermaid diagrams in your browser. (Mermaid is a JavaScript-based diagramming and charting tool that uses a custom syntax for creating complex diagrams.)

The app parses and compiles Mermaid in real time on the client and renders it as SVG.

108Platonic Solids

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.

109OID Resolver

Look up OIDs (object identifiers) online and browse the OID tree.

110 Haecht

Learn languages with bilingual playlists.

111Te Reo Maps

An interactive map of the world in te reo Māori.