Cross-language Tall Man lettering library for medication safety. Converts drug names to their standardised mixed-case form (e.g. prednisone → predniSONE) to reduce look-alike, sound-alike (LASA) medication errors.
Available in C#/.NET, Python, JavaScript/TypeScript, and Java. All implementations share a canonical dataset, produce byte-identical output, and pass 99/99 canonical tests.
dotnet add package ToTallmanusing ToTallman;
"prednisone".ToTallman(); // "predniSONE"
"vincristine".ToTallman("AU"); // "vinCRISTine"
"ms contin".ToTallman(); // "MS Contin"
"solu-medrol".ToTallman(); // "SOLU-medrol"pip install totallmanfrom totallman import to_tallman
to_tallman("prednisone") # "predniSONE"
to_tallman("vincristine", "AU") # "vinCRISTine"
to_tallman("ms contin") # "MS Contin"npm install totallmanimport { toTallman } from 'totallman';
toTallman('prednisone'); // 'predniSONE'
toTallman('vincristine', 'AU'); // 'vinCRISTine'
toTallman('ms contin'); // 'MS Contin'<dependency>
<groupId>com.totallman</groupId>
<artifactId>totallman</artifactId>
<version>2.0.0</version>
</dependency>import com.totallman.TallmanConverter;
TallmanConverter.toTallman("prednisone"); // "predniSONE"
TallmanConverter.toTallman("vincristine", "AU"); // "vinCRISTine"
TallmanConverter.toTallman("ms contin"); // "MS Contin"| ID | Description | Entries |
|---|---|---|
DEFAULT |
Combined list (AU + ISMP + NZ + FDA, precedence AU > ISMP > NZ > FDA) | 384 |
AU |
Australian National Tall Man Lettering List (ACSQHC) | 235 |
ISMP |
FDA + ISMP Tall Man Lettering Lists (combined) | 171 |
NZ |
Aotearoa New Zealand Tall Man Lettering List (HQSC) | 219 |
FDA |
US Food and Drug Administration Name Differentiation Project | 43 |
Entry counts and list versions are in tallman-lists/manifest.json.
| Language | Package | README |
|---|---|---|
| C# / .NET | ToTallman on NuGet |
languages/csharp/ |
| Python | totallman on PyPI |
languages/python/ |
| JavaScript / TypeScript | totallman on npm |
languages/js/ |
| Java | com.totallman:totallman |
languages/java/ |
See the Technical Specification for the canonical algorithm and cross-language design decisions.
Runnable examples for each language live under examples/:
| Language | Path | Run (after build, from repo root) |
|---|---|---|
| C# | examples/csharp/ | dotnet run --project examples/csharp/Example.csproj |
| Python | examples/python/ | python examples/python/example.py |
| JavaScript | examples/javascript/ | node examples/javascript/example.js |
| Java | examples/java/ | mvn -f examples/java/pom.xml compile exec:java |
Each example requires the library to be built first — see the README in each example directory.
See CONTRIBUTING.md for how to add or update Tall Man lists, run the test suite, and submit changes.
| Phase | Status |
|---|---|
| 1. Foundation (data format + validation) | ✅ Complete |
| 2. Canonical test suite | ✅ Complete |
| 3. C# implementation | ✅ Complete — 99/99 canonical, 123 total |
| 4. Multi-language (Python, JS, Java) | ✅ Complete — all 99/99 canonical |
| 5. CI/CD | ✅ Complete |
| 6. Documentation | ✅ Complete |
| 7. Example applications | ✅ Complete |
| 8. Manual list review (clinical correctness) | ✅ Complete |
| 9. Release & publishing | ⛔ Blocked — #49 |
Detailed, up-to-date work lives in GitHub issues.