Download the PHP package thibitisha/kmpdc-seeder without Composer
On this page you can find all versions of the php package thibitisha/kmpdc-seeder. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download thibitisha/kmpdc-seeder
More information about thibitisha/kmpdc-seeder
Files in thibitisha/kmpdc-seeder
Package kmpdc-seeder
Short Description Laravel package to seed KMPDC practitioner data
License MIT
Informations about the package kmpdc-seeder
๐ฉบ KMPDC Seeder
A Laravel 12+ package for scraping, cleaning, and importing practitioner data from the Kenya Medical Practitioners and Dentists Council (KMPDC) master register.
This package is designed for:
- ๐งโ๐ซ Teaching structured data ingestion and seeding in Laravel
๐ Features
โ
Scrapes KMPDC register HTML into structured CSVs
โ
Extracts & normalizes:
- Practitioner details, qualifications, degrees, institutions
โ Imports structured data into related tables
โ Works seamlessly with Eloquent models
๐ฆ Installation
`
๐งฉ Database Schema
The package models relationships between practitioners, qualifications, degrees, institutions, and related entities.
๐ Notes
- All inserts and relationships are handled via Eloquent models
๐งฉ Model Setup & Relationships
Before running the import commands, ensure that all Eloquent models and their respective relationships are correctly defined according to the database schema provided above.
Each model should reflect its table structure and foreign key relationships.
โ ๏ธ Note: the $fillable propery should also be defined in each model
For example:
-
PractitionerbelongsToโStatus,Speciality,SubSpecialityhasManyโContact,License,Qualification,PractitionerDocument,VerificationLog
-
QualificationbelongsToโPractitioner,Degree,Institution
-
SubSpecialitybelongsToโSpeciality
-
LicensebelongsToโPractitionerhasManyโPayment
These relationships are essential for the import command to correctly associate records during data seeding. Ensure that:
- Foreign keys are properly defined in migrations.
- Model relationships use typed relationship methods (as required in Laravel 12).
- Nullable foreign keys (e.g.,
speciality_id,sub_speciality_id) are handled gracefully to avoid integrity constraint violations.
โ ๏ธ Note: The package assumes these model relationships exist and are correctly implemented. Missing or incorrectly defined relationships may cause the import process to fail or produce inconsistent data.
๐ Workflow Overview
This package processes practitioner data in three main stages:
| Step | Command | Input โ Output | Description |
|---|---|---|---|
| ๐งญ 1. Sync | php artisan kmpdc:sync |
Web data โ timestamped CSV file | Crawls the KMPDC register and generates a timestamped CSV file containing all practitioners' details (name, registration number, qualifications, address, status, speciality, etc.). |
| ๐งฎ 2. Extract | php artisan kmpdc:extract |
CSV โ JSON files | Parses the latest CSV, extracts structured data (degrees, institutions, statuses, specialities), and saves normalized JSON files. |
| ๐ฅ 3. Import | php artisan kmpdc:import |
JSON files โ Database | Imports structured data into your Laravel models, preserving relationships and handling duplicates safely. |
๐งฉ Run in this order:
sync โ extract โ import
๐งญ Step 1 โ Sync (Generate CSV)
The sync command crawls the KMPDC register and saves a timestamped CSV file to your Laravel storage directory.
`
Output Example:
Each run produces a uniquely named file based on the timestamp, ensuring previous syncs remain preserved.
Included columns:
- Fullname
- Registration Number
- Address
- Qualifications
- Discipline / Speciality
- Sub-speciality
- Status
- Profile link
๐งฎ Step 2 โ Extract (Generate JSON)
The extract command reads the latest timestamped CSV and produces clean, structured JSON files.
๐ฅ Step 3 โ Import (Save to Database)
Imports the normalized JSON into your relational schema.
๐ง Verify Imports
You can verify successful import via Tinker:
Examples
๐ค Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/my-feature) - Commit your changes (
git commit -m 'Add my feature') - Push to your branch (
git push origin feature/my-feature) - Open a Pull Request ๐
๐๏ธ Acknowledgement & Disclaimer
This package utilizes publicly accessible practitioner data from the
official Kenya Medical Practitioners and Dentists Council (KMPDC) website.
The author, KDBZ, is not affiliated with, endorsed, or sponsored by KMPDC.
All practitioner data, formats, and associated intellectual property remain the exclusive property of KMPDC.
This project is provided solely for educational, analytical, and research purposes.
It is not intended for redistribution, resale, or use in any commercial or official capacity.
Users are responsible for ensuring that their use of this tool complies with:
- The KMPDC websiteโs terms of service
- Applicable data protection and privacy laws
- Relevant ethical and professional standards
For any commercial or institutional use, explicit authorization should be sought directly from KMPDC.
๐ License
This package is open-sourced software licensed under the MIT license.
Author: KDBZ Repository: https://github.com/kdbz/kmpdc-seeder
All versions of kmpdc-seeder with dependencies
symfony/dom-crawler Version ^7.0
symfony/css-selector Version ^7.0
league/csv Version ^9.16