Class: Openphar::Migrators::JpMigrator

Inherits:
Object
  • Object
show all
Defined in:
lib/openphar/migrators/jp_migrator.rb

Overview

Migrates Japan Pharmacopoeia data to Open Pharmacopoeia ontology format

This class handles the transformation of JP HTML monograph files into individual JSON-LD files and aggregate files following the OP ontology.

Constant Summary collapse

CATEGORIES =

Category mapping for organizing monographs

{
  "crude_drugs" => "crude-drugs",
  "chemical_drugs" => "chemical-drugs",
  "formulations" => "formulations",
  "biologicals" => "biologicals",
  "excipients" => "excipients",
  "vitamins" => "vitamins",
  "amino_acids" => "amino-acids",
  "minerals" => "minerals"
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source_dir:, output_dir:, edition_id: "https://www.openphar.org/data/edition/jp/jp18") ⇒ JpMigrator

Returns a new instance of JpMigrator.

Parameters:

  • source_dir (String)

    Directory containing JP HTML files

  • output_dir (String)

    Output directory for JSON-LD files

  • edition_id (String) (defaults to: "https://www.openphar.org/data/edition/jp/jp18")

    Edition IRI (default: JP18)



30
31
32
33
34
35
36
# File 'lib/openphar/migrators/jp_migrator.rb', line 30

def initialize(source_dir:, output_dir:, edition_id: "https://www.openphar.org/data/edition/jp/jp18")
  @source_dir = source_dir
  @output_dir = output_dir
  @edition_id = edition_id
  @monographs = []
  @stats = { total: 0, success: 0, failed: 0, categories: Hash.new(0) }
end

Instance Attribute Details

#edition_idObject (readonly)

Returns the value of attribute edition_id.



13
14
15
# File 'lib/openphar/migrators/jp_migrator.rb', line 13

def edition_id
  @edition_id
end

#output_dirObject (readonly)

Returns the value of attribute output_dir.



13
14
15
# File 'lib/openphar/migrators/jp_migrator.rb', line 13

def output_dir
  @output_dir
end

#source_dirObject (readonly)

Returns the value of attribute source_dir.



13
14
15
# File 'lib/openphar/migrators/jp_migrator.rb', line 13

def source_dir
  @source_dir
end

Instance Method Details

#runHash

Run the migration

Returns:

  • (Hash)

    Statistics about the migration



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/openphar/migrators/jp_migrator.rb', line 40

def run
  puts "Starting JP migration..."
  puts "  Source: #{source_dir}"
  puts "  Output: #{output_dir}"

  # Ensure output directories exist
  ensure_output_directories

  # Process HTML files
  process_html_files

  # Generate aggregate files
  generate_aggregate_files

  # Print statistics
  print_statistics

  @stats
end