use of org.hl7.fhir.r4.formats.XmlParser in project org.hl7.fhir.core by hapifhir.
the class IEEE11073Convertor method generateLoincMdcMap.
private static ConceptMap generateLoincMdcMap(CodeSystem mdc, String dst, String src) throws IOException, FHIRException {
ConceptMap cm = new ConceptMap();
cm.setId("loinc-mdc");
cm.setUrl("http:/???/fhir/ConceptMap/loinc-mdc");
cm.setVersion("[todo]");
cm.setName("LoincMdcCrossMap");
cm.setTitle("Cross Map between LOINC and MDC");
cm.setStatus(PublicationStatus.DRAFT);
cm.setExperimental(true);
cm.setDateElement(new DateTimeType());
cm.setPublisher("HL7, Inc");
ContactDetail cd = cm.addContact();
cd.setName("LOINC + IEEE");
ContactPoint cp = cd.addTelecom();
cp.setSystem(ContactPointSystem.URL);
cp.setValue("http://loinc.org");
cm.setDescription("A Cross Map between the LOINC and MDC Code systems");
cm.setPurpose("To implementers map between medical device codes and LOINC codes");
cm.setCopyright("This content LOINC \u00ae is copyright \u00a9 1995 Regenstrief Institute, Inc. and the LOINC Committee, and available at no cost under the license at http://loinc.org/terms-of-use");
cm.setSource(new UriType("http://loinc.org/vs"));
cm.setTarget(new UriType(MDC_ALL_VALUES));
ConceptMapGroupComponent g = cm.addGroup();
g.setSource("urn:iso:std:iso:11073:10101");
g.setTarget("http://loinc.org");
CSVReader csv = new CSVReader(new FileInputStream(src));
csv.readHeaders();
while (csv.line()) {
SourceElementComponent e = g.addElement();
e.setCode(csv.cell("IEEE_CF_CODE10"));
e.setDisplay(csv.cell("IEEE_DESCRIPTION"));
TargetElementComponent t = e.addTarget();
t.setEquivalence(ConceptMapEquivalence.EQUIVALENT);
t.setCode(csv.cell("LOINC_NUM"));
t.setDisplay(csv.cell("LOINC_LONG_COMMON_NAME"));
}
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(dst, "conceptmap-" + cm.getId() + ".xml")), cm);
System.out.println("Done");
return cm;
}
use of org.hl7.fhir.r4.formats.XmlParser in project org.hl7.fhir.core by hapifhir.
the class IEEE11073Convertor method generateMDC.
public static CodeSystem generateMDC(String src, String dst, UcumService ucum) throws IOException, FHIRException {
CSVReader csv = new CSVReader(new FileInputStream(src));
csv.readHeaders();
CodeSystem cs = new CodeSystem();
Map<String, String> ucumIssues = new HashMap<String, String>();
int errorCount = 0;
cs.setId("MDC");
cs.setUrl("urn:iso:std:iso:11073:10101");
cs.setVersion("[todo]");
cs.setName("11073:10101 codes for the FHIR community");
cs.setStatus(PublicationStatus.ACTIVE);
cs.setExperimental(false);
cs.setDateElement(new DateTimeType());
cs.setPublisher("HL7 (FHIR Project)");
ContactDetail cd = cs.addContact();
ContactPoint cp = cd.addTelecom();
cp.setSystem(ContactPointSystem.URL);
cp.setValue("http://ieee?");
cs.setDescription("1073 Codes for the FHIR community (generated from the Rosetta data");
Identifier i = new Identifier();
cs.setIdentifier(i);
i.setSystem("urn:ietf:rfc:3986");
i.setValue("urn:oid:2.16.840.1.113883.6.24");
cs.setCaseSensitive(false);
cs.setContent(CodeSystemContentMode.COMPLETE);
cs.addProperty().setCode("ucum").setDescription("UCUM units associated with Concept").setType(PropertyType.STRING);
cs.addProperty().setCode("unit").setDescription("MDC units associated with Concept").setType(PropertyType.STRING);
cs.addProperty().setCode("refid").setDescription("MDC Reference Id for Concept").setType(PropertyType.CODE);
Set<String> codes = new HashSet<String>();
while (csv.line()) {
if (csv.has("CF_CODE10")) {
String code = csv.cell("CF_CODE10");
if (codes.contains(code))
System.out.println("Duplicate Code " + code);
else {
codes.add(code);
ConceptDefinitionComponent c = cs.addConcept();
c.setCode(code);
c.setDisplay(csv.cell("Common Term"));
c.setDefinition(csv.cell("Term Description"));
String vd = csv.cell("Vendor_Description");
if (!c.hasDefinition())
c.setDefinition(vd);
if (!c.hasDisplay())
c.setDisplay(vd);
String refid = csv.cell("REFID");
c.addProperty().setCode("refid").setValue(new CodeType().setValue(refid));
if (csv.has("Synonym"))
c.addDesignation().setValue(csv.cell("Synonym")).setUse(new Coding().setSystem("http://hl7.org/fhir/designation-use").setCode("synonym"));
if (csv.has("Acronym"))
c.addDesignation().setValue(csv.cell("Acronym")).setUse(new Coding().setSystem("http://hl7.org/fhir/designation-use").setDisplay("acronym"));
if (csv.has("Systematic Name")) {
String sysName = csv.cell("Systematic Name");
if (!c.hasDefinition())
c.setDefinition(sysName);
c.addDesignation().setValue(sysName).setUse(new Coding().setSystem("http://hl7.org/fhir/designation-use").setCode("structured-name"));
}
if (csv.has("UOM_MDC"))
c.addProperty().setCode("unit").setValue(new StringType().setValue(csv.cell("UOM_MDC")));
if (csv.has("UOM_UCUM")) {
CommaSeparatedStringBuilder ul = new CommaSeparatedStringBuilder();
for (String u : csv.cell("UOM_UCUM").split(" ")) {
String msg = ucum.validate(u);
if (msg != null) {
errorCount++;
ucumIssues.put(u, msg);
} else
ul.append(u);
}
if (ul.length() > 0)
c.addProperty().setCode("ucum").setValue(new StringType().setValue(ul.toString()));
}
}
}
}
csv.close();
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path(dst, "codesystem-" + cs.getId() + ".xml")), cs);
System.out.println(errorCount + "UCUM errors");
for (String u : sorted(ucumIssues.keySet())) System.out.println("Invalid UCUM code: " + u + " because " + ucumIssues.get(u));
return cs;
}
use of org.hl7.fhir.r4.formats.XmlParser in project org.hl7.fhir.core by hapifhir.
the class ISO21090Importer method generateValueSet.
private void generateValueSet(EnumValueSet evs) throws Exception {
ValueSet bvs = ctxt.fetchResource(ValueSet.class, evs.getTemplate());
if (bvs == null)
throw new Exception("Did not find template value set " + evs.getTemplate());
ValueSet vs = bvs.copy();
vs.getCompose().getInclude().clear();
vs.getIdentifier().clear();
vs.setName("ISO 20190 " + evs.getName() + " Enumeration");
vs.setId(evs.getName());
vs.setUrl("http://hl7.org/fhir/iso21090/ValueSet/" + vs.getId());
vs.setDate(new Date());
vs.setExperimental(false);
ConceptSetComponent inc = vs.getCompose().addInclude().setSystem(evs.getSystem());
for (String code : evs.getCodes()) {
inc.addConcept().setCode(code);
}
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path("[tmp]", "iso21090\\ValueSet-" + evs.getName() + ".xml")), vs);
}
use of org.hl7.fhir.r4.formats.XmlParser in project org.hl7.fhir.core by hapifhir.
the class ISO21090Importer method generateType.
private void generateType(DataType dt) throws Exception {
StructureDefinition sd = new StructureDefinition();
sd.setId(dt.getName());
sd.setUrl("http://hl7.org/fhir/iso21090/StructureDefinition/" + sd.getId());
sd.setName(dt.getName() + " data type");
sd.setStatus(PublicationStatus.ACTIVE);
sd.setExperimental(false);
sd.setPublisher("HL7 / ISO");
sd.setDate(new Date());
sd.setDescription(dt.getDoco());
sd.setKind(StructureDefinitionKind.LOGICAL);
sd.setAbstract(Utilities.existsInList(dt.getName(), "HXIT", "QTY"));
sd.setType("Element");
if (dt.getParent() == null)
sd.setBaseDefinition("http://hl7.org/fhir/StructureDefinition/Element");
else
sd.setBaseDefinition("http://hl7.org/fhir/iso21090/StructureDefinition/" + dt.getParent());
sd.setDerivation(TypeDerivationRule.SPECIALIZATION);
ElementDefinition ed = sd.getDifferential().addElement();
ed.setPath(dt.getName());
produceProperties(sd.getDifferential().getElement(), dt.getName(), dt.getProperties(), true, false);
produceProperties(sd.getDifferential().getElement(), dt.getName(), dt.getProperties(), false, false);
ed = sd.getSnapshot().addElement();
ed.setPath(dt.getName());
if (dt.getParent() != null)
addParentProperties(sd.getSnapshot().getElement(), dt.getName(), dt.getParent(), true, true);
produceProperties(sd.getSnapshot().getElement(), dt.getName(), dt.getProperties(), true, true);
if (dt.getParent() != null)
addParentProperties(sd.getSnapshot().getElement(), dt.getName(), dt.getParent(), false, true);
produceProperties(sd.getSnapshot().getElement(), dt.getName(), dt.getProperties(), false, true);
ed.getBase().setPath(ed.getPath()).setMin(ed.getMin()).setMax(ed.getMax());
new XmlParser().setOutputStyle(OutputStyle.PRETTY).compose(new FileOutputStream(Utilities.path("[tmp]", "iso21090\\StructureDefinition-" + dt.getName() + ".xml")), sd);
}
use of org.hl7.fhir.r4.formats.XmlParser in project org.hl7.fhir.core by hapifhir.
the class UTGCaseSensitivePopulator method scanFolders.
private void scanFolders(File folder, Bundle bundle) throws FileNotFoundException, IOException {
Calendar today = Calendar.getInstance();
Date dt = today.getTime();
today.set(Calendar.HOUR_OF_DAY, 0);
Date d = today.getTime();
System.out.println("Scan " + folder.getAbsolutePath());
for (File f : folder.listFiles()) {
if (f.isDirectory() && !f.getName().equals("retired")) {
scanFolders(f, bundle);
} else if (f.getName().endsWith(".xml")) {
processFile(f, bundle, new XmlParser(), d, dt);
} else if (f.getName().endsWith(".json")) {
processFile(f, bundle, new JsonParser(), d, dt);
}
}
}
Aggregations