Search code examples
sqljsonsql-serveropen-json

SQL Server Parse JSON Object to Rows


Thanks in advance for any help. This is killing me! :-)

I have a JSON string that has an object collection nested within it that I need to get a standard SQL result set from. Here is a sample string of the JSON I am working with:

    {
        "ST": {
            "TransactionSetIdentifierCode_01": "835",
            "TransactionSetControlNumber_02": "1740",
            "ImplementationConventionPreference_03": null
        },
        "BPR_FinancialInformation": {
            "TransactionHandlingCode_01": "I",
            "TotalPremiumPaymentAmount_02": "45.75",
            "CreditorDebitFlagCode_03": "C",
            "PaymentMethodCode_04": "ACH",
            "PaymentFormatCode_05": "CCP",
            "DepositoryFinancialInstitutionDFIIdentificationNumberQualifier_06": "01",
            "OriginatingDepositoryFinancialInstitutionDFIIdentifier_07": "111",
            "AccountNumberQualifier_08": "DA",
            "SenderBankAccountNumber_09": "33",
            "PayerIdentifier_10": "1234567890",
            "OriginatingCompanySupplementalCode_11": null,
            "DepositoryFinancialInstitutionDFIIdentificationNumberQualifier_12": "01",
            "ReceivingDepositoryFinancialInstitutionDFIIdentifier_13": "111",
            "AccountNumberQualifier_14": "DA",
            "ReceiverBankAccountNumber_15": "22",
            "CheckIssueorEFTEffectiveDate_16": "20100101",
            "BusinessFunctionCode_17": null,
            "DFIIDNumberQualifier_18": null,
            "DFIIdentificationNumber_19": null,
            "AccountNumberQualifier_20": null,
            "AccountNumber_21": null
        },
        "TRN_ReassociationTraceNumber": {
            "TraceTypeCode_01": "1",
            "CurrentTransactionTraceNumber_02": "10100000000",
            "OriginatingCompanyIdentifier_03": "1000000000",
            "ReferenceIdentification_04": null
        },
        "CUR_ForeignCurrencyInformation": null,
        "AllREF": {
            "REF_ReceiverIdentification": {
                "ReferenceIdentificationQualifier_01": "EV",
                "MemberGrouporPolicyNumber_02": "ETIN",
                "Description_03": null,
                "ReferenceIdentifier_04": null
            },
            "REF_VersionIdentification": null
        },
        "DTM_ProductionDate": {
            "DateTimeQualifier_01": "405",
            "Date_02": "20100101",
            "Time_03": null,
            "TimeCode_04": null,
            "DateTimePeriodFormatQualifier_05": null,
            "DateTimePeriod_06": null
        },
        "AllN1": {
            "Loop1000A": {
                "N1_PayerIdentification": {
                    "EntityIdentifierCode_01": "PR",
                    "PremiumPayerName_02": "NYSDOH",
                    "IdentificationCodeQualifier_03": null,
                    "IntermediaryBankIdentifier_04": null,
                    "EntityRelationshipCode_05": null,
                    "EntityIdentifierCode_06": null
                },
                "N3_PayerAddress": {
                    "ResponseContactAddressLine_01": "OFFICE OF HEALTH INSURANCE PROGRAMS",
                    "ResponseContactAddressLine_02": "CORNING TOWER, EMPIRE STATE PLAZA"
                },
                "N4_PayerCity_State_ZIPCode": {
                    "AdditionalPatientInformationContactCityName_01": "ALBANY",
                    "AdditionalPatientInformationContactStateCode_02": "NY",
                    "AdditionalPatientInformationContactPostalZoneorZIPCode_03": "122370080",
                    "CountryCode_04": null,
                    "LocationQualifier_05": null,
                    "LocationIdentifier_06": null,
                    "CountrySubdivisionCode_07": null
                },
                "REF_AdditionalPayerIdentification": null,
                "AllPER": {
                    "PER_PayerBusinessContactInformation": null,
                    "PER_PayerTechnicalContactInformation": [
                        {
                            "ContactFunctionCode_01": "BL",
                            "ResponseContactName_02": "PROVIDER SERVICES",
                            "CommunicationNumberQualifier_03": "TE",
                            "ResponseContactCommunicationNumber_04": "8003439000",
                            "CommunicationNumberQualifier_05": "UR",
                            "ResponseContactCommunicationNumber_06": "www.emedny.org",
                            "CommunicationNumberQualifier_07": null,
                            "ResponseContactCommunicationNumber_08": null,
                            "ContactInquiryReference_09": null
                        }
                    ],
                    "PER_PayerWEBSite": null
                }
            },
            "Loop1000B": {
                "N1_PayeeIdentification": {
                    "EntityIdentifierCode_01": "PE",
                    "PremiumPayerName_02": "MAJOR MEDICAL PROVIDER",
                    "IdentificationCodeQualifier_03": "XX",
                    "IntermediaryBankIdentifier_04": "9999999995",
                    "EntityRelationshipCode_05": null,
                    "EntityIdentifierCode_06": null
                },
                "N3_PayeeAddress": null,
                "N4_PayeeCity_State_ZIPCode": null,
                "REF_PayeeAdditionalIdentification": [
                    {
                        "ReferenceIdentificationQualifier_01": "TJ",
                        "MemberGrouporPolicyNumber_02": "000000000",
                        "Description_03": null,
                        "ReferenceIdentifier_04": null
                    }
                ],
                "RDM_RemittanceDeliveryMethod": null
            }
        },
        "Loop2000": [
            {
                "LX_HeaderNumber": {
                    "AssignedNumber_01": "1"
                },
                "TS3_ProviderSummaryInformation": null,
                "TS2_ProviderSupplementalSummaryInformation": null,
                "Loop2100": [
                    {
                        "CLP_ClaimPaymentInformation": {
                            "PatientControlNumber_01": "PATIENT ACCOUNT NUMBER",
                            "ClaimStatusCode_02": "1",
                            "TotalClaimChargeAmount_03": "34.25",
                            "ClaimPaymentAmount_04": "34.25",
                            "PatientResponsibilityAmount_05": null,
                            "ClaimFilingIndicatorCode_06": "MC",
                            "PayerClaimControlNumber_07": "1000210000000030",
                            "FacilityTypeCode_08": "11",
                            "ClaimFrequencyCode_09": null,
                            "PatientStatusCode_10": null,
                            "DiagnosisRelatedGroupDRGCode_11": null,
                            "DiagnosisRelatedGroupDRGWeight_12": null,
                            "DischargeFraction_13": null,
                            "YesNoConditionorResponseCode_14": null
                        },
                        "CAS_ClaimsAdjustment": null,
                        "AllNM1": {
                            "NM1_PatientName": {
                                "EntityIdentifierCode_01": "QC",
                                "EntityTypeQualifier_02": "1",
                                "ResponseContactLastorOrganizationName_03": "SUBMITTED LAST",
                                "ResponseContactFirstName_04": "SUBMITTED FIRST",
                                "ResponseContactMiddleName_05": null,
                                "NamePrefix_06": null,
                                "ResponseContactNameSuffix_07": null,
                                "IdentificationCodeQualifier_08": "MI",
                                "ResponseContactIdentifier_09": "LL99999L",
                                "EntityRelationshipCode_10": null,
                                "EntityIdentifierCode_11": null,
                                "NameLastorOrganizationName_12": null
                            },
                            "NM1_InsuredName": null,
                            "NM1_CorrectedPatient_InsuredName": {
                                "EntityIdentifierCode_01": "74",
                                "EntityTypeQualifier_02": "1",
                                "ResponseContactLastorOrganizationName_03": "CORRECTED LAST",
                                "ResponseContactFirstName_04": "CORRECTED FIRST",
                                "ResponseContactMiddleName_05": null,
                                "NamePrefix_06": null,
                                "ResponseContactNameSuffix_07": null,
                                "IdentificationCodeQualifier_08": null,
                                "ResponseContactIdentifier_09": null,
                                "EntityRelationshipCode_10": null,
                                "EntityIdentifierCode_11": null,
                                "NameLastorOrganizationName_12": null
                            },
                            "NM1_ServiceProviderName": null,
                            "NM1_CrossoverCarrierName": null,
                            "NM1_CorrectedPriorityPayerName": null,
                            "NM1_OtherSubscriberName": null
                        },
                        "MIA_InpatientAdjudicationInformation": null,
                        "MOA_OutpatientAdjudicationInformation": null,
                        "AllREF": {
                            "REF_OtherClaimRelatedIdentification": [
                                {
                                    "ReferenceIdentificationQualifier_01": "EA",
                                    "MemberGrouporPolicyNumber_02": "PATIENT ACCOUNT NUMBER",
                                    "Description_03": null,
                                    "ReferenceIdentifier_04": null
                                }
                            ],
                            "REF_RenderingProviderIdentification": null
                        },
                        "AllDTM": {
                            "DTM_StatementFromorToDate": [
                                {
                                    "DateTimeQualifier_01": "232",
                                    "Date_02": "20100101",
                                    "Time_03": null,
                                    "TimeCode_04": null,
                                    "DateTimePeriodFormatQualifier_05": null,
                                    "DateTimePeriod_06": null
                                },
                                {
                                    "DateTimeQualifier_01": "233",
                                    "Date_02": "20100101",
                                    "Time_03": null,
                                    "TimeCode_04": null,
                                    "DateTimePeriodFormatQualifier_05": null,
                                    "DateTimePeriod_06": null
                                }
                            ],
                            "DTM_CoverageExpirationDate": null,
                            "DTM_ClaimReceivedDate": null
                        },
                        "PER_ClaimContactInformation": null,
                        "AMT_ClaimSupplementalInformation": [
                            {
                                "AmountQualifierCode_01": "AU",
                                "TotalClaimChargeAmount_02": "34.25",
                                "CreditDebitFlagCode_03": null
                            }
                        ],
                        "QTY_ClaimSupplementalInformationQuantity": null,
                        "Loop2110": null
                    },
                    {
                        "CLP_ClaimPaymentInformation": {
                            "PatientControlNumber_01": "PATIENT ACCOUNT NUMBER",
                            "ClaimStatusCode_02": "2",
                            "TotalClaimChargeAmount_03": "34",
                            "ClaimPaymentAmount_04": "0",
                            "PatientResponsibilityAmount_05": null,
                            "ClaimFilingIndicatorCode_06": "MC",
                            "PayerClaimControlNumber_07": "1000220000000020",
                            "FacilityTypeCode_08": "11",
                            "ClaimFrequencyCode_09": null,
                            "PatientStatusCode_10": null,
                            "DiagnosisRelatedGroupDRGCode_11": null,
                            "DiagnosisRelatedGroupDRGWeight_12": null,
                            "DischargeFraction_13": null,
                            "YesNoConditionorResponseCode_14": null
                        },
                        "CAS_ClaimsAdjustment": null,
                        "AllNM1": {
                            "NM1_PatientName": {
                                "EntityIdentifierCode_01": "QC",
                                "EntityTypeQualifier_02": "1",
                                "ResponseContactLastorOrganizationName_03": "SUBMITTED LAST",
                                "ResponseContactFirstName_04": "SUBMITTED FIRST",
                                "ResponseContactMiddleName_05": null,
                                "NamePrefix_06": null,
                                "ResponseContactNameSuffix_07": null,
                                "IdentificationCodeQualifier_08": "MI",
                                "ResponseContactIdentifier_09": "LL88888L",
                                "EntityRelationshipCode_10": null,
                                "EntityIdentifierCode_11": null,
                                "NameLastorOrganizationName_12": null
                            },
                            "NM1_InsuredName": null,
                            "NM1_CorrectedPatient_InsuredName": {
                                "EntityIdentifierCode_01": "74",
                                "EntityTypeQualifier_02": "1",
                                "ResponseContactLastorOrganizationName_03": "CORRECTED LAST",
                                "ResponseContactFirstName_04": "CORRECTED FIRST",
                                "ResponseContactMiddleName_05": null,
                                "NamePrefix_06": null,
                                "ResponseContactNameSuffix_07": null,
                                "IdentificationCodeQualifier_08": null,
                                "ResponseContactIdentifier_09": null,
                                "EntityRelationshipCode_10": null,
                                "EntityIdentifierCode_11": null,
                                "NameLastorOrganizationName_12": null
                            },
                            "NM1_ServiceProviderName": null,
                            "NM1_CrossoverCarrierName": null,
                            "NM1_CorrectedPriorityPayerName": null,
                            "NM1_OtherSubscriberName": null
                        },
                        "MIA_InpatientAdjudicationInformation": null,
                        "MOA_OutpatientAdjudicationInformation": null,
                        "AllREF": {
                            "REF_OtherClaimRelatedIdentification": [
                                {
                                    "ReferenceIdentificationQualifier_01": "EA",
                                    "MemberGrouporPolicyNumber_02": "PATIENT ACCOUNT NUMBER",
                                    "Description_03": null,
                                    "ReferenceIdentifier_04": null
                                }
                            ],
                            "REF_RenderingProviderIdentification": null
                        },
                        "AllDTM": {
                            "DTM_StatementFromorToDate": [
                                {
                                    "DateTimeQualifier_01": "232",
                                    "Date_02": "20100101",
                                    "Time_03": null,
                                    "TimeCode_04": null,
                                    "DateTimePeriodFormatQualifier_05": null,
                                    "DateTimePeriod_06": null
                                },
                                {
                                    "DateTimeQualifier_01": "233",
                                    "Date_02": "20100101",
                                    "Time_03": null,
                                    "TimeCode_04": null,
                                    "DateTimePeriodFormatQualifier_05": null,
                                    "DateTimePeriod_06": null
                                }
                            ],
                            "DTM_CoverageExpirationDate": null,
                            "DTM_ClaimReceivedDate": null
                        },
                        "PER_ClaimContactInformation": null,
                        "AMT_ClaimSupplementalInformation": null,
                        "QTY_ClaimSupplementalInformationQuantity": null,
                        "Loop2110": null
                    },
                    {
                        "CLP_ClaimPaymentInformation": {
                            "PatientControlNumber_01": "PATIENT ACCOUNT NUMBER",
                            "ClaimStatusCode_02": "2",
                            "TotalClaimChargeAmount_03": "34.25",
                            "ClaimPaymentAmount_04": "11.5",
                            "PatientResponsibilityAmount_05": null,
                            "ClaimFilingIndicatorCode_06": "MC",
                            "PayerClaimControlNumber_07": "1000230000000020",
                            "FacilityTypeCode_08": "11",
                            "ClaimFrequencyCode_09": null,
                            "PatientStatusCode_10": null,
                            "DiagnosisRelatedGroupDRGCode_11": null,
                            "DiagnosisRelatedGroupDRGWeight_12": null,
                            "DischargeFraction_13": null,
                            "YesNoConditionorResponseCode_14": null
                        },
                        "CAS_ClaimsAdjustment": null,
                        "AllNM1": {
                            "NM1_PatientName": {
                                "EntityIdentifierCode_01": "QC",
                                "EntityTypeQualifier_02": "1",
                                "ResponseContactLastorOrganizationName_03": "SUBMITTED LAST",
                                "ResponseContactFirstName_04": "SUBMITTED FIRST",
                                "ResponseContactMiddleName_05": null,
                                "NamePrefix_06": null,
                                "ResponseContactNameSuffix_07": null,
                                "IdentificationCodeQualifier_08": "MI",
                                "ResponseContactIdentifier_09": "LL77777L",
                                "EntityRelationshipCode_10": null,
                                "EntityIdentifierCode_11": null,
                                "NameLastorOrganizationName_12": null
                            },
                            "NM1_InsuredName": null,
                            "NM1_CorrectedPatient_InsuredName": {
                                "EntityIdentifierCode_01": "74",
                                "EntityTypeQualifier_02": "1",
                                "ResponseContactLastorOrganizationName_03": "CORRECTED LAST",
                                "ResponseContactFirstName_04": "CORRECTED FIRST",
                                "ResponseContactMiddleName_05": null,
                                "NamePrefix_06": null,
                                "ResponseContactNameSuffix_07": null,
                                "IdentificationCodeQualifier_08": null,
                                "ResponseContactIdentifier_09": null,
                                "EntityRelationshipCode_10": null,
                                "EntityIdentifierCode_11": null,
                                "NameLastorOrganizationName_12": null
                            },
                            "NM1_ServiceProviderName": null,
                            "NM1_CrossoverCarrierName": null,
                            "NM1_CorrectedPriorityPayerName": null,
                            "NM1_OtherSubscriberName": null
                        },
                        "MIA_InpatientAdjudicationInformation": null,
                        "MOA_OutpatientAdjudicationInformation": null,
                        "AllREF": {
                            "REF_OtherClaimRelatedIdentification": [
                                {
                                    "ReferenceIdentificationQualifier_01": "EA",
                                    "MemberGrouporPolicyNumber_02": "PATIENT ACCOUNT NUMBER",
                                    "Description_03": null,
                                    "ReferenceIdentifier_04": null
                                }
                            ],
                            "REF_RenderingProviderIdentification": null
                        },
                        "AllDTM": {
                            "DTM_StatementFromorToDate": [
                                {
                                    "DateTimeQualifier_01": "232",
                                    "Date_02": "20100101",
                                    "Time_03": null,
                                    "TimeCode_04": null,
                                    "DateTimePeriodFormatQualifier_05": null,
                                    "DateTimePeriod_06": null
                                },
                                {
                                    "DateTimeQualifier_01": "233",
                                    "Date_02": "20100101",
                                    "Time_03": null,
                                    "TimeCode_04": null,
                                    "DateTimePeriodFormatQualifier_05": null,
                                    "DateTimePeriod_06": null
                                }
                            ],
                            "DTM_CoverageExpirationDate": null,
                            "DTM_ClaimReceivedDate": null
                        },
                        "PER_ClaimContactInformation": null,
                        "AMT_ClaimSupplementalInformation": [
                            {
                                "AmountQualifierCode_01": "AU",
                                "TotalClaimChargeAmount_02": "11.5",
                                "CreditDebitFlagCode_03": null
                            }
                        ],
                        "QTY_ClaimSupplementalInformationQuantity": null,
                        "Loop2110": null
                    }
                ]
            }
        ],
        "PLB_ProviderAdjustment": null,
        "SE": {
            "NumberofIncludedSegments_01": "65",
            "TransactionSetControlNumber_02": "1740"
        },
        "ErrorContext": {
            "Name": "835",
            "ControlNumber": "1740",
            "Edition": "005010",
            "Release": "X221A1",
            "Index": 2,
            "ValidatedSegmentsCount": 0,
            "Codes": [],
            "Errors": [
                {
                    "Name": "SVC",
                    "Position": 20,
                    "LoopId": null,
                    "Value": "SVC*HC:V2020:RB*6*6**1",
                    "Codes": [
                        4
                    ],
                    "Errors": [],
                    "Message": "Segment SVC*HC:V2020:RB*6 is not allowed in this position. Only the following segments can appear: AMT, QTY, SVC, CLP, LX, PLB, SE"
                }
            ],
            "HasErrors": true,
            "Message": null
        }
    }

This string can be pasted into an online JSON parser to visualize the hierarchy more easily (like http://json.parser.online.fr/).

What I am trying to do is use the SQL Server OPENJSON function to get a result set of the 3 sample claims in this JSON string. The claims are nested in $.Loop2000.Loop2100, and the result I am trying to get is:

    Patient Account Number   ClaimStatusCode     TotalClaimChargeAmount
   ------------------------------------------------------------------------
    Patient Account Number   1                   34.25
    
    Patient Account Number   2                   34.00
    
    Patient Account Number   3                   34.00

I can't seem to get the path right in the OPENJSON function to turn this into a result set with 3 rows. I am trying to use something like:

SELECT * FROM  OPENJSON(@sJSON, N'$.Loop2000.Loop2100')  
WITH (  
    PatientControlNumber_01 nvarchar(100) '$.CLP_ClaimPaymentInformation.PatientControlNumber_01'
)  

Any help would be much appreciated.


Solution

  • One method you could use is a few nested OPNEJSON calls:

    SELECT CPI.*
    FROM OPENJSON(@JSON, N'$.Loop2000') 
         WITH (Loop2100 nvarchar(MAX) AS JSON) L2000
         CROSS APPLY OPENJSON(L2000.Loop2100)
                     WITH(CLP_ClaimPaymentInformation nvarchar(MAX) AS JSON) L2100
         CROSS APPLY OPENJSON(L2100.CLP_ClaimPaymentInformation)
                     WITH (PatientControlNumber varchar(100) '$.PatientControlNumber_01',
                           ClaimStatusCode int '$.ClaimStatusCode_02',
                           TotalClaimChargeAmount decimal(12,2) '$.TotalClaimChargeAmount_03') CPI;