Current section

Files

Jump to
hl7v2 lib mix tasks hl7v2.coverage.ex
Raw

lib/mix/tasks/hl7v2.coverage.ex

defmodule Mix.Tasks.Hl7v2.Coverage do
@moduledoc """
Prints HL7 v2.5.1 coverage report for the hl7v2 library.
## Usage
mix hl7v2.coverage
"""
use Mix.Task
@shortdoc "Print HL7 v2.5.1 standards coverage report"
@impl Mix.Task
def run(_args) do
summary = HL7v2.Standard.Coverage.coverage_summary()
Mix.shell().info("""
HL7v2 Library — v2.5.1 Coverage Report
=======================================
Segments: #{summary.typed_segment_count} / #{summary.total_segment_count} standard (#{summary.segment_coverage_pct}%)
Types: #{summary.typed_type_count} / #{summary.total_type_count} standard (#{summary.type_coverage_pct}%)
Fields: #{summary.total_typed_fields} declared across typed segments
Raw holes: #{summary.raw_hole_count}
""")
if summary.raw_hole_count > 0 do
Mix.shell().info(" Raw Holes (fields typed as :raw in otherwise typed segments):")
for {seg, field, seq} <- summary.raw_holes do
Mix.shell().info(" #{seg}-#{seq} (#{field})")
end
Mix.shell().info("")
end
Mix.shell().info(
" Typed Segments: #{Enum.join(HL7v2.Standard.Coverage.typed_segments(), ", ")}"
)
Mix.shell().info("")
unsupported = HL7v2.Standard.Coverage.unsupported_types()
if length(unsupported) > 0 do
Mix.shell().info(" Unsupported Types: #{Enum.join(unsupported, ", ")}")
Mix.shell().info("")
end
end
end