Expand description
§cima-rs
Rust library providing access to the AEMPS CIMA (Centro de Información Online de Medicamentos de la AEMPS) nomenclator data and REST API.
§Features
- XML Data Dumps: Download and parse CIMA nomenclator XML files to CSV
- REST API Client: Complete async client for the CIMA REST API
- Medication information (
medicamentos) - Commercial presentations (
presentaciones) - Supply problems (
psuministro) - Clinical descriptions (VMP/VMPP)
- Safety notes and informative materials
- Segmented documents (ficha técnica, prospecto)
- Master data catalogs
- Change logs
- Medication information (
- CLI Tool:
nomenclatorbinary for both CSV conversion and API queries
§Installation
cargo install cima-rs§Usage
§CLI Tool: nomenclator
The nomenclator binary provides two modes of operation:
§CSV Mode: Download and Convert XML to CSV
# Download XML files and convert to CSV
nomenclator csv --output-dir ./output --work-dir ./data
# With custom concurrency
nomenclator csv --concurrency 8This will:
- Download the latest CIMA nomenclator ZIP file
- Extract all XML files
- Parse them in parallel to CSV format
- Generate 20+ CSV files ready for database import
§API Mode: Query REST API
# Get specific medication by registration number
nomenclator api medicamento --nregistro 51347 --presentaciones --activos
# Search medications
nomenclator api search-medicamentos --nombre "Paracetamol" --limit 20
nomenclator api search-medicamentos --laboratorio "Pfizer" --comercializados
# Get presentation details
nomenclator api presentacion --cn 12345678
# Get supply problems
nomenclator api supply-problems
nomenclator api supply-problems --cn 12345678
# Get safety notes
nomenclator api safety-notes --nregistro 51347
# Get changes since a date
nomenclator api changes --desde "01/01/2024"
# Query master data
nomenclator api maestra --tipo pa --nombre "Paracetamol"
nomenclator api maestra --tipo lab --limit 50Available master data types (--tipo):
pa- Principios activos (active ingredients)ff- Formas farmacéuticas (pharmaceutical forms)va- Vías de administración (administration routes)lab- Laboratorios (laboratories)atc- Códigos ATC (ATC codes)
§Rust Library API
use cima_rs::{CimaClient, SearchMedicationsParams};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let client = CimaClient::new()?;
// Get specific medication by registration number
let med = client.get_medication(Some("51347"), None).await?;
println!("Medication: {}", med.name);
// Search medications
let params = SearchMedicationsParams {
name: Some("Paracetamol".to_string()),
..Default::default()
};
let results = client.search_medications(¶ms).await?;
Ok(())
}See examples/query_medicamento.rs for a complete example.
§Multi-CSV Parser (Recommended)
use cima_rs::parser::parse_prescription_xml_to_csvs;
use anyhow::Result;
fn main() -> Result<()> {
parse_prescription_xml_to_csvs("input.xml", "output_dir")?;
Ok(())
}This generates multiple normalized CSV files:
§API Endpoints
All endpoints return structured Rust types with serde serialization support:
get_medication()- Get medication detailssearch_medications()- Search medications with filterssearch_in_technical_sheet()- Search in technical sheetsget_presentation()- Get presentation detailssearch_presentations()- Search presentationsget_all_supply_problems()- Get all supply problemsget_supply_problems()- Get supply problems by CNsearch_clinical_descriptions()- Search clinical descriptionsget_safety_notes()- Get safety notesget_informative_materials()- Get informative materialsget_document_sections()- Get document sectionsget_document_content()- Get document contentget_master_data()- Get master data catalogsget_change_log()- Get change logs
§Requirements
- Rust 1.91+
- Tokio async runtime
§License
See LICENSE file.
Re-exports§
pub use api_client::CimaClient;pub use endpoints::MasterDataParams;pub use endpoints::SearchClinicalDescriptionParams;pub use endpoints::SearchMedicationsParams;pub use endpoints::SearchPresentationsParams;pub use endpoints::TechnicalSheetQuery;pub use models::ActiveIngredient;pub use models::AtcCode;pub use models::AuthorizationStatus;pub use models::ChangeRecord;pub use models::ClinicalDescription;pub use models::Document;pub use models::DocumentType;pub use models::Excipient;pub use models::MasterDataType;pub use models::MasterItem;pub use models::MaterialDocument;pub use models::Medication;pub use models::MedicationSummary;pub use models::PaginatedResponse;pub use models::Photo;pub use models::Presentation;pub use models::PresentationSummary;pub use models::SafetyMaterial;pub use models::SafetyNote;pub use models::Section;pub use models::SupplyProblem;