001package org.hl7.fhir.validation.cli.renderers;
002
003import org.hl7.fhir.r5.model.OperationOutcome;
004import org.hl7.fhir.r5.utils.ToolingExtensions;
005
006public class CSVRenderer extends ValidationOutputRenderer {
007
008  @Override
009  public void start(boolean moreThanOne) {
010    super.start(moreThanOne);
011    dst.println("file, line, col, level, message");
012  }
013  
014  @Override
015  public void render(OperationOutcome oo) {
016    String file = ToolingExtensions.readStringExtension(oo, ToolingExtensions.EXT_OO_FILE);
017    for (OperationOutcome.OperationOutcomeIssueComponent issue : oo.getIssue()) {
018      int line = ToolingExtensions.readIntegerExtension(issue, ToolingExtensions.EXT_ISSUE_LINE, -1);
019      int col = ToolingExtensions.readIntegerExtension(issue, ToolingExtensions.EXT_ISSUE_COL, -1);      
020      dst.println(file+", " + (line == -1 ? "" : Integer.toString(line)) + ", " + (col == -1 ? "" : Integer.toString(col))+", "+issue.getSeverity().getDisplay()+", \""+issue.getDetails().getText()+"\"");
021    }
022  }
023  
024}