C#解析FHIR包-读取资源

C#解析FHIR包-读取资源,c#,sql,hl7-fhir,fhir-net-api,C#,Sql,Hl7 Fhir,Fhir Net Api,我是FHIR新手,需要帮助解析C#中的FHIR包(xml)。我可以从捆绑包中的合成资源中获取患者或组织资源的URL,但需要将资源的值(例如,患者的姓名)存储到变量中,以便使用它们,例如,将它们存储到SQL数据库中。你能帮我吗?提前谢谢 <Bundle xmlns="http://hl7.org/fhir"> <id value="0428d416-149e-48a4-977c-394887b3d85c" /> <meta>

我是FHIR新手,需要帮助解析C#中的FHIR包(xml)。我可以从捆绑包中的合成资源中获取患者或组织资源的URL,但需要将资源的值(例如,患者的姓名)存储到变量中,以便使用它们,例如,将它们存储到SQL数据库中。你能帮我吗?提前谢谢

<Bundle xmlns="http://hl7.org/fhir">
<id value="0428d416-149e-48a4-977c-394887b3d85c" />
<meta>
    <lastUpdated value="2021-04-06T08:30:00Z" />
    <profile value="https://fhir.kbv.de/StructureDefinition/KBV_PR_ERP_Bundle|1.0.1" />
</meta>
<identifier>
    <system value="https://gematik.de/fhir/NamingSystem/PrescriptionID" />
    <value value="160.100.000.000.002.36" />
</identifier>
<type value="document" />
<timestamp value="2021-04-06T08:30:00Z" />
<entry>
    <fullUrl value="http://pvs.praxis.local/fhir/Composition/a054c2f3-0123-4d33-a0b3-bedec2f7d1ea" />
    <resource>
        <Composition>
            <id value="a054c2f3-0123-4d33-a0b3-bedec2f7d1ea" />
            <meta>
                <profile value="https://fhir.kbv.de/StructureDefinition/KBV_PR_ERP_Composition|1.0.1" />
            </meta>
            <extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_FOR_Legal_basis">
                <valueCoding>
                    <system value="https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_KBV_STATUSKENNZEICHEN" />
                    <code value="00" />
                </valueCoding>
            </extension>
            <status value="final" />
            <type>
                <coding>
                    <system value="https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_KBV_FORMULAR_ART" />
                    <code value="e16A" />
                </coding>
            </type>
            <subject>
                <reference value="Patient/512ab5bc-a7ab-4fd7-81cc-16a594f747a6" />
            </subject>
            <date value="2021-04-05T08:00:00Z" />
            <author>
                <reference value="Practitioner/e33d2afd-44c8-462b-80e5-52dbe5ebf359" />
                <type value="Practitioner" />
            </author>
            <author>
                <type value="Device" />
                <identifier>
                    <system value="https://fhir.kbv.de/NamingSystem/KBV_NS_FOR_Pruefnummer" />
                    <value value="Y/410/2107/36/999" />
                </identifier>
            </author>
            <title value="elektronische Arzneimittelverordnung" />
            <custodian>
                <reference value="Organization/d2b30a70-9830-4968-ab97-688472b6f9a3" />
            </custodian>
            <section>
                <code>
                    <coding>
                        <system value="https://fhir.kbv.de/CodeSystem/KBV_CS_ERP_Section_Type" />
                        <code value="Prescription" />
                    </coding>
                </code>
                <entry>
                    <!--  Referenz auf Verordnung (MedicationRequest)  -->
                    <reference value="MedicationRequest/06dc1594-509a-4f4c-ada7-dfd477a02d86" />
                </entry>
            </section>
            <section>
                <code>
                    <coding>
                        <system value="https://fhir.kbv.de/CodeSystem/KBV_CS_ERP_Section_Type" />
                        <code value="Coverage" />
                    </coding>
                </code>
                <entry>
                    <!--  Referenz auf Krankenkasse/Kostenträger   -->
                    <reference value="Coverage/df0f2536-97b9-4bae-99cc-83ba2e8371e4" />
                </entry>
            </section>
        </Composition>
    </resource>
