TFJ TacMed is a React Native / Expo tactical medication calculator for Android.
It was migrated from the original native Android version into a cleaner cross-platform structure using TypeScript, Expo, and React Native.
The main purpose of this app is to calculate route-specific medication doses from a reference medication sheet, especially when IV and IM doses are different.
- Patient weight input in kilograms
- Medication search
- Category filters
- Medication list cards
- Medication detail screen
- Separate route calculations for IV / IM medications
- mg to mL conversion
- mcg to mL conversion
- Vial / ampule count
- Remaining volume after max calculated dose
- Dark tactical-style interface
- Expo-based Android preview and build workflow
This version does not assume that IV and IM doses are the same.
Examples from the reference sheet:
Morphine
IV: 0.05–0.1 mg/kg or 3.75–10 mg
IM: 0.07–0.1 mg/kg or 2.5–10 mg
Fentanyl
IV: 0.5–1 mcg/kg or 38–100 mcg
IM: 0.7–1 mcg/kg or 52–100 mcg
Ketamine
IV: 0.1–0.2 mg/kg or 7.5–21 mg
IM: 0.4–0.8 mg/kg or 30–84 mg
Lidocaine
IV: 1 mg/kg, up to 3 mg/kg
IM: 50–100 mg
TFJ-TacMed-ReactNative/
├── App.tsx
├── app.json
├── package.json
├── package-lock.json
├── tsconfig.json
├── babel.config.js
├── README.md
├── assets/
│ ├── icon.png
│ ├── adaptive-icon.png
│ ├── logo_source.png
│ └── sheet_medication_reference.png
└── src/
├── components/
│ └── MedicationCard.tsx
├── data/
│ └── medications.ts
├── logic/
│ └── doseCalculator.ts
├── screens/
│ ├── HomeScreen.tsx
│ └── MedicationDetailScreen.tsx
└── types/
└── medication.ts
Contains the medication database.
This is where medication names, concentrations, contents, routes, and dose values are stored.
Contains the dose calculation logic.
It calculates:
Dose
Volume needed
Vials / ampules needed
Remaining volume
Main app screen.
Handles:
Weight input
Search
Category filtering
Medication list
Detail screen for each medication.
Shows route-specific calculations and medication information.
Card component used to display each medication in the list.
For weight-based medications:
Dose = patient weight × dose per kg
For mg medications:
Volume mL = dose mg ÷ concentration mg/mL
For mcg medications:
Concentration mcg/mL = concentration mg/mL × 1000
Volume mL = dose mcg ÷ concentration mcg/mL
For vial / ampule count:
Vials needed = ceil(max calculated volume ÷ vial volume)
For remaining volume:
Remaining volume = total available volume - max calculated volume
Install these before running the project:
- Node.js
- npm
- Android Studio, for emulator preview
- Expo Go, optional for real phone preview
Check Node and npm:
node -v
npm.cmd -vOn Windows PowerShell, use npm.cmd if normal npm is blocked by execution policy.
Clone the repository:
git clone https://github.com/rochdi4k/TFJ-TacMed-ReactNative.gitEnter the project folder:
cd TFJ-TacMed-ReactNativeInstall dependencies:
npm.cmd installOr, if normal npm works:
npm installStart Expo:
npm.cmd startOr:
npm startThen choose one of the preview options.
- Open Android Studio.
- Start an emulator from Device Manager.
- Return to the Expo terminal.
- Press:
a
- Install Expo Go from the Play Store.
- Run the app with:
npm.cmd start- Scan the QR code using Expo Go.
The phone and computer should be on the same Wi-Fi network.
Install web dependencies first:
npx.cmd expo install react-native-web react-dom @expo/metro-runtimeThen run:
npm.cmd startPress:
w
This application is a software reference calculator based on the provided medication sheet.
It must not be used as the only source for real medical decisions.
Always verify all medication values, routes, concentrations, and dose limits against official medical protocol, authorized clinical guidance, and qualified medical supervision before real use.
Current version:
React Native / Expo migration
Route-specific medication calculator
Android-focused preview and build workflow
Planned improvements:
- Add non-liquid medication support
- Add manual route selector
- Add medication inventory tracking
- Add patient profile mode
- Add saved calculation history
- Add PDF report export
