首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于总结错误数据的Postgres SQL查询

用于总结错误数据的Postgres SQL查询
EN

Stack Overflow用户
提问于 2021-06-28 08:12:14
回答 1查看 159关注 0票数 1

我在列codemap中有json数据,需要从不同的编码参数类别(如cptdrgmodifierssecondaryDiagnosisprincipalDiagnosissecondaryProcedureobservationhoursdischargeStatusprincipalprocedurehcpcs)中提取代码(属于removedrevisedadded)。

请在我的小提琴输入和输出片段下面找到:

输入

代码语言:javascript
复制
WITH qareport (ctextid,vbillid,codemap) AS (
VALUES(('20211','1345','{"cpt": {"added": [], "correct": [], "removed": [], "revised": []}, "drg": {"correct": [], "revised": []}, "poa": {"correct": [], "revised": []}, "hcpcs": {"added": [], "correct": [], "removed": [], "revised": []}, "modifiers": {"added": [], "correct": [], "removed": [], "revised": []}, "dischargeStatus": {"correct": [], "revised": []}, "observationHours": {"correct": [], "revised": []}, "injectionInfusion": {"added": [], "correct": [], "removed": [], "revised": []}, "principalDiagnosis": {"correct": [{"code": "E559", "description": "VITAMIN D DEFICIENCY, UNSPECIFIED (ICD-10) "}], "revised": []}, "principalProcedure": {"added": [], "correct": [], "removed": [], "revised": []}, "secondaryDiagnosis": {"added": [], "correct": [{"code": "E538", "description": "DEFICIENCY OF OTHER SPECIFIED B GROUP VITAMINS (ICD-10) "}, {"code": "E119", "description": "TYPE 2 DIABETES MELLITUS WITHOUT COMPLICATIONS (ICD-10) "}, {"code": "E782", "description": "MIXED HYPERLIPIDEMIA (ICD-10) "}, {"code": "M7910", "description": "MYALGIA, UNSPECIFIED SITE (ICD-10) "}, {"code": "Z7984", "description": "LONG TERM (CURRENT) USE OF ORAL HYPOGLYCEMIC DRUGS (ICD-10) "}, {"code": "Z79899", "description": "OTHER LONG TERM (CURRENT) DRUG THERAPY (ICD-10) "}, {"code": "Z9884", "description": "BARIATRIC SURGERY STATUS (ICD-10) "}], "removed": [], "revised": []}, "secondaryProcedure": {"added": [], "correct": [], "removed": [], "revised": []}, "facilityEvaluationManagement": {"added": [], "correct": [], "removed": [], "revised": []}, "professionalEvaluationManagement": {"added": [], "correct": [{"code": "99204", "description": "OFFICE OR OTHER OUTPATIENT VISIT FOR THE EVALUATION AND MANAGEMENT OF A NEW PATIENT, WHICH REQUIRES THESE THREE KEY COMPONENTS: A COMPREHENSIVE HISTORY; A COMPREHENSIVE EXAMINATION; AND MEDICAL DECISI"}], "removed": [], "revised": []}}'::jsonb),
('20211','1346','{"cpt": {"added": [], "correct": [{"code": "99497", "description": "ADVANCE CARE PLANNING FIRST 30 MIN"}, {"code": "96160", "description": "ADMINISTRATION OF PATIENT-FOCUSED HEALTH RISK ASSESSMENT INSTRUMENT (EG, HEALTH HAZARD APPRAISAL) WITH SCORING AND DOCUMENTATION, PER STANDARDIZED INSTRUMENT"}], "removed": [], "revised": []}, "drg": {"correct": [], "revised": []}, "poa": {"correct": [], "revised": []}, "hcpcs": {"added": [{"code": "G0402", "description": "INITIAL PREVENTIVE EXAM"}], "correct": [], "removed": [], "revised": []}, "modifiers": {"added": [{"code": "25", "description": "Significant Separately Identifiable E&M Service by the Same Physician on the Same Day"}], "correct": [], "removed": [], "revised": []}, "dischargeStatus": {"correct": [], "revised": []}, "observationHours": {"correct": [], "revised": []}, "injectionInfusion": {"added": [], "correct": [], "removed": [], "revised": []}, "principalDiagnosis": {"correct": [{"code": "Z0000", "description": "ENCNTR FOR GENERAL ADULT MEDICAL EXAM W/O ABNORMAL FINDINGS (ICD-10) "}], "revised": []}, "principalProcedure": {"added": [], "correct": [], "removed": [], "revised": []}, "secondaryDiagnosis": {"added": [{"code": "E1165", "description": "TYPE 2 DIABETES MELLITUS WITH HYPERGLYCEMIA (ICD-10) "}, {"code": "Z136", "description": "ENCOUNTER FOR SCREENING FOR CARDIOVASCULAR DISORDERS (ICD-10) "}, {"code": "Z1211", "description": "ENCOUNTER FOR SCREENING FOR MALIGNANT NEOPLASM OF COLON (ICD-10) "}], "correct": [{"code": "M25512", "description": "PAIN IN LEFT SHOULDER (ICD-10) "}, {"code": "Z7984", "description": "LONG TERM (CURRENT) USE OF ORAL HYPOGLYCEMIC DRUGS (ICD-10) "}, {"code": "Z791", "description": "LONG TERM (CURRENT) USE OF NON-STEROIDAL NON-INFLAM (NSAID) (ICD-10) "}, {"code": "Z0000", "description": "ENCNTR FOR GENERAL ADULT MEDICAL EXAM W/O ABNORMAL FINDINGS (ICD-10) "}, {"code": "M25512", "description": "PAIN IN LEFT SHOULDER (ICD-10) "}, {"code": "Z7984", "description": "LONG TERM (CURRENT) USE OF ORAL HYPOGLYCEMIC DRUGS (ICD-10) "}, {"code": "Z791", "description": "LONG TERM (CURRENT) USE OF NON-STEROIDAL NON-INFLAM (NSAID) (ICD-10) "}, {"code": "Z1339", "description": "ENCNTR SCREEN EXAM FOR OTHER MENTAL HLTH AND BEHAVRL DISORD (ICD-10) "}], "removed": [], "revised": [{"to": {"code": "M25512", "description": "PAIN IN LEFT SHOULDER (ICD-10) "}, "from": {"code": "Z79899", "description": "OTHER LONG TERM (CURRENT) DRUG THERAPY (ICD-10) "}}]}, "secondaryProcedure": {"added": [], "correct": [], "removed": [], "revised": []}, "facilityEvaluationManagement": {"added": [], "correct": [], "removed": [], "revised": []}, "professionalEvaluationManagement": {"added": [], "correct": [], "removed": [], "revised": [{"to": {"code": "99213", "description": "OFF/OP VIS, EST PT, 2KEY COMP: EXPAND PROB HX; EXPAN"}, "from": {"code": "99396", "description": "PERI COMP PREV MED E&M W/HX/EXAM, EST PT;40-64YR"}}]}}'::jsonb),
('20211','1347','{"cpt": {"added": [], "correct": [{"code": "11055", "description": "PARING OR CUTING OF BENIGN HYPERKERATOTIC LESION, SINGLE"}, {"code": "11720", "description": "DEBRIDEMENT OF NAILS, ONE TO FIVE"}, {"code": "11719", "description": "TRIMMING OF NONDYSTROPHIC NAILS"}], "removed": [], "revised": []}, "drg": {"correct": [], "revised": []}, "poa": {"correct": [], "revised": []}, "hcpcs": {"added": [], "correct": [], "removed": [], "revised": []}, "modifiers": {"added": [], "correct": [{"code": "Q8", "description": "2 CLASS B FINDINGS"}, {"code": "LT", "description": "LEFT SIDE"}, {"code": "Q8", "description": "2 CLASS B FINDINGS"}, {"code": "59", "description": "DISTINCT PROCEDURAL SERVICE"}, {"code": "T1", "description": "LEFT FOOT, SECOND DIGIT"}, {"code": "99", "description": "MULTIPLE MODIFIERS"}, {"code": "Q8", "description": "2 CLASS B FINDINGS"}, {"code": "T2", "description": "LEFT FOOT, THIRD DIGIT"}, {"code": "T7", "description": "RIGHT FOOT, THIRD DIGIT"}, {"code": "99", "description": "MULTIPLE MODIFIERS"}], "removed": [], "revised": []}, "dischargeStatus": {"correct": [], "revised": []}, "observationHours": {"correct": [], "revised": []}, "injectionInfusion": {"added": [], "correct": [], "removed": [], "revised": []}, "principalDiagnosis": {"correct": [{"code": "I872", "description": "VENOUS INSUFFICIENCY (CHRONIC) (PERIPHERAL) (ICD-10) "}], "revised": []}, "principalProcedure": {"added": [], "correct": [], "removed": [], "revised": []}, "secondaryDiagnosis": {"added": [], "correct": [{"code": "L84", "description": "CORNS AND CALLOSITIES (ICD-10) "}, {"code": "I872", "description": "VENOUS INSUFFICIENCY (CHRONIC) (PERIPHERAL) (ICD-10) "}, {"code": "B351", "description": "TINEA UNGUIUM (ICD-10) "}, {"code": "M79672", "description": "PAIN IN LEFT FOOT (ICD-10) "}, {"code": "I872", "description": "VENOUS INSUFFICIENCY (CHRONIC) (PERIPHERAL) (ICD-10) "}, {"code": "L603", "description": "NAIL DYSTROPHY (ICD-10) "}, {"code": "I83899", "description": "VARICOS VN UNSP LOWER EXTREMITY WITH OTHER COMPLICATIONS (ICD-10) "}, {"code": "E663", "description": "OVERWEIGHT (ICD-10) "}, {"code": "Z79899", "description": "OTHER LONG TERM (CURRENT) DRUG THERAPY (ICD-10) "}, {"code": "Z7982", "description": "LONG TERM (CURRENT) USE OF ASPIRIN (ICD-10) "}, {"code": "Z6841", "description": "BODY MASS INDEX [BMI]40.0-44.9, ADULT (ICD-10) "}], "removed": [], "revised": [{"to": {"code": "I10", "description": "ESSENTIAL (PRIMARY) HYPERTENSION (ICD-10) "}, "from": {"code": "I129", "description": "HYPERTENSIVE CHRONIC KIDNEY DISEASE W STG 1-4/UNSP CHR KDNY (ICD-10) "}}, {"to": {"code": "Z8673", "description": "PRSNL HX OF TIA (TIA), AND CEREB INFRC W/O RESID DEFICITS (ICD-10) "}, "from": {"code": "N189", "description": "CHRONIC KIDNEY DISEASE, UNSPECIFIED (ICD-10) "}}]}, "secondaryProcedure": {"added": [], "correct": [], "removed": [], "revised": []}, "facilityEvaluationManagement": {"added": [], "correct": [], "removed": [], "revised": []}, "professionalEvaluationManagement": {"added": [], "correct": [], "removed": [], "revised": []}}'::jsonb),
('20214','4116','{"cpt": {"added": [], "correct": [{"code": "3008F", "description": "BODY MASS INDEX DOCUMENTED"}], "removed": [], "revised": []}, "drg": {"correct": [], "revised": []}, "poa": {"correct": [], "revised": []}, "hcpcs": {"added": [], "correct": [], "removed": [], "revised": []}, "modifiers": {"added": [], "correct": [{"code": "95", "description": "TELEHEALTH"}], "removed": [], "revised": []}, "dischargeStatus": {"correct": [], "revised": []}, "observationHours": {"correct": [], "revised": []}, "injectionInfusion": {"added": [], "correct": [], "removed": [], "revised": []}, "principalDiagnosis": {"correct": [{"code": "J029", "description": "ACUTE PHARYNGITIS, UNSPECIFIED (ICD-10) "}], "revised": []}, "principalProcedure": {"added": [], "correct": [], "removed": [], "revised": []}, "secondaryDiagnosis": {"added": [], "correct": [{"code": "J302", "description": "OTHER SEASONAL ALLERGIC RHINITIS (ICD-10) "}, {"code": "E669", "description": "OBESITY, UNSPECIFIED (ICD-10) "}, {"code": "Z6833", "description": "BODY MASS INDEX [BMI] 33.0-33.9, ADULT (ICD-10) "}, {"code": "Z87891", "description": "PERSONAL HISTORY OF NICOTINE DEPENDENCE (ICD-10) "}, {"code": "Z713", "description": "DIETARY COUNSELING AND SURVEILLANCE (ICD-10) "}, {"code": "Z79899", "description": "OTHER LONG TERM (CURRENT) DRUG THERAPY (ICD-10) "}], "removed": [{"code": "H9201", "description": "OTALGIA, RIGHT EAR (ICD-10) "}], "revised": []}, "secondaryProcedure": {"added": [], "correct": [], "removed": [], "revised": []}, "facilityEvaluationManagement": {"added": [], "correct": [], "removed": [], "revised": []}, "professionalEvaluationManagement": {"added": [], "correct": [{"code": "99214", "description": "OFFICE/OUTPT VISIT, EST, DETAILED"}], "removed": [], "revised": []}}'::jsonb)
)

预期产出

代码语言:javascript
复制
WITH output (ctextid,vbillid,typeofcorrection,errorpara,oldvalue,newvalue) AS
(VALUES ('20211','1346','Added','HCPCS','','G0402'),
('20211','1346','Added','Modifiers','','25'),
('20211','1346','Added','Secondary Diagnosis','','E1165,Z136,Z1211'),
('20211','1346','Revised','Secondary Diagnosis','Z79899','M25512'),
('20211','1346','Revised','professionalEvaluationManagement','99396','99213'),
('20211','1347','Revised','Secondary Diagnosis','I129','I10'),
('20211','1347','Revised','Secondary Diagnosis','N189','Z8673'),
('20214','4116','Removed','Secondary Diagnosis','','H9201')
)

我尝试了以下查询:

代码语言:javascript
复制
SELECT  ctextid,vbillid,jsonb_array_elements(qaauditcodemap->'cpt'->'revised')->'from'->>'code' AS cptrevised_from,
       jsonb_array_elements(qaauditcodemap->'cpt'->'revised')->'to'->>'code' AS cptrevised_to,
       jsonb_array_elements(qaauditcodemap->'cpt'->'added')->>'code' AS cptadded,
       jsonb_array_elements(qaauditcodemap->'cpt'->'removed')->>'code' AS cptremoved,
       jsonb_array_elements(qaauditcodemap->'hcpcs'->'revised')->'from'->>'code' AS hcpcsrevised_from,
       jsonb_array_elements(qaauditcodemap->'hcpcs'->'revised')->'to'->>'code' AS hcpcsrevised_to,
       jsonb_array_elements(qaauditcodemap->'hcpcs'->'added')->>'code' AS hcpcsadded,
         jsonb_array_elements(qaauditcodemap->'hcpcs'->'removed')->>'code' AS hcpcsremoved,          jsonb_array_elements(qaauditcodemap->'modifiers'->'revised')->'from'->>'code' AS modifiersrevised_from,
       jsonb_array_elements(qaauditcodemap->'modifiers'->'revised')->'to'->>'code' AS modifiersrevised_to,
       jsonb_array_elements(qaauditcodemap->'modifiers'->'added')->>'code' AS modifiersadded,
         jsonb_array_elements(qaauditcodemap->'modifiers'->'removed')->>'code' AS modifiersremoved,          jsonb_array_elements(qaauditcodemap->'observationHours'->'revised')->'from'->>'code' AS obervationHoursrevised_from,
       jsonb_array_elements(qaauditcodemap->'observationHours'->'revised')->'to'->>'code' AS observationHoursrevised_to,
       jsonb_array_elements(qaauditcodemap->'observationHours'->'added')->>'code' AS observationHoursadded,
         jsonb_array_elements(qaauditcodemap->'observationHours'->'removed')->>'code' AS obervationHoursremoved,         jsonb_array_elements(qaauditcodemap->'injectionInfusion'->'revised')->'from'->>'code' AS injectionInfusionrevised_from,
       jsonb_array_elements(qaauditcodemap->'injectionInfusion'->'revised')->'to'->>'code' AS injectionInfusionrevised_to,
       jsonb_array_elements(qaauditcodemap->'injectionInfusion'->'added')->>'code' AS injectionInfusionadded,
         jsonb_array_elements(qaauditcodemap->'injectionInfusion'->'removed')->>'code' AS injectionInfusionremoved,          jsonb_array_elements(qaauditcodemap->'principalDiagnosis'->'revised')->'from'->>'code' AS principalDiagnosisrevised_from,
       jsonb_array_elements(qaauditcodemap->'principalDiagnosis'->'revised')->'to'->>'code' AS principalDiagnosisrevised_to,
       jsonb_array_elements(qaauditcodemap->'principalDiagnosis'->'added')->>'code' AS principalDiagnosisadded,
         jsonb_array_elements(qaauditcodemap->'principalDiagnosis'->'removed')->>'code' AS principalDiagnosisremoved,        jsonb_array_elements(qaauditcodemap->'principalProcedure'->'revised')->'from'->>'code' AS principalProcedurerevised_from,
       jsonb_array_elements(qaauditcodemap->'principalProcedure'->'revised')->'to'->>'code' AS principalProcedurerevised_to,
       jsonb_array_elements(qaauditcodemap->'principalProcedure'->'added')->>'code' AS principalProcedureadded,
         jsonb_array_elements(qaauditcodemap->'principalProcedure'->'removed')->>'code' AS principalProcedureremoved
  
        FROM qareport

你能帮我达到预期的效果吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-19 07:17:10

我希望了解您的结构查询和表和下面的查询帮助您。

您可以看到我的结构表和查询结果:[医]小提琴

没有聚合的

代码语言:javascript
复制
with allow_category as (select unnest(array [
    'cpt',
    'drg',
    'modifiers',
    'secondaryDiagnosis',
    'principalDiagnosis',
    'secondaryProcedure',
    'observationhours',
    'dischargeStatus',
    'principalprocedure',
    'hcpcs',
    'professionalEvaluationManagement'
    ]::text[]) category)
select distinct ctextid,
                vbillid,
                initcap(kcy.key)                                                   as typeofcorrection,
                initcap(regexp_replace(kc.key, '([a-z])([A-Z])', '\1 \2', 'g'))    as errorpara,
                case when f ? 'from' then f -> 'from' ->> 'code' else '' end       as oldvalue,
                case when f ? 'to' then f -> 'to' ->> 'code' else f ->> 'code' end as newvalue
from qareport q
         cross join jsonb_each(q.codemap) as kc
         cross join jsonb_each(kc.value) as kcy
         join jsonb_array_elements(kcy.value) f on true
where kc.key in (select * from allow_category)
  and kcy.key in ('added', 'revised', 'removed')
  and (
        jsonb_array_length(kc.value -> 'added') > 0
        or jsonb_array_length(kc.value -> 'revised') > 0
        or jsonb_array_length(kc.value -> 'removed') > 0
    );

具有聚合的

代码语言:javascript
复制
with allow_category as (select unnest(array [
    'cpt',
    'drg',
    'modifiers',
    'secondaryDiagnosis',
    'principalDiagnosis',
    'secondaryProcedure',
    'observationhours',
    'dischargeStatus',
    'principalprocedure',
    'hcpcs',
    'professionalEvaluationManagement'
    ]::text[]) category)
select distinct ctextid,
                vbillid,
                initcap(kcy.key)                                                   as typeofcorrection,
                initcap(regexp_replace(kc.key, '([a-z])([A-Z])', '\1 \2', 'g'))    as errorpara,
                case when f ? 'from' then f -> 'from' ->> 'code' else '' end       as oldvalue,
                case
                    when f ? 'to' then f -> 'to' ->> 'code'
                    else string_agg(f ->> 'code', ',')
                         over (partition by ctextid, vbillid, kcy.key, kc.key) end as newvalue
from qareport q
         cross join jsonb_each(q.codemap) as kc
         cross join jsonb_each(kc.value) as kcy
         join jsonb_array_elements(kcy.value) f on true
where kc.key in (select * from allow_category)
  and kcy.key in ('added', 'revised', 'removed')
  and (
        jsonb_array_length(kc.value -> 'added') > 0
        or jsonb_array_length(kc.value -> 'revised') > 0
        or jsonb_array_length(kc.value -> 'removed') > 0
    );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68159800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档