def build_fhir_age(cls, imis_medication):
     adult = cls.build_fhir_adult(imis_medication)
     kid = cls.build_fhir_kid(imis_medication)
     if adult == "":
         adult = None
     if kid == "":
         kid = None
     extension = Extension()
     extension.url = "useContextAge"
     extension.valueUsageContext = UsageContext()
     extension.valueUsageContext.code = Coding()
     extension.valueUsageContext.code.code = "age"
     extension.valueUsageContext.valueCodeableConcept = CodeableConcept()
     if adult is not None:
         coding_adult = Coding()
         coding_adult.code = adult
         coding_adult.display = "Adult"
         extension.valueUsageContext.valueCodeableConcept.coding.append(
             coding_adult)
     if kid is not None:
         coding_kid = Coding()
         coding_kid.code = kid
         coding_kid.display = "Kid"
         extension.valueUsageContext.valueCodeableConcept.coding.append(
             coding_kid)
         extension.valueUsageContext.valueCodeableConcept.text = "Adult or Kid"
     return extension
 def build_fhir_gender(cls, imis_medication):
     male = cls.build_fhir_male(imis_medication)
     female = cls.build_fhir_female(imis_medication)
     if male == "":
         male = None
     if female == "":
         female = None
     extension = Extension()
     extension.url = "useContextGender"
     extension.valueUsageContext = UsageContext()
     extension.valueUsageContext.code = Coding()
     extension.valueUsageContext.code.code = "gender"
     extension.valueUsageContext.valueCodeableConcept = CodeableConcept()
     if male is not None:
         coding_male = Coding()
         coding_male.code = male
         coding_male.display = "Male"
         extension.valueUsageContext.valueCodeableConcept.coding.append(
             coding_male)
     if female is not None:
         coding_female = Coding()
         coding_female.code = female
         coding_female.display = "Female"
         extension.valueUsageContext.valueCodeableConcept.coding.append(
             coding_female)
         extension.valueUsageContext.valueCodeableConcept.text = "Male or Female"
     return extension
 def build_fhir_item_type_extension(cls, imis_medication):
     extension = Extension()
     extension.url = "topic"
     extension.valueCodeableConcept = cls.build_codeable_concept(
         "DefinitionTopic",
         "http://terminology.hl7.org/CodeSystem/definition-topic",
         text=imis_medication.type)
     return extension
        def build_extension(fhir_patient, imis_insuree, value):
            extension = Extension()
            if value == "head":
                extension.url = "https://openimis.atlassian.net/wiki/spaces/OP/pages/960069653/FHIR+extension+isHead"
                extension.valueBoolean = imis_insuree.head
            elif value == "validity_from":
                extension.url = "https://openimis.atlassian.net/wiki/spaces/OP/pages/960331779/FHIR+extension+registrationDate"
                if imis_insuree.validity_from is None:
                    extension.valueString = ""
                else:
                    extension.valueString = imis_insuree.validity_from
            elif value == "family.location.code":
                extension.url = "https://openimis.atlassian.net/wiki/spaces/OP/pages/960495619/FHIR+extension+Location"
                if hasattr(imis_insuree,
                           "family") and imis_insuree.family is not None:
                    if imis_insuree.family.location.code is not None:
                        extension.valueString = imis_insuree.family.location.code
                    else:
                        extension.valueString = ""
                else:
                    extension.valueString = ""

            elif value == "education.education":
                extension.url = "https://openimis.atlassian.net/wiki/spaces/OP/pages/960331788/FHIR+extension+Education"
                if hasattr(imis_insuree,
                           "education") and imis_insuree.education is not None:
                    if imis_insuree.education.education is not None:
                        extension.valueString = imis_insuree.education.education
                    else:
                        extension.valueString = ""
                else:
                    extension.valueString = ""
            else:
                extension.url = "https://openimis.atlassian.net/wiki/spaces/OP/pages/960135203/FHIE+extension+Profession"
                if hasattr(
                        imis_insuree,
                        "profession") and imis_insuree.profession is not None:
                    if imis_insuree.profession.profession is not None:
                        extension.valueString = imis_insuree.profession.profession
                    else:
                        extension.valueString = ""
                else:
                    extension.valueString = ""

            fhir_patient.extension.append(extension)
 def build_unit_price_extension(cls, value):
     extension = Extension()
     money = Money()
     extension.url = "unitPrice"
     extension.valueMoney = money
     extension.valueMoney.value = value
     if hasattr(core, 'currency'):
         extension.valueMoney.currency = core.currency
     return extension
    def build_fhir_venue(cls, imis_medication):
        display = ""
        if imis_medication.care_type == "O":
            display = "Out-patient"
        if imis_medication.care_type == "I":
            display = "In-patient"
        if imis_medication.care_type == "B":
            display = "Both"

        extension = Extension()
        if imis_medication.care_type is not None:
            extension.url = "useContextVenue"
            extension.valueUsageContext = UsageContext()
            extension.valueUsageContext.code = Coding()
            extension.valueUsageContext.code.code = "venue"
            extension.valueUsageContext.valueCodeableConcept = CodeableConcept(
            )
            coding_venue = Coding()
            coding_venue.code = imis_medication.care_type
            coding_venue.display = display
            extension.valueUsageContext.valueCodeableConcept.coding.append(
                coding_venue)
            extension.valueUsageContext.valueCodeableConcept.text = "Clinical Venue"
        return extension
 def build_fhir_item_frequency_extension(cls, imis_medication):
     extension = Extension()
     extension.url = "frequency"
     extension.valueInteger = imis_medication.frequency
     return extension
 def build_poverty_status_extension(cls, imis_insuree):
     extension = Extension()
     extension.url = "povertyStatus"
     extension.valueBoolean = imis_insuree.family.poverty
     return extension
 def __build_date_extension(cls, value, name):
     ext_date = Extension()
     ext_date.url = name
     ext_date.valueDate = value.isoformat() if value else None
     return ext_date