</entry>
<entry>
    <fullUrl value="http://pvs.praxis.local/fhir/MedicationRequest/06dc1594-509a-4f4c-ada7-dfd477a02d86" />
    <resource>
        <MedicationRequest>
            <!-- Beispiel MedicationRequest für eine PZN-Verordnung  -->
            <id value="06dc1594-509a-4f4c-ada7-dfd477a02d86" />
            <meta>
                <profile value="https://fhir.kbv.de/StructureDefinition/KBV_PR_ERP_Prescription|1.0.1" />
            </meta>
            <extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_StatusCoPayment">
                <valueCoding>
                    <system value="https://fhir.kbv.de/CodeSystem/KBV_CS_ERP_StatusCoPayment" />
                    <code value="1" />
                </valueCoding>
            </extension>
            <extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_EmergencyServicesFee">
                <valueBoolean value="false" />
            </extension>
            <extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_BVG">
                <valueBoolean value="false" />
            </extension>
            <extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_Multiple_Prescription">
                <extension url="Kennzeichen">
                    <valueBoolean value="false" />
                </extension>
            </extension>
            <status value="active" />
            <intent value="order" />
            <medicationReference>
                <reference value="Medication/f568397d-7ba2-46ac-904b-02caec933b42" />
            </medicationReference>
            <subject>
                <reference value="Patient/512ab5bc-a7ab-4fd7-81cc-16a594f747a6" />
            </subject>
            <authoredOn value="2020-04-06" />
            <requester>
                <reference value="Practitioner/e33d2afd-44c8-462b-80e5-52dbe5ebf359" />
            </requester>
            <insurance>
                <reference value="Coverage/df0f2536-97b9-4bae-99cc-83ba2e8371e4" />
            </insurance>
            <dosageInstruction>
                <extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_DosageFlag">
                    <valueBoolean value="true" />
                </extension>
                <text value="2mal t&#228;gl. 5ml" />
            </dosageInstruction>
            <dispenseRequest>
                <quantity>
                    <value value="1" />
                    <system value="http://unitsofmeasure.org" />
                    <code value="{Package}" />
                </quantity>
            </dispenseRequest>
            <substitution>
                <allowedBoolean value="true" />
            </substitution>
        </MedicationRequest>
    </resource>
</entry>
<entry>
    <fullUrl value="http://pvs.praxis.local/fhir/Medication/f568397d-7ba2-46ac-904b-02caec933b42" />
    <resource>
        <Medication>
            <id value="f568397d-7ba2-46ac-904b-02caec933b42" />
            <meta>
                <profile value="https://fhir.kbv.de/StructureDefinition/KBV_PR_ERP_Medication_PZN|1.0.1" />
            </meta>
            <extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_Medication_Category">
                <valueCoding>
                    <system value="https://fhir.kbv.de/CodeSystem/KBV_CS_ERP_Medication_Category" />
                    <code value="00" />
                </valueCoding>
            </extension>
            <extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_Medication_Vaccine">
                <valueBoolean value="false" />
            </extension>
            <extension url="http://fhir.de/StructureDefinition/normgroesse">
                <valueCode value="N1" />
            </extension>
            <code>
                <coding>
                    <system value="http://fhir.de/CodeSystem/ifa/pzn" />
                    <code value="08585997" />
                </coding>
                <text value="Prospan&#174; Hustensaft 100ml N1" />
            </code>
            <form>
                <coding>
                    <system value="https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_KBV_DARREICHUNGSFORM" />
                    <code value="FLE" />
                </coding>
            </form>
        </Medication>
    </resource>
</entry>
<entry>
    <fullUrl value="http://pvs.praxis.local/fhir/Patient/512ab5bc-a7ab-4fd7-81cc-16a594f747a6" />
    <resource>
        <Patient>
            <id value="512ab5bc-a7ab-4fd7-81cc-16a594f747a6" />
            <meta>
                <profile value="https://fhir.kbv.de/StructureDefinition/KBV_PR_FOR_Patient|1.0.3" />
            </meta>
            <identifier>
                <type>
                    <coding>
                        <system value="http://fhir.de/CodeSystem/identifier-type-de-basis" />
                        <code value="GKV" />
                    </coding>
                </type>
                <system value="http://fhir.de/NamingSystem/gkv/kvid-10" />
                <value value="M310119800" />
            </identifier>
            <name>
                <use value="official" />
                <family value="Erbprinzessin von und zu der Schimmelpfennig-Hammerschmidt Federmannssohn">
                    <extension url="http://fhir.de/StructureDefinition/humanname-namenszusatz">
                        <valueString value="Erbprinzessin" />
                    </extension>
                    <extension url="http://hl7.org/fhir/StructureDefinition/humanname-own-prefix">
                        <valueString value="von und zu der" />
                    </extension>
                    <extension url="http://hl7.org/fhir/StructureDefinition/humanname-own-name">
                        <valueString value="Schimmelpfennig-Hammerschmidt Federmannssohn" />
                    </extension>
                </family>
                <given value="Ingrid" />
            </name>
            <birthDate value="2010-01-31" />
            <address>
                <type value="both" />
                <line value="Anneliese- und Georg-von-Groscurth-Plaetzchen 149-C">
                    <extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber">
                        <valueString value="149-C" />
                    </extension>
                    <extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName">
                        <valueString value="Anneliese- und Georg-von-Groscurth-Plaetzchen" />
                    </extension>
                </line>
                <line value="5. OG - Hinterhof">
                    <extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-additionalLocator">
                        <valueString value="5. OG - Hinterhof" />
                    </extension>
                </line>
                <city value="Bad Homburg" />
                <postalCode value="60437" />
                <country value="D" />
            </address>
        </Patient>
    </resource>
