API Reference

Complete API documentation for the Medical Data Validator service.

Base URL
http://localhost:8000/api

Features

  • HIPAA Compliance: PHI/PII detection and privacy protection
  • Medical Standards: ICD-10, LOINC, CPT, FHIR, OMOP validation
  • Data Quality: Completeness, accuracy, and consistency checks
  • File Support: CSV, Excel, JSON, Parquet formats
  • Real-time Validation: Instant feedback on data quality

Authentication

Currently, the API operates without authentication for development. For production deployment, implement appropriate authentication mechanisms.

Security Note: Always use HTTPS in production and implement proper authentication.

Endpoints

Method Endpoint Description
GET /api/health Health check and API status
POST /api/validate/data Validate JSON data
POST /api/validate/file Upload and validate files
POST /api/compliance/check Quick compliance assessment
GET /api/profiles Get validation profiles
GET /api/standards Get medical standards info

Health Check

GET /api/health

Check API status and supported standards.

Response
{
  "status": "healthy",
  "version": "0.1.0",
  "timestamp": "2024-01-15T10:30:00Z",
  "standards_supported": ["icd10", "loinc", "cpt", "icd9", "ndc", "fhir", "omop"]
}
Example
cURL
curl -X GET "http://localhost:8000/api/health"

Validate Data

POST /api/validate/data

Validate structured JSON data for medical compliance.

Request Body
{
  "patient_id": ["001", "002", "003"],
  "age": [30, 45, 28],
  "diagnosis": ["E11.9", "I10", "Z51.11"],
  "ssn": ["123-45-6789", "987-65-4321", "555-12-3456"]
}
Query Parameters
  • detect_phi (boolean): Enable PHI/PII detection (default: true)
  • quality_checks (boolean): Enable data quality checks (default: true)
  • profile (string): Validation profile (clinical_trials, ehr, imaging, lab)
  • standards (array): Medical standards to check (icd10, loinc, cpt, hipaa)
Response
{
  "success": true,
  "is_valid": false,
  "total_issues": 3,
  "error_count": 1,
  "warning_count": 2,
  "info_count": 0,
  "compliance_report": {
    "hipaa": {
      "compliant": false,
      "issues": ["SSN detected in column: ssn"],
      "score": 50
    },
    "icd10": {
      "compliant": true,
      "issues": [],
      "score": 100
    }
  },
  "issues": [
    {
      "severity": "error",
      "description": "SSN detected in column: ssn",
      "column": "ssn",
      "row": null,
      "value": null,
      "rule_name": "PHIDetector"
    }
  ],
  "summary": {
    "total_rows": 3,
    "total_columns": 4,
    "is_valid": false,
    "total_issues": 3
  }
}
Example
cURL
curl -X POST "http://localhost:8000/api/validate/data" \
  -H "Content-Type: application/json" \
  -d '{"patient_id": ["P001"], "age": [30], "diagnosis": ["E11.9"]}'

Validate File

POST /api/validate/file

Upload and validate medical data files (CSV, Excel, JSON, Parquet).

Form Data
  • file: The file to validate
  • detect_phi: Enable PHI detection (true/false)
  • quality_checks: Enable quality checks (true/false)
  • profile: Validation profile
  • standards: Array of standards to check
Supported Formats
  • CSV (.csv)
  • Excel (.xlsx, .xls)
  • JSON (.json)
  • Parquet (.parquet)
File Size Limit

16MB maximum file size

Example
cURL
curl -X POST "http://localhost:8000/api/validate/file" \
  -F "file=@medical_data.csv" \
  -F "detect_phi=true" \
  -F "quality_checks=true"

Compliance Check

POST /api/compliance/check

Quick compliance assessment for medical standards.

Request Body
{
  "patient_id": ["001", "002"],
  "diagnosis": ["E11.9", "I10"],
  "procedure": ["99213", "93010"]
}
Response
{
  "hipaa_compliant": true,
  "icd10_compliant": true,
  "loinc_compliant": false,
  "cpt_compliant": true,
  "fhir_compliant": true,
  "omop_compliant": true,
  "details": {
    "hipaa": {
      "compliant": true,
      "issues": [],
      "score": 100
    }
  }
}

Profiles

GET /api/profiles

Retrieve available validation profiles.

Response
{
  "clinical_trials": "Clinical trial data validation",
  "ehr": "Electronic health records validation",
  "imaging": "Medical imaging metadata validation",
  "lab": "Laboratory data validation"
}

Standards

GET /api/standards

Get detailed information about supported medical standards.

Response
{
  "icd10": {
    "name": "International Classification of Diseases, 10th Revision",
    "version": "2024",
    "authority": "WHO",
    "description": "Standard classification system for diseases and health conditions"
  },
  "loinc": {
    "name": "Logical Observation Identifiers Names and Codes",
    "version": "2.76",
    "authority": "Regenstrief Institute",
    "description": "Standard for identifying medical laboratory observations"
  }
}

Error Handling

All endpoints return consistent error responses.

Standard Error Response
{
  "success": false,
  "error": "Error description",
  "error_type": "ErrorType",
  "traceback": "Full error traceback (in debug mode)"
}
HTTP Status Codes
  • 200: Success
  • 400: Bad Request (invalid data, file type not allowed)
  • 413: Payload Too Large (file too big)
  • 500: Internal Server Error

Rate Limiting

  • Default: 100 requests per minute per IP
  • File uploads: 10 requests per minute per IP
  • Burst: Up to 20 requests in 10 seconds
Rate limits are applied per IP address. For higher limits, contact support.