001package org.hl7.fhir.r5.renderers.spreadsheets;
002
003import java.io.OutputStream;
004
005import org.apache.poi.ss.usermodel.Row;
006import org.apache.poi.ss.usermodel.Sheet;
007import org.hl7.fhir.r5.context.IWorkerContext;
008import org.hl7.fhir.r5.model.CanonicalResource;
009import org.hl7.fhir.r5.model.CodeableConcept;
010import org.hl7.fhir.r5.model.ContactDetail;
011import org.hl7.fhir.r5.model.ElementDefinition;
012import org.hl7.fhir.r5.model.Identifier;
013import org.hl7.fhir.r5.model.StructureDefinition;
014import org.hl7.fhir.r5.model.StructureDefinition.StructureDefinitionMappingComponent;
015import org.hl7.fhir.r5.renderers.DataRenderer;
016
017public class CanonicalSpreadsheetGenerator extends SpreadsheetGenerator {
018
019  public CanonicalSpreadsheetGenerator(IWorkerContext context) {
020    super(context);
021  }
022
023  protected Sheet renderCanonicalResource(CanonicalResource cr) {
024    Sheet sheet = makeSheet("Metadata");
025
026    Row headerRow = sheet.createRow(0);
027    addCell(headerRow, 0, "Property", styles.get("header"));
028    addCell(headerRow, 1, "Value", styles.get("header"));
029
030    addMetadataRow(sheet, "URL", cr.getUrl());
031    for (Identifier id : cr.getIdentifier()) {
032      addMetadataRow(sheet, "Identifier", dr.display(id));
033    }
034    addMetadataRow(sheet, "Version", cr.getVersion());
035    addMetadataRow(sheet, "Name", cr.getName());
036    addMetadataRow(sheet, "Title", cr.getTitle());
037    addMetadataRow(sheet, "Status", cr.getStatusElement().asStringValue());
038    addMetadataRow(sheet, "Experimental", cr.getExperimentalElement().asStringValue());
039    addMetadataRow(sheet, "Date", cr.getDateElement().asStringValue());
040    addMetadataRow(sheet, "Publisher", cr.getPublisher());
041    for (ContactDetail c : cr.getContact()) {
042      addMetadataRow(sheet, "Contact", dr.display(c));
043    }
044    for (CodeableConcept j : cr.getJurisdiction()) {
045      addMetadataRow(sheet, "Jurisdiction", dr.display(j));
046    }
047
048    addMetadataRow(sheet, "Description", cr.getDescription());
049    addMetadataRow(sheet, "Purpose", cr.getPurpose());
050    addMetadataRow(sheet, "Copyright", cr.getCopyright());
051    configureSheet(sheet);
052    return sheet;
053  }
054
055  private void configureSheet(Sheet sheet) {
056    sheet.setColumnWidth(0, columnPixels(15));
057    sheet.setColumnWidth(1, columnPixels(80));
058  }
059
060  protected void addMetadataRow(Sheet sheet, String name, String value) {
061    Row row = sheet.createRow(sheet.getLastRowNum()+1);
062    addCell(row, 0, name, styles.get("body"));
063    addCell(row, 1, value);
064  }
065
066
067  
068}