Inhaler_FineParticleDose_Calculator
Inhaler Fine Particle Dose Calculator
ℹ️ Utility calculates FPD and EFPD based on chemical data from impactor:
• Emitted Dose (ED) per actuation
• Fine Particle Dose (FPD, <5 μm)
• Extra-Fine Particle Dose (EFPD, <2 μm)
• Fine Particle Fraction (FPF %)
• Mass Balance (Recovery)
⚠️ CRITICAL: Only fine particles reach alveoli!
Calculation requires precise HPLC data for each NGI stage.
Usage:
InhalerFineParticleDoseCalculator.exe → demo mode (console output)
InhalerFineParticleDoseCalculator.exe input.csv output.json → evaluate your data
Input format:
BatchNumber,ProductName,Mass_Throat,Mass_Stage1,Mass_Stage2,Mass_Stage3,Mass_Stage4,Mass_Stage5,Mass_Stage6,Mass_Stage7,Mass_MOC,LabelClaim_mcgr,NumberOfActuations,RecoveryCorrectionFactor
Example:
INH-FPD-2026-001,Fluticasone Propionate DPI,50.0,20.0,15.0,10.0,12.0,15.0,10.0,8.0,5.0,250.0,1,1.02
— WHY IS THIS NEEDED?
FPD calculation is critical for inhaler efficacy assessment (AZ, GSK, Chiesi):
• FPD (Fine Particle Dose) is amount of drug with aerodynamic diameter <5 μm
• EFPD (Extra-Fine Particle Dose) is amount of drug <2 μm (important for peripheral lungs)
• FPF (Fine Particle Fraction) is percentage ratio of FPD to total emitted dose
• Allows comparison of different devices and formulations regardless of total dose
• Required for generic equivalence justification
⚠️ CRITICAL:
• Emitted dose must be within 85-115% of label claim
• FPD must exceed minimum therapeutic threshold
• FPF typically ranges 20-50% for modern DPIs
• Mass balance 75-125% confirms chemical analysis validity
• Correction factor is important for accounting incomplete drug extraction from filters
Key features:
• Automatic FPD and EFPD calculation by NGI stages
• Extraction correction factor accounting
• FPF calculation relative to emitted dose
• Mass balance check for data validation
Critical parameters:
• Emitted dose: 85–115% of Label Claim
• FPD: Individual limit (usually >20% of ED)
• FPF: ≥20%
• Mass balance: 75–125%
💡 Usage tips:
1. Use HPLC data, not gravimetric data (if excipients or carrier present)
2. For carrier-based products (lactose), gravimetry is impossible, only chemistry
3. Correctly define stage boundaries for your airflow (30, 60, 90 L/min)
4. EFPD is especially important for small airway disease treatments (asthma)
5. Compare FPD profile with reference product for bioequivalence
⚠️ Note: FPD is a more important clinical parameter than total delivered dose, as large particles (>5 μm) deposit in mouth and throat, having no therapeutic effect in lungs and causing side effects.
input.csv
BatchNumber,ProductName,Mass_Throat,Mass_Stage1,Mass_Stage2,Mass_Stage3,Mass_Stage4,Mass_Stage5,Mass_Stage6,Mass_Stage7,Mass_MOC,LabelClaim_mcgr,NumberOfActuations,RecoveryCorrectionFactor INH-FPD-2026-001,Fluticasone Propionate DPI,50.0,20.0,15.0,10.0,12.0,15.0,10.0,8.0,5.0,250.0,1,1.02 INH-FPD-2026-002,Budesonide MDI,30.0,10.0,8.0,5.0,15.0,20.0,15.0,10.0,5.0,200.0,2,1.0 INH-FPD-2026-003,Salmeterol DPI,40.0,25.0,20.0,15.0,10.0,12.0,8.0,5.0,2.0,50.0,1,1.05
Inhaler Fine Particle Dose Calculator — URS and FS
The English user requirements and functional specification are provided below.
Inhaler Fine Particle Dose Calculator — URS
Inhaler Fine Particle Dose Calculator
This document is generated for the English localization. Non-Russian portal languages must use this English version, not a mixed Russian/English document.
Purpose
Define user requirements for a standalone FUZKK utility that accepts laboratory CSV data, evaluates the records using limits embedded in code, and produces LabWare-compatible JSON.
Scope
The utility is intended for preliminary QC/QA review, integration testing, LIMS/LabWare flow and evidence-trail preparation. Final release decisions remain under the laboratory's validated procedure and responsible personnel.
Users
QC analyst, QA reviewer, CSV/validation engineer, LIMS/LabWare integration engineer, responsible laboratory specialist.
User requirements
- The utility shall run without arguments and print its self-description, a built-in input.csv example from GetDemoData(), and demo evaluation for the embedded records.
- The utility shall run with two arguments: input.csv output.json.
- The utility shall not read input.csv and shall not write output.json when started without arguments.
- CSV numeric values shall be parsed using CultureInfo.InvariantCulture.
- Output shall be generated as LabWare-compatible JSON with Header, Samples, Results, Status, StatusCode, ErrorMessage, Description and DescriptionEN.
- For PASS records, ErrorMessage shall be an empty string.
- Embedded limits shall follow this priority: Ph. Eur. → British Pharmacopoeia / UK implementation → EAEU / regional requirements → EMA/ICH/EU guidance → USP fallback.
- If an exact monograph is not known, strict standard API limits are used where applicable: assay 98–102%, total impurities ≤1.0%, individual impurity ≤0.5%.
- For biologics and mAb-like products, aggregation, sterility and endotoxin checks shall be included where relevant to the utility purpose.
- If a parameter may arrive in different units, the unit shall be represented as a separate input field or explicitly reflected in the input.csv field name.
Input CSV
BatchNumber,ProductName,Mass_Throat,Mass_Stage1,Mass_Stage2,Mass_Stage3,Mass_Stage4,Mass_Stage5,Mass_Stage6,Mass_Stage7,Mass_MOC,LabelClaim_mcgr,NumberOfActuations,RecoveryCorrectionFactor INH-FPD-2026-001,Fluticasone Propionate DPI,50.0,20.0,15.0,10.0,12.0,15.0,10.0,8.0,5.0,250.0,1,1.02 INH-FPD-2026-002,Budesonide MDI,30.0,10.0,8.0,5.0,15.0,20.0,15.0,10.0,5.0,200.0,2,1.0 INH-FPD-2026-003,Salmeterol DPI,40.0,25.0,20.0,15.0,10.0,12.0,8.0,5.0,2.0,50.0,1,1.05
input.csv fields
| Field | Sample |
|---|---|
| BatchNumber | INH-FPD-2026-001 |
| ProductName | Fluticasone Propionate DPI |
| Mass_Throat | 50.0 |
| Mass_Stage1 | 20.0 |
| Mass_Stage2 | 15.0 |
| Mass_Stage3 | 10.0 |
| Mass_Stage4 | 12.0 |
| Mass_Stage5 | 15.0 |
| Mass_Stage6 | 10.0 |
| Mass_Stage7 | 8.0 |
| Mass_MOC | 5.0 |
| LabelClaim_mcgr | 250.0 |
| NumberOfActuations | 1 |
| RecoveryCorrectionFactor | 1.02 |
Utility description
Inhaler Fine Particle Dose Calculator — Fine Particle Dose (FPD) Calculator
Inhaler Fine Particle Dose Calculator — Fine Particle Dose (FPD) Calculator
ℹ️ Utility calculates FPD and EFPD based on chemical data from impactor:
• Emitted Dose (ED) per actuation
• Fine Particle Dose (FPD, <5 μm)
• Extra-Fine Particle Dose (EFPD, <2 μm)
• Fine Particle Fraction (FPF %)
• Mass Balance (Recovery)
⚠️ CRITICAL: Only fine particles reach alveoli!
Calculation requires precise HPLC data for each NGI stage.
Usage:
InhalerFineParticleDoseCalculator.exe → demo mode (console output)
InhalerFineParticleDoseCalculator.exe input.csv output.json → evaluate your data
Input format:
BatchNumber,ProductName,Mass_Throat,Mass_Stage1,Mass_Stage2,Mass_Stage3,Mass_Stage4,Mass_Stage5,Mass_Stage6,Mass_Stage7,Mass_MOC,LabelClaim_mcgr,NumberOfActuations,RecoveryCorrectionFactor
Example:
INH-FPD-2026-001,Fluticasone Propionate DPI,50.0,20.0,15.0,10.0,12.0,15.0,10.0,8.0,5.0,250.0,1,1.02
— WHY IS THIS NEEDED?
FPD calculation is critical for inhaler efficacy assessment (AZ, GSK, Chiesi):
• FPD (Fine Particle Dose) is amount of drug with aerodynamic diameter <5 μm
• EFPD (Extra-Fine Particle Dose) is amount of drug <2 μm (important for peripheral lungs)
• FPF (Fine Particle Fraction) is percentage ratio of FPD to total emitted dose
• Allows comparison of different devices and formulations regardless of total dose
• Required for generic equivalence justification
⚠️ CRITICAL:
• Emitted dose must be within 85-115% of label claim
• FPD must exceed minimum therapeutic threshold
• FPF typically ranges 20-50% for modern DPIs
• Mass balance 75-125% confirms chemical analysis validity
• Correction factor is important for accounting incomplete drug extraction from filters
Key features:
• Automatic FPD and EFPD calculation by NGI stages
• Extraction correction factor accounting
• FPF calculation relative to emitted dose
• Mass balance check for data validation
Critical parameters:
• Emitted dose: 85–115% of Label Claim
• FPD: Individual limit (usually >20% of ED)
• FPF: ≥20%
• Mass balance: 75–125%
💡 Usage tips:
1. Use HPLC data, not gravimetric data (if excipients or carrier present)
2. For carrier-based products (lactose), gravimetry is impossible, only chemistry
3. Correctly define stage boundaries for your airflow (30, 60, 90 L/min)
4. EFPD is especially important for small airway disease treatments (asthma)
5. Compare FPD profile with reference product for bioequivalence
⚠️ Note: FPD is a more important clinical parameter than total delivered dose, as large particles (>5 μm) deposit in mouth and throat, having no therapeutic effect in lungs and causing side effects.
Traceability and limitations
- The URS is used as the source document for functional specification, CSV review and later validation work.
- This document does not replace an approved pharmacopoeial monograph, validated analytical method or internal product specification.
- For product-specific limits, the approved customer specification takes priority.
Inhaler Fine Particle Dose Calculator — FS
Inhaler Fine Particle Dose Calculator
The functional specification describes the behaviour of the standalone FUZKK console utility, input-data format, evaluation algorithm and output JSON structure.
Functional flow
- Main() checks the number of arguments.
- If no arguments are provided: PrintHello() prints the description and built-in input.csv example, then RunDemoEvaluation() executes Evaluate() over GetDemoData() and prints demo JSON.
- If two arguments are provided: RunWithFiles(input.csv, output.json) reads CSV, evaluates each record and writes LabWare-compatible JSON.
- LoadData() uses CultureInfo.InvariantCulture and shall not be called in no-arguments mode.
- Evaluate() returns a named tuple with BatchNumber, ProductName, Parameters, CriticalFailCount, WarningCount, Recommendation and RecommendationEN.
- GetIssues() builds messages for ErrorMessage in WARNING/FAIL cases.
Evaluation rules
- PASS: CriticalFailCount = 0 and WarningCount = 0.
- WARNING: CriticalFailCount = 0 and WarningCount > 0.
- FAIL: CriticalFailCount > 0.
- ERROR: exception during reading or processing.
- ErrorMessage remains empty for PASS.
- Limits are embedded in Program.cs; no external limit configuration is required.
Input and fields
BatchNumber,ProductName,Mass_Throat,Mass_Stage1,Mass_Stage2,Mass_Stage3,Mass_Stage4,Mass_Stage5,Mass_Stage6,Mass_Stage7,Mass_MOC,LabelClaim_mcgr,NumberOfActuations,RecoveryCorrectionFactor INH-FPD-2026-001,Fluticasone Propionate DPI,50.0,20.0,15.0,10.0,12.0,15.0,10.0,8.0,5.0,250.0,1,1.02 INH-FPD-2026-002,Budesonide MDI,30.0,10.0,8.0,5.0,15.0,20.0,15.0,10.0,5.0,200.0,2,1.0 INH-FPD-2026-003,Salmeterol DPI,40.0,25.0,20.0,15.0,10.0,12.0,8.0,5.0,2.0,50.0,1,1.05
| Field | Sample |
|---|---|
| BatchNumber | INH-FPD-2026-001 |
| ProductName | Fluticasone Propionate DPI |
| Mass_Throat | 50.0 |
| Mass_Stage1 | 20.0 |
| Mass_Stage2 | 15.0 |
| Mass_Stage3 | 10.0 |
| Mass_Stage4 | 12.0 |
| Mass_Stage5 | 15.0 |
| Mass_Stage6 | 10.0 |
| Mass_Stage7 | 8.0 |
| Mass_MOC | 5.0 |
| LabelClaim_mcgr | 250.0 |
| NumberOfActuations | 1 |
| RecoveryCorrectionFactor | 1.02 |
Output JSON
{
"Header": {
"UtilityName": "Inhaler_FineParticleDose_Calculator",
"Version": "1.0.0",
"Timestamp": "UTC",
"InstrumentID": "FUZKK-QC-WORKSTATION",
"OperatorID": "Admin"
},
"Samples": [
{
"SampleID": "from BatchNumber",
"BatchNumber": "from CSV",
"ProductName": "from CSV",
"TestName": "utility-specific test",
"AnalysisCode": "utility-specific code",
"Status": "PASS | WARNING | FAIL | ERROR",
"StatusCode": "1 | 2 | 0 | -1",
"ErrorMessage": "",
"Description": "Russian recommendation",
"DescriptionEN": "English recommendation",
"Results": [
{
"ParameterName": "parameter",
"ResultValue": 0.0,
"UnitOfMeasure": "unit",
"SpecificationLimit": "limit",
"IsWithinSpec": true
}
]
}
]
}Included in packages
Inhaled Products QC Suite
Inhaled Products QC Suite: FUZKK utility package for CSV→JSON QC checks with EU-first limit priority.
Open