001package org.hl7.fhir.r4.terminologies;
002
003import org.hl7.fhir.r4.model.Enumerations.PublicationStatus;
004import org.hl7.fhir.r4.model.ValueSet;
005import org.hl7.fhir.utilities.Utilities;
006
007public class ImplicitValueSets {
008
009  public static ValueSet build(String url) {
010    if (Utilities.noString(url))
011      return null;
012    
013    if (url.startsWith("http://snomed.info/sct"))
014      return buildSnomedValueSet(url);
015    if (url.startsWith("http://loinc.org/vs"))
016      return buildLoincValueSet(url);
017    if (url.equals("http://unitsofmeasure.org/vs"))
018      return allUcumValueSet();
019    return null;
020  }
021
022  private static ValueSet buildSnomedValueSet(String url) {
023    return null;
024  }
025
026  private static ValueSet buildLoincValueSet(String url) {
027    if (url.startsWith("http://loinc.org/vs/LL")) {
028      ValueSet vs = new ValueSet();
029      vs.setUrl(url);
030      vs.setStatus(PublicationStatus.ACTIVE);
031      vs.setName("LoincVS"+url.substring(21).replace("-",  ""));
032      vs.setTitle("Loinc Implicit ValueSet for "+url.substring(21));
033      // todo: populate the compose fro the terminology server
034      return vs;   
035    } else if (url.equals("http://loinc.org/vs")) {
036      ValueSet vs = new ValueSet();
037      vs.setUrl(url);
038      vs.setStatus(PublicationStatus.ACTIVE);
039      vs.setName("LoincVSAll");
040      vs.setTitle("Loinc Implicit ValueSet : all codes");
041      // todo: populate the compose for the terminology server
042      return vs;   
043    } else {
044      return null;
045    }
046  }
047
048  private static ValueSet allUcumValueSet() {
049    ValueSet vs = new ValueSet();
050    vs.setUrl("http://unitsofmeasure.org/vs");
051    vs.setStatus(PublicationStatus.ACTIVE);
052    vs.setName("AllUcumCodes");
053    vs.setTitle("All Ucum Codes");
054    vs.getCompose().addInclude().setSystem("http://unitsofmeasure.org");
055    return vs;
056  }
057
058}