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_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
示例#5
0
    def build_fhir_item(cls, fhir_claim, code, item_type, item):
        fhir_item = FHIRClaimItem()
        fhir_item.sequence = FhirUtils.get_next_array_sequential_id(
            fhir_claim.item)
        unit_price = Money()
        unit_price.value = item.price_asked
        if hasattr(core, 'currency'):
            unit_price.currency = core.currency
        fhir_item.unitPrice = unit_price
        fhir_quantity = Quantity()
        fhir_quantity.value = item.qty_provided
        fhir_item.quantity = fhir_quantity
        fhir_item.productOrService = cls.build_simple_codeable_concept(code)
        fhir_item.category = cls.build_simple_codeable_concept(item_type)
        item_explanation_code = R4ClaimConfig.get_fhir_claim_item_explanation_code(
        )
        information = cls.build_fhir_string_information(
            fhir_claim.supportingInfo, item_explanation_code, item.explanation)
        if information:
            fhir_item.informationSequence = [information.sequence]

        extension = Extension()

        if fhir_item.category.text == "item":
            medication = cls.build_medication_extension(extension)
            fhir_item.extension.append(medication)

        elif fhir_item.category.text == "service":
            activity_definition = cls.build_activity_definition_extension(
                extension)
            fhir_item.extension.append(activity_definition)

        fhir_claim.item.append(fhir_item)
    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
示例#7
0
    def build_fhir_item(cls, fhir_claim_response, claim_item, item, type,
                        rejected_reason, imis_claim):
        claim_response_item = ClaimResponseItem()
        claim_response_item.itemSequence = claim_item.sequence

        adjudication = cls.build_fhir_item_adjudication(
            item, rejected_reason, imis_claim)
        claim_response_item.adjudication = adjudication

        extension = Extension()

        if type == "item":
            medication = cls.build_medication_extension(extension)
            claim_response_item.extension.append(medication)

        elif type == "service":
            activity_definition = cls.build_activity_definition_extension(
                extension)
            claim_response_item.extension.append(activity_definition)

        note = cls.build_process_note(fhir_claim_response, item.price_origin)
        if note:
            claim_response_item.noteNumber = [note.number]
        fhir_claim_response.item.append(claim_response_item)
 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_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_date_extension(cls, value, name):
     ext_date = Extension()
     ext_date.url = name
     ext_date.valueDate = value.isoformat() if value else None
     return ext_date