</entry>
<entry>
    <fullUrl value="http://pvs.praxis.local/fhir/Practitioner/e33d2afd-44c8-462b-80e5-52dbe5ebf359" />
    <resource>
        <Practitioner>
            <id value="e33d2afd-44c8-462b-80e5-52dbe5ebf359" />
            <meta>
                <profile value="https://fhir.kbv.de/StructureDefinition/KBV_PR_FOR_Practitioner|1.0.3" />
            </meta>
            <identifier>
                <type>
                    <coding>
                        <system value="http://terminology.hl7.org/CodeSystem/v2-0203" />
                        <code value="LANR" />
                    </coding>
                </type>
                <system value="https://fhir.kbv.de/NamingSystem/KBV_NS_Base_ANR" />
                <value value="456456534" />
            </identifier>
            <name>
                <use value="official" />
                <family value="Weber">
                    <extension url="http://hl7.org/fhir/StructureDefinition/humanname-own-name">
                        <valueString value="Weber" />
                    </extension>
                </family>
                <given value="Maximilian" />
                <prefix value="Dr.">
                    <extension url="http://hl7.org/fhir/StructureDefinition/iso21090-EN-qualifier">
                        <valueCode value="AC" />
                    </extension>
                </prefix>
            </name>
            <qualification>
                <code>
                    <coding>
                        <system value="https://fhir.kbv.de/CodeSystem/KBV_CS_FOR_Qualification_Type" />
                        <code value="00" />
                    </coding>
                </code>
            </qualification>
            <qualification>
                <code>
                    <text value="Facharzt f&#252;r Kinder- und Jugendmedizin" />
                </code>
            </qualification>
        </Practitioner>
    </resource>
</entry>
<entry>
    <fullUrl value="http://pvs.praxis.local/fhir/Organization/d2b30a70-9830-4968-ab97-688472b6f9a3" />
    <resource>
        <Organization>
            <id value="d2b30a70-9830-4968-ab97-688472b6f9a3" />
            <meta>
                <profile value="https://fhir.kbv.de/StructureDefinition/KBV_PR_FOR_Organization|1.0.3" />
            </meta>
            <identifier>
                <type>
                    <coding>
                        <system value="http://terminology.hl7.org/CodeSystem/v2-0203" />
                        <code value="BSNR" />
                    </coding>
                </type>
                <system value="https://fhir.kbv.de/NamingSystem/KBV_NS_Base_BSNR" />
                <value value="687777700" />
            </identifier>
            <name value="Kinderarztpraxis" />
            <telecom>
                <system value="phone" />
                <value value="09411234567" />
            </telecom>
            <address>
                <type value="both" />
                <line value="Yorckstra&#223;e 15">
                    <extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber">
                        <valueString value="15" />
                    </extension>
                    <extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName">
                        <valueString value="Yorckstra&#223;e" />
                    </extension>
                </line>
                <line value="Hinterhaus">
                    <extension url="http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-additionalLocator">
                        <valueString value="Hinterhaus" />
                    </extension>
                </line>
                <city value="Regensburg" />
                <postalCode value="93049" />
                <country value="D" />
            </address>
        </Organization>
    </resource>
</entry>
<entry>
    <fullUrl value="http://pvs.praxis.local/fhir/Coverage/df0f2536-97b9-4bae-99cc-83ba2e8371e4" />
    <resource>
        <Coverage>
            <id value="df0f2536-97b9-4bae-99cc-83ba2e8371e4" />
            <meta>
                <profile value="https://fhir.kbv.de/StructureDefinition/KBV_PR_FOR_Coverage|1.0.3" />
            </meta>
            <extension url="http://fhir.de/StructureDefinition/gkv/besondere-personengruppe">
                <valueCoding>
                    <system value="https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_KBV_PERSONENGRUPPE" />
                    <code value="00" />
                </valueCoding>
            </extension>
            <extension url="http://fhir.de/StructureDefinition/gkv/dmp-kennzeichen">
                <valueCoding>
                    <system value="https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_KBV_DMP" />
                    <code value="00" />
                </valueCoding>
            </extension>
            <extension url="http://fhir.de/StructureDefinition/gkv/wop">
                <valueCoding>
                    <system value="https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_ITA_WOP" />
                    <code value="72" />
                </valueCoding>
            </extension>
            <extension url="http://fhir.de/StructureDefinition/gkv/versichertenart">
                <valueCoding>
                    <system value="https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_KBV_VERSICHERTENSTATUS" />
                    <code value="3" />
                </valueCoding>
            </extension>
            <status value="active" />
            <type>
                <coding>
                    <system value="http://fhir.de/CodeSystem/versicherungsart-de-basis" />
                    <code value="GKV" />
                </coding>
            </type>
            <beneficiary>
                <reference value="Patient/512ab5bc-a7ab-4fd7-81cc-16a594f747a6" />
            </beneficiary>
            <period>
                <end value="2040-04-01" />
            </period>
            <payor>
                <identifier>
                    <system value="http://fhir.de/NamingSystem/arge-ik/iknr" />
                    <value value="108416214" />
                </identifier>
                <display value="AOK Bayern" />
            </payor>
        </Coverage>
    </resource>
</entry>






using Hl7.Fhir.Model; using Hl7.Fhir.Rest; using Hl7.Fhir.Serialization; using System; using System.IO; using System.Xml; namespace ReadXML { class Program { static void Main(string[] args) { XmlReader xr = XmlReader.Create( new StreamReader(@"<Path>")); var parser = new FhirXmlParser(); Bundle bundle = parser.Parse<Bundle>(xr); Console.WriteLine(bundle); var composition = (Composition)bundle.Entry[0].Resource; ResourceReference subjectRef = composition.Subject; //ResourceReference authorRef = composition.Author; ResourceReference custodianRef = composition.Custodian; //ResourceReference medRef = composition.Section; var absUriPatient = subjectRef.GetAbsoluteUriForReference(bundle.Entry[0].FullUrl); //var absUriPractitioner = authorRef.GetAbsoluteUriForReference(bundle.Entry[0].FullUrl); var absUriOrganization = custodianRef.GetAbsoluteUriForReference(bundle.Entry[0].FullUrl); Console.WriteLine($"Patient-URL: {absUriPatient}"); //Console.WriteLine($"Practitioner-URL: {absUriPractitioner}"); Console.WriteLine($"Organization-URL: {absUriOrganization}"); var patient = (Bundle.EntryComponent)bundle.FindEntry(absUriPatient); Console.WriteLine(patient); //How to get patient.Name ??? Console.ReadKey(); } } }
var entry = bundle.FindEntry(absUriPatient).SingleOrDefault();
var patient = entry.Resource as Patient;
Console.WriteLine($"Given name of patient: {patient?.Name[0].Given.First() }");
    <resource>
  <MedicationRequest xmlns="http://hl7.org/fhir">
    <id value="e930cdee-9eb5-4b44-88b5-2a18b69f3b9a" />
    <meta>
      <profile value="https://fhir.kbv.de/StructureDefinition/KBV_PR_ERP_Prescription|1.0.1" />
    </meta>
    <extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_StatusCoPayment">
      <valueCoding>
        <system value="https://fhir.kbv.de/CodeSystem/KBV_CS_ERP_StatusCoPayment" />
        <code value="0" />
      </valueCoding>
    </extension>
    <extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_EmergencyServicesFee">
      <valueBoolean value="false" />
    </extension>
    <extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_BVG">
      <valueBoolean value="false" />
    </extension>
    <extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_Multiple_Prescription">
      <extension url="Kennzeichen">
        <valueBoolean value="false" />
      </extension>
    </extension>
    <status value="active" />
    <intent value="order" />
    <medicationReference>
      <reference value="Medication/5fe6e06c-8725-46d5-aecd-e65e041ca3de" />
    </medicationReference>
    <subject>
      <reference value="Patient/9774f67f-a238-4daf-b4e6-679deeef3811" />
    </subject>
    <authoredOn value="2021-03-30" />
    <requester>
      <reference value="Practitioner/20597e0e-cb2a-45b3-95f0-dc3dbdb617c3" />
    </requester>
    <insurance>
      <reference value="Coverage/1b1ffb6e-eb05-43d7-87eb-e7818fe9661a" />
    </insurance>
    <dosageInstruction>
      <extension url="https://fhir.kbv.de/StructureDefinition/KBV_EX_ERP_DosageFlag">
        <valueBoolean value="true" />
      </extension>
      <text value="1-0-1-0" />
    </dosageInstruction>
    <dispenseRequest>
      <quantity>
        <value value="1" />
        <system value="http://unitsofmeasure.org" />
        <code value="{Package}" />
      </quantity>
    </dispenseRequest>
    <substitution>
      <allowedBoolean value="true" />
    </substitution>
  </MedicationRequest>
</resource>