Inhaler_DDU_Uniformity_Analyzer
Inhaler DDU Uniformity Analyzer
ℹ️ Utility checks dose uniformity across activation series (USP <601>):
• Mean dose (85-115% of label claim)
• RSD (≤6.0%)
• Min/Max deviation of each dose
• First vs Last dose ratio
⚠️ CRITICAL: Dose non-uniformity leads to under-treatment or overdose!
Especially important for first and last doses in canister.
Usage:
InhalerDDUUniformityAnalyzer.exe → demo mode (console output)
InhalerDDUUniformityAnalyzer.exe input.csv output.json → evaluate your data
Input format:
BatchNumber,ProductName,LabelClaim_mcgr,Dose_1,Dose_2,Dose_3,Dose_4,Dose_5,Dose_6,Dose_7,Dose_8,Dose_9,Dose_10
Example:
INH-DDU-2026-001,Salbutamol MDI 100mcg,100.0,98.0,99.5,97.0,98.5,100.0,101.0,99.0,98.0,97.5,98.5
— WHY IS THIS NEEDED?
DDU control is critical for inhalers (AZ, GSK, BI):
• Ensures patient receives exact drug dose at each actuation
• Identifies suspension (MDI) or powder (DPI) issues
• Controls stability of metering valve or blister
• Required by regulators for product registration
⚠️ CRITICAL:
• Mean dose must be within 85-115% of label claim
• RSD ≤6.0% ensures high reproducibility
• Each individual dose must not exceed 85-115% limits
• First/Last dose ratio shows stability throughout product life
• For DPI, dose dependence on patient airflow is important
Key features:
• Statistical analysis of 10-dose series (First-Middle-Last)
• RSD calculation and individual deviation check
• Assessment of dose drop-off trend at end-of-life
• Compliance with USP <601> and Ph.Eur. 2.9.5
Critical parameters:
• Mean dose: 85–115% of Label Claim
• RSD: ≤6.0%
• Min dose: ≥85%
• Max dose: ≤115%
• Ratio First/Last: 0.8–1.2
💡 Usage tips:
1. Use proper filter rinsing technique for complete dose collection
2. For MDIs, account for "prime" doses before test
3. For DPIs, test at standard flow rate (e.g., 60 L/min)
4. If RSD is high, check suspension homogeneity or powder dispersion
5. Compare DDU profiles of different batches for production process control
⚠️ Note: Unlike tablets where dose is fixed in unit, inhaler dose depends on device mechanics and aerosol physics. DDU test simulates real use, checking device at extreme points of its lifecycle (beginning and end).
input.csv
BatchNumber,ProductName,LabelClaim_mcgr,Dose_1,Dose_2,Dose_3,Dose_4,Dose_5,Dose_6,Dose_7,Dose_8,Dose_9,Dose_10 INH-DDU-2026-001,Salbutamol MDI 100mcg,100.0,98.0,99.5,97.0,98.5,100.0,101.0,99.0,98.0,97.5,98.5 INH-DDU-2026-002,Budesonide DPI 200mcg,200.0,190.0,195.0,185.0,192.0,205.0,210.0,180.0,175.0,170.0,165.0 INH-DDU-2026-003,Fluticasone MDI 50mcg,50.0,48.0,49.0,47.5,48.5,50.0,51.0,49.5,48.0,47.0,48.0
Inhaler DDU Uniformity Analyzer — URS and FS
The English user requirements and functional specification are provided below.
Inhaler DDU Uniformity Analyzer — URS
Inhaler DDU Uniformity Analyzer
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,LabelClaim_mcgr,Dose_1,Dose_2,Dose_3,Dose_4,Dose_5,Dose_6,Dose_7,Dose_8,Dose_9,Dose_10 INH-DDU-2026-001,Salbutamol MDI 100mcg,100.0,98.0,99.5,97.0,98.5,100.0,101.0,99.0,98.0,97.5,98.5 INH-DDU-2026-002,Budesonide DPI 200mcg,200.0,190.0,195.0,185.0,192.0,205.0,210.0,180.0,175.0,170.0,165.0 INH-DDU-2026-003,Fluticasone MDI 50mcg,50.0,48.0,49.0,47.5,48.5,50.0,51.0,49.5,48.0,47.0,48.0
input.csv fields
| Field | Sample |
|---|---|
| BatchNumber | INH-DDU-2026-001 |
| ProductName | Salbutamol MDI 100mcg |
| LabelClaim_mcgr | 100.0 |
| Dose_1 | 98.0 |
| Dose_2 | 99.5 |
| Dose_3 | 97.0 |
| Dose_4 | 98.5 |
| Dose_5 | 100.0 |
| Dose_6 | 101.0 |
| Dose_7 | 99.0 |
| Dose_8 | 98.0 |
| Dose_9 | 97.5 |
| Dose_10 | 98.5 |
Utility description
Inhaler DDU Uniformity Analyzer — Delivered Dose Uniformity Analyzer
Inhaler DDU Uniformity Analyzer — Delivered Dose Uniformity Analyzer
ℹ️ Utility checks dose uniformity across activation series (USP <601>):
• Mean dose (85-115% of label claim)
• RSD (≤6.0%)
• Min/Max deviation of each dose
• First vs Last dose ratio
⚠️ CRITICAL: Dose non-uniformity leads to under-treatment or overdose!
Especially important for first and last doses in canister.
Usage:
InhalerDDUUniformityAnalyzer.exe → demo mode (console output)
InhalerDDUUniformityAnalyzer.exe input.csv output.json → evaluate your data
Input format:
BatchNumber,ProductName,LabelClaim_mcgr,Dose_1,Dose_2,Dose_3,Dose_4,Dose_5,Dose_6,Dose_7,Dose_8,Dose_9,Dose_10
Example:
INH-DDU-2026-001,Salbutamol MDI 100mcg,100.0,98.0,99.5,97.0,98.5,100.0,101.0,99.0,98.0,97.5,98.5
— WHY IS THIS NEEDED?
DDU control is critical for inhalers (AZ, GSK, BI):
• Ensures patient receives exact drug dose at each actuation
• Identifies suspension (MDI) or powder (DPI) issues
• Controls stability of metering valve or blister
• Required by regulators for product registration
⚠️ CRITICAL:
• Mean dose must be within 85-115% of label claim
• RSD ≤6.0% ensures high reproducibility
• Each individual dose must not exceed 85-115% limits
• First/Last dose ratio shows stability throughout product life
• For DPI, dose dependence on patient airflow is important
Key features:
• Statistical analysis of 10-dose series (First-Middle-Last)
• RSD calculation and individual deviation check
• Assessment of dose drop-off trend at end-of-life
• Compliance with USP <601> and Ph.Eur. 2.9.5
Critical parameters:
• Mean dose: 85–115% of Label Claim
• RSD: ≤6.0%
• Min dose: ≥85%
• Max dose: ≤115%
• Ratio First/Last: 0.8–1.2
💡 Usage tips:
1. Use proper filter rinsing technique for complete dose collection
2. For MDIs, account for "prime" doses before test
3. For DPIs, test at standard flow rate (e.g., 60 L/min)
4. If RSD is high, check suspension homogeneity or powder dispersion
5. Compare DDU profiles of different batches for production process control
⚠️ Note: Unlike tablets where dose is fixed in unit, inhaler dose depends on device mechanics and aerosol physics. DDU test simulates real use, checking device at extreme points of its lifecycle (beginning and end).
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 DDU Uniformity Analyzer — FS
Inhaler DDU Uniformity Analyzer
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,LabelClaim_mcgr,Dose_1,Dose_2,Dose_3,Dose_4,Dose_5,Dose_6,Dose_7,Dose_8,Dose_9,Dose_10 INH-DDU-2026-001,Salbutamol MDI 100mcg,100.0,98.0,99.5,97.0,98.5,100.0,101.0,99.0,98.0,97.5,98.5 INH-DDU-2026-002,Budesonide DPI 200mcg,200.0,190.0,195.0,185.0,192.0,205.0,210.0,180.0,175.0,170.0,165.0 INH-DDU-2026-003,Fluticasone MDI 50mcg,50.0,48.0,49.0,47.5,48.5,50.0,51.0,49.5,48.0,47.0,48.0
| Field | Sample |
|---|---|
| BatchNumber | INH-DDU-2026-001 |
| ProductName | Salbutamol MDI 100mcg |
| LabelClaim_mcgr | 100.0 |
| Dose_1 | 98.0 |
| Dose_2 | 99.5 |
| Dose_3 | 97.0 |
| Dose_4 | 98.5 |
| Dose_5 | 100.0 |
| Dose_6 | 101.0 |
| Dose_7 | 99.0 |
| Dose_8 | 98.0 |
| Dose_9 | 97.5 |
| Dose_10 | 98.5 |
Output JSON
{
"Header": {
"UtilityName": "Inhaler_DDU_Uniformity_Analyzer",
"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