
001package org.hl7.fhir.r5.renderers.spreadsheets; 002 003import java.io.FileOutputStream; 004 005import org.apache.poi.ss.usermodel.Sheet; 006import org.hl7.fhir.r5.context.IWorkerContext; 007import org.hl7.fhir.r5.context.SimpleWorkerContext; 008import org.hl7.fhir.r5.model.ConceptMap; 009import org.hl7.fhir.r5.model.ConceptMap.ConceptMapGroupComponent; 010import org.hl7.fhir.r5.model.ConceptMap.SourceElementComponent; 011import org.hl7.fhir.r5.model.ConceptMap.TargetElementComponent; 012import org.hl7.fhir.utilities.MarkedToMoveToAdjunctPackage; 013 014@MarkedToMoveToAdjunctPackage 015public class ConceptMapSpreadsheetGenerator extends CanonicalSpreadsheetGenerator { 016 017 018 public ConceptMapSpreadsheetGenerator(IWorkerContext context) { 019 super(context); 020 } 021 022 public boolean canGenerate(ConceptMap cm) { 023 return true; 024 } 025 026 public ConceptMapSpreadsheetGenerator renderConceptMap(ConceptMap cm) { 027 addConceptMapMetadata(renderCanonicalResource(cm, false), cm); 028 int i = 0; 029 for (ConceptMapGroupComponent grp : cm.getGroup()) { 030 renderGroup(grp, i); 031 i++; 032 } 033 return this; 034 } 035 036 private void addConceptMapMetadata(Sheet sheet, ConceptMap cm) { 037 if (cm.hasSourceScope()) { 038 addMetadataRow(sheet, "Source", cm.getSourceScope().primitiveValue()); 039 } 040 if (cm.hasTargetScope()) { 041 addMetadataRow(sheet, "Target", cm.getTargetScope().primitiveValue()); 042 } 043 } 044 045 private void renderGroup(ConceptMapGroupComponent grp, int i) { 046 Sheet sheet = makeSheet("Mapping Table "+Integer.toString(i)); 047 addHeaders(sheet, "Source", "Display", "Relationship", "Target", "Display"); 048 addRow(sheet, grp.getSource(), "", "", grp.getTarget(), ""); 049 for (SourceElementComponent s : grp.getElement()) { 050 for (TargetElementComponent t : s.getTarget()) { 051 addRow(sheet, s.getCode(), s.getDisplay(), t.getRelationshipElement().asStringValue(), t.getCode(), t.getDisplay()); 052 } 053 } 054 } 055 056}