0

需要指导为未从 API 找到的 NPI 值添加捕获错误。该表有 2000 个 NPI 编号,其中一些在 API 调用中找不到。当我运行此功能时,它会在找不到匹配项时停止并出错。我希望该功能继续运行并将错误放在适当的行上。

let
Source = (NPPES_API as any) => let
    Source = Json.Document(Web.Contents("https://npiregistry.cms.hhs.gov/api/?version=2.1&number=" & NPPES_API)),
    results = Source[results],
    results1 = results{0},
    addresses = results1[addresses],
    addresses1 = addresses{0},
    #"Converted to Table" = Record.ToTable(addresses1),
    #"Removed Columns" = Table.RemoveColumns(#"Converted to Table",{"Name"}),
    #"Removed Top Rows" = Table.Skip(#"Removed Columns",4),
    #"Removed Blank Rows" = Table.SelectRows(#"Removed Top Rows", each not List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {"", null})))
in
    #"Removed Blank Rows"
in
Source
4

1 回答 1

1

Errors当您搜索不存在或无效的 NPI 编号时,服务器似乎在其响应中包含一个字段。所以也许检查这种情况,然后相应地扩展响应。

下面是 NPI 编号列表的示例实现(其中一个是故意无效的,目的是引发和处理来自服务器的错误响应)。

let
    npiNumbers = {"1245319599", "abc"},
    getDataForNpiNumber = (someNpiNumber as text) as record =>
        let
            json = Web.Contents("https://npiregistry.cms.hhs.gov/api/", [
                Query = [version = "2.1", number = someNpiNumber]
            ]),
            parsed = Json.Document(json),
            row = [
                npiNumber = someNpiNumber,
                data = Table.FromRecords(Record.FieldOrDefault(parsed, "results", {})),
                errors = Table.FromRecords(Record.FieldOrDefault(parsed, "Errors", {}))
            ]
        in row,
    rows = List.Transform(npiNumbers, getDataForNpiNumber),
    data = Table.FromRecords(rows)
in
    data

它应该为您提供一个表格,其中包含每个请求的 NPI 编号的行。每行本身应包含 3 个字段:

  • npiNumber(请求的 NPI 编号)
  • data(从服务器接收到此 NPI 编号的数据,如果发生错误,则为空表)
  • errors(从服务器收到此 NPI 编号的错误,如果服务器成功完成请求,则为空表)

然后,您可以展开表的行并根据需要向下钻取(因为您没有描述要对数据执行什么操作或需要如何构建数据)。

于 2021-03-05T17:32:27.907 回答