Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BKMQQCRA

BKMQQCRA.m

Go to the documentation of this file.
  1. BKMQQCRA ;PRXM/HC/BWF - BKM Quality of Care Report ; 13 Jun 2005 3:41 PM
  1. ;;2.1;HIV MANAGEMENT SYSTEM;;Feb 07, 2011
  1. ; Quality of Care Audit Report
  1. ; Modified to write to a temporary file for iCare
  1. ;
  1. PRINT ; EP - Print report.
  1. N TOTPTS,EXDT,INST,HEEXT,CONFS,CONFE,BKMRTN
  1. N LNLEN,LINE,X
  1. N APCHSPAT,APCHSTYP
  1. S DATA=$NA(^TMP("BQIQOC",UID)) K @DATA
  1. ;
  1. S LNLEN=80 ; 80 Character display - currently hardcoded - could be a parameter
  1. S LINE="",$P(LINE,"-",LNLEN-1)=""
  1. S CONFS="**** CONFIDENTIAL PATIENT INFORMATION ****"
  1. S CONFE="**** END CONFIDENTIAL PATIENT INFORMATION ****"
  1. ;D NOW^%DTC
  1. S EXDT=$$FMTE^XLFDT($$NOW^XLFDT())
  1. S INST=$$GET1^DIQ(4,$G(DUZ(2)),.01,"E")
  1. S HEEXT=$P($$FMTE^XLFDT(EDATE),"@",1)
  1. D COLHDR
  1. S TOTPTS=+$G(@GLOB@("HIVTOT1"))
  1. I TOTPTS=0,$D(NDA) S BMXSEC="RPC Call Failed: This report cannot be run. None of the patients selected for this report meet the criteria."_$C(30) Q
  1. I TOTPTS=0 D UPD("No Data to Report") G DONE
  1. D HDR
  1. D UPD(" Total Patients Reviewed: "_(TOTPTS+$G(NDA)))
  1. D UPD(" Number of Patient Included in this Report "_TOTPTS)
  1. ;D UPD(TOTPTS_" Included in this Report .")
  1. D UPD(" (Eligible Population)")
  1. ;D UPD($$LINE("","#",50)_" %")
  1. D UPD("")
  1. ;D UPD(" Total Number of Eligible Trimesters: 4")
  1. ;D UPD("")
  1. D UPD(" Number Percentage")
  1. D WC(" Gender: Male","MALE")
  1. D WC(" Female","FEMALE")
  1. I @GLOB@("UNSPEC") D WC(" Unspecified","UNSPEC")
  1. D UPD("")
  1. D WC(" Age <15 yrs","AGE1")
  1. D WC(" 15-44 yrs","AGE2")
  1. D WC(" 45-64 yrs","AGE3")
  1. D WC(" >64 yrs","AGE4")
  1. D UPD("")
  1. D UPD(" Visits and Related Labs ")
  1. D UPD(" Every 4 months")
  1. D WP(" Total # of Patients w/ Visits","V4M","TOTAL")
  1. D WP(" Patients w/ only a CD4 Count ","CD4M","TOTAL")
  1. D UPD(" every 4 months")
  1. D WP(" Patients w/ only a Viral Load ","VR4M","TOTAL")
  1. D UPD(" every 4 months")
  1. D WP(" Patients w/ both a CD4 Count & a Viral ","BT4M","TOTAL")
  1. D UPD(" Load every 4 months")
  1. D UPD(" Every 6 months")
  1. D WP(" Total # of Patients w/ Visits","V6M","TOTAL")
  1. D WP(" Patients w/ only a CD4 Count ","CD6M","TOTAL")
  1. D UPD(" every 6 months")
  1. D WP(" Patients w/ only a Viral Load ","VR6M","TOTAL")
  1. D UPD(" every 6 months")
  1. D WP(" Patients w/ both a CD4 Count & a Viral ","BT6M","TOTAL")
  1. D UPD(" Load every 6 months")
  1. D UPD("")
  1. D WC(" Number of CD4 counts in Last Time Period","LCD4M",1)
  1. D UPD("")
  1. D WC(" Number of Viral Loads in Last Time Period","LVR4M",1)
  1. ;D UPD(" Time Period")
  1. D UPD("")
  1. D UPD(" ARV Management")
  1. D UPD(" Stable")
  1. D WP(" Period 1","STCP1","TOTAL")
  1. D WP(" Period 2","STCP2","TOTAL")
  1. D WP(" Period 3","STCP3","TOTAL")
  1. D UPD(" Unstable")
  1. D WP(" Period 1","UNCP1","TOTAL")
  1. D WP(" Period 2","UNCP2","TOTAL")
  1. D WP(" Period 3","UNCP3","TOTAL")
  1. D UPD(" End Stage")
  1. D WP(" Period 1","ENCP1","TOTAL")
  1. D WP(" Period 2","ENCP2","TOTAL")
  1. D WP(" Period 3","ENCP3","TOTAL")
  1. ;D UPD(" No Other Therapeutic Option")
  1. ;D WP(" Period 1","NNCP1","TOTAL")
  1. ;D WP(" Period 2","NNCP2","TOTAL")
  1. ;D WP(" Period 3","NNCP3","TOTAL")
  1. D UPD(" Documentation Assessment")
  1. D WP(" Period 1","AHCP1","TOTAL")
  1. D WP(" Period 2","AHCP2","TOTAL")
  1. D WP(" Period 3","AHCP3","TOTAL")
  1. D UPD("")
  1. D WP(" Patients Managed Appropriately","APPMGT","TOTAL")
  1. D UPD("")
  1. D UPD(" HAART")
  1. D WP(" Total number of patients on HAART","HAART","TOTAL")
  1. D WP(" CD4 0-199","HCD4RES1","TOTAL")
  1. D WP(" CD4 200-349","HCD4RES2","TOTAL")
  1. D WP(" CD4 350-499","HCD4RES3","TOTAL")
  1. D WP(" CD4 greater than or equal to 500","HCD4RES4","TOTAL")
  1. D WP(" Viral Load less than 400","HVIRSUP","TOTAL")
  1. D WP(" Viral Load greater than or equal to 400","HVIRNOT","TOTAL")
  1. D WP(" Viral Load not assessed in past 6 months","HVIR6M","TOTAL")
  1. D UPD("")
  1. D UPD(" NO HAART")
  1. D WP(" Total # of patients","NOHAART","TOTAL")
  1. D WP(" CD4 0-199","NHCD4RES1","TOTAL")
  1. D WP(" CD4 200-349","NHCD4RES2","TOTAL")
  1. D WP(" CD4 350-499","NHCD4RES3","TOTAL")
  1. D WP(" CD4 greater than or equal to 500","NHCD4RES4","TOTAL")
  1. D UPD("")
  1. D UPD(" Prophylaxis")
  1. D WP(" PCP","PCPT","TOTAL")
  1. D WP(" MAC","MACT","TOTAL")
  1. D UPD("")
  1. D UPD(" Screening Indicators")
  1. D UPD(" Lipid Profile")
  1. D WP(" Total # received lipid profile","LIPT","TOTAL")
  1. D WP(" Total # on ARV Regimen","LIPT","LIPIDARV")
  1. D WP(" Total # refused Profile","LIPT","LIPIDREF")
  1. D UPD(" PPD Screening")
  1. D WP(" Total # of TB tests needed","TUBT","NEEDPPD")
  1. D WP(" PPD Received","TUBT","PY")
  1. D WP(" PPD+","TUBT","POSPY")
  1. D WP(" Treatment Provided","TUBT","MED")
  1. D WP(" PPD-","TUBT","NEGPY")
  1. D WP(" PPD Refused","TUBT","REF")
  1. D WP(" PPD Unknown","TUBT","UND")
  1. D UPD(" Hepatitis C Screening")
  1. D WP(" Total # screened","HEPCT","TOTAL")
  1. D UPD(" Syphilis Screening")
  1. D WP(" Total # screened ","RPRT","TOTAL")
  1. D WP(" Reactive","RPRT","REAC")
  1. D WP(" Non-Reactive","RPRT","NONREAC")
  1. D WP(" Refused","RPRT","REF")
  1. D WP(" NMI","RPRT","REFNMI")
  1. D WP(" Undetermined","RPRT","UND")
  1. D UPD(" Chlamydia Screening")
  1. D WP(" Total # screened","CHLAMT","TOTAL")
  1. D WP(" Total # of men screened","CHLAMT","MALE")
  1. D WP(" Total # of women screened","CHLAMT","FEMALE")
  1. D WP(" Total Positive","CHLAMT","POS")
  1. D WP(" Total Negative","CHLAMT","NEG")
  1. D WP(" Total Refused","CHLAMT","REF")
  1. D WP(" NMI","CHLAMT","REFNMI")
  1. D WP(" Undetermined","CHLAMT","UND")
  1. D UPD(" Gonorrhea Screening")
  1. D WP(" Total # screened","GONT","TOTAL")
  1. D WP(" Total # of men screened","GONT","MALE")
  1. D WP(" Total # of women screened","GONT","FEMALE")
  1. D WP(" Total Positive","GONT","POS")
  1. D WP(" Total Negative","GONT","NEG")
  1. D WP(" Total Refused","GONT","REF")
  1. D WP(" NMI","GONT","REFNMI")
  1. D WP(" Undetermined","GONT","UND")
  1. D UPD(" Colorectal Cancer Screening (CRC)")
  1. D WP(" Total # screenings needed","CRCT","TOTAL")
  1. D WP(" CRC screens performed w/in 10yrs","CRCT","CRC")
  1. D UPD(" prior to the report end date")
  1. D WP(" CRC screens refused w/in 10 yrs","CRCT","CRCR")
  1. D UPD(" prior to the report end date")
  1. D UPD("")
  1. D UPD(" General Medical Care Exams - Yearly")
  1. D WP(" Ophthalmology care","EYET","TOTAL")
  1. D WP(" Oral Health","DENTT","TOTAL")
  1. D WP(" Pap smear (women)","PAPT","TOTAL")
  1. D UPD("")
  1. D UPD(" Vaccination")
  1. D WP(" Pneumovax w/in 5 yrs of report end","PNEUMOT","TOTAL")
  1. D UPD(" date OR 2 ever ")
  1. D WP(" Tetanus w/in 10 yrs of report end date","TETT","TOTAL")
  1. D UPD("")
  1. D UPD(" Substance Use Screening and Mental Health Screening")
  1. D WP(" Tobacco Use Screening","TOBT","SCREEN")
  1. D WP(" Current Tobacco User","TOBT","USER")
  1. D WP(" If Yes, Counseled","TOBT","ED")
  1. D WP(" Not a Current User","TOBT","NON")
  1. D WP(" Not Documented","TOBT","UNK")
  1. D UPD("")
  1. D WP(" Substance Use Screening","SUBST","TOTAL")
  1. D UPD("")
  1. D UPD(" Mental Health Screening")
  1. D WP(" Total # Who Received All Components","MHSCRN","TOTAL")
  1. D WP(" Cognitive Function","MHCOG","TOTAL")
  1. D WP(" Depression","MHDEP","TOTAL")
  1. D WP(" Anxiety","MHANX","TOTAL")
  1. D WP(" Sleep","MHSLEEP","TOTAL")
  1. D WP(" Appetite","MHAPP","TOTAL")
  1. D WP(" Domestic Violence","MHDV","TOTAL")
  1. D WP(" Post-Traumatic Stress Disorder","MHPTSD","TOTAL")
  1. D WP(" Psychosocial Assessment","MHPSYC","TOTAL")
  1. D UPD("")
  1. D UPD(" Patient Education")
  1. D WP(" Safe Sex education","SSEX","TOTAL")
  1. D WP(" Family Planning education","FPLN","TOTAL")
  1. D WP(" HIV/AIDS related education","HIVED","TOTAL")
  1. D UPD("")
  1. ;PRXM/HC/BHS - 05/10/2006 - Force page break before patient list
  1. D UPD($C(12),1)
  1. D HDR
  1. D CTR("HMS Quality of Care Report"),UPD("")
  1. D UPD(" This report includes all patients who meet the criteria of the selected")
  1. D UPD(" denominator:"),UPD("")
  1. ;I $G(BKMRPOP)'="" D
  1. ;. D UPD(" * Register Status = Active") ;W !!
  1. ;. D UPD(" * Current Diagnosis ="_$S($P(DENPOP,":",2)=" All":" HIV and AIDS",1:$P(DENPOP,":",2))) ;W ?5,"* Current Diagnosis =",$S($P(DENPOP,":",2)=" All":" HIV and AIDS",1:$P(DENPOP,":",2))
  1. D UPD(" 1) HMS Register Status Active with HMS Dx Category values empty, HIV or AIDS")
  1. D UPD(" (i.e., no ""At Risk"" patients);"),UPD("")
  1. D UPD(" OR"),UPD("")
  1. D UPD(" 2) Proposed and/or Accepted Dx tag of HIV/AIDS (user selects either or both")
  1. D UPD(" Tag Status);"),UPD("")
  1. D UPD(" OR"),UPD("")
  1. D UPD(" 3) Specific patients on the grid."),UPD("")
  1. D UPD(" Any denominator is filtered automatically by the following logic: patients")
  1. D UPD(" must have at least one HIV/AIDS POV or Active Problem List or HMS Initial")
  1. D UPD(" HIV Dx Date or HMS Initial AIDS Dx Date 6 months or more prior to report")
  1. D UPD(" end date."),UPD("")
  1. ;D UPD(" * "_DENPOP),UPD("")
  1. D UPD(" Total patients reviewed (All patients in denominator): "_(TOTPTS+$G(NDA))),UPD("") ;,!!
  1. ;D UPD(" Total Patients Reviewed: "_(TOTPTS+$G(NDA))),UPD("") ;,!!
  1. D UPD(" Number of Patients included on Report (filtered denominator): "_TOTPTS),UPD("")
  1. D UPD(" Number of Patients NOT included on Report: "_+$G(NDA)),UPD("")
  1. D UPD($C(12),1)
  1. D HDR
  1. D UPD(" The following user selected patients are included on this report:")
  1. D UPD("")
  1. S BKMRTN=""
  1. D PATHDR
  1. ; Loop through patient list
  1. S BKMDFN=""
  1. F S BKMDFN=$O(@GLOB@("HIVCHK",BKMDFN)) Q:BKMDFN=""!('+BKMDFN) D
  1. . S BKMPATN=$$GET1^DIQ(2,BKMDFN,".01","E")
  1. . I BKMPATN="" S BKMPATN="{MISSING NAME}"
  1. . S @GLOB@("HIVCHK","SORTED BY NAME",BKMPATN,BKMDFN)=""
  1. ; Loop through patient list sorted by name
  1. S BKMPATN="",BKMRTN=""
  1. F S BKMPATN=$O(@GLOB@("HIVCHK","SORTED BY NAME",BKMPATN)) Q:BKMPATN="" D Q:BKMRTN="^"
  1. . S BKMDFN="",BKMRTN=""
  1. . F S BKMDFN=$O(@GLOB@("HIVCHK","SORTED BY NAME",BKMPATN,BKMDFN)) Q:BKMDFN=""!('+BKMDFN) D Q:BKMRTN="^"
  1. .. D PAT(BKMPATN,BKMDFN)
  1. I $D(NDA) D
  1. . D UPD("")
  1. . D UPD($C(12),1)
  1. . D HDR
  1. . ; Loop through patient list
  1. . ;D UPD(""),UPD(+$G(NDA)_" patients were reviewed and not included in this report because they did")
  1. . ;D UPD("not meet the first criteria listed above."),UPD("")
  1. . D UPD(" The following user selected patients are NOT included in the report:"),UPD("")
  1. . D PATHDR
  1. . S BKMPATN=""
  1. . F S BKMPATN=$O(NDA(BKMPATN)) Q:BKMPATN="" D
  1. .. S BKMDFN=""
  1. .. F S BKMDFN=$O(NDA(BKMPATN,BKMDFN)) Q:BKMDFN="" D
  1. ... D PAT(BKMPATN,BKMDFN)
  1. D UPD(""),UPD("")
  1. D CTR(CONFE)
  1. S BQII=BQII+1,@DATA@(BQII)=$C(30)
  1. G DONE
  1. ;
  1. HDR ; Report header
  1. D UPD($$PAD^BKMIXX4($$GET1^DIQ(200,DUZ_",","1","E"),">"," ",55)_$$PAD^BKMIXX4($$FMTE^BQIUL1($$NOW^XLFDT()),">"," ",25)) ;***
  1. D CTR(INST)
  1. D CTR("HMS CUMULATIVE AUDIT REPORT")
  1. D CTR("HIV QUALITY OF CARE")
  1. ;D CTR("*** HMS CUMULATIVE AUDIT REPORT -- HIV QUALITY OF CARE ***")
  1. I PLNM'="" D CTR(PLNM)
  1. D CTR(DENPOP)
  1. ;D CTR("Denominator Population - "_DENPOP)
  1. D CTR("PERIOD ENDING: "_HEEXT)
  1. ;D CTR("Period Ending: "_HEEXT)
  1. D CTR(CONFS)
  1. D UPD(" "_LINE)
  1. Q
  1. ;
  1. WC(STR,TYPE,PER) ;
  1. N VAL
  1. I TYPE="" Q
  1. I $G(PER)="" S PER=0
  1. S VAL=+$G(@GLOB@(TYPE))
  1. S STR=$$LINE(STR,$J(VAL,3),47)
  1. ;W ?47,$J(VAL,3)
  1. I 'PER S STR=$$LINE(STR,$J(VAL/TOTPTS*100,5,1)_"%",55)
  1. ;W ?55,$J(VAL/TOTPTS*100,5,1),"%",!
  1. D UPD(STR)
  1. Q
  1. WP(STR,CAT,TYPE) ;
  1. N VAL,PERC
  1. I TYPE="" Q
  1. S VAL=+$G(@GLOB@(CAT,TYPE,"CNT"))
  1. S STR=$$LINE(STR,$J(VAL,3),47)
  1. ;W ?47,$J(VAL,3)
  1. S PERC=$G(@GLOB@(CAT,TYPE,"PERC"))
  1. S STR=$$LINE(STR,$J(PERC,5,1)_"%",55)
  1. D UPD(STR)
  1. ;W ?55,$J(PERC,5,1),"%",!
  1. Q
  1. PAT(BKMPATN,BKMDFN) ;
  1. N BKMIEN,BKMREG,TEXT,DXCAT
  1. Q:$G(BKMPATN)=""!($G(BKMDFN)="")
  1. S TEXT=$G(BKMPATN)
  1. ;S TEXT=" "_$G(BKMPATN)
  1. S TEXT=$$LINE(TEXT,$$HRN^BKMVA1(BKMDFN),29)
  1. S TEXT=$$LINE(TEXT," "_$$GET1^DIQ(2,BKMDFN,".033","E"),36)
  1. S TEXT=$$LINE(TEXT," "_$$GET1^DIQ(2,BKMDFN,".02","I"),40)
  1. ;S DXCAT=$P($$ACT^BKMQUTL(BKMDFN,HMSIEN,""),U,2)
  1. ;I DXCAT'="" S TEXT=$$LINE(TEXT,"HIV/AIDS ("_DXCAT_")",45)
  1. S BKMIEN=$$BKMIEN^BKMIXX3(BKMDFN)
  1. I BKMIEN="" D UPD(TEXT) Q
  1. S BKMREG=$$BKMREG^BKMIXX3(BKMIEN)
  1. I BKMREG="" D UPD(TEXT) Q
  1. ;S TEXT=$$LINE(TEXT," "_$$GET1^DIQ(90451.01,BKMREG_","_BKMIEN_",",".5","E"),58)
  1. S TEXT=$$LINE(TEXT,$E($$GET1^DIQ(90451.01,BKMREG_","_BKMIEN_",","2.3","E"),1,4),44)
  1. S TEXT=$$LINE(TEXT,$$FMTE^XLFDT($$GET1^DIQ(90451.01,BKMREG_","_BKMIEN_",","5","I"),"5Z"),49)
  1. S TEXT=$$LINE(TEXT,$$FMTE^XLFDT($$GET1^DIQ(90451.01,BKMREG_","_BKMIEN_",","5.5","I"),"5Z"),61)
  1. S DXCAT=$P($$ACT^BKMQUTL(BKMDFN,HMSIEN,""),U,2)
  1. I DXCAT'="" S TEXT=$$LINE(TEXT,DXCAT,76)
  1. D UPD(TEXT)
  1. Q
  1. PATHDR ;
  1. N BKMHDR,TEXT
  1. S $P(BKMHDR,"-",79)=""
  1. S TEXT=" "
  1. S TEXT=$$LINE(TEXT,"REG",44)
  1. S TEXT=$$LINE(TEXT,"INITIAL HIV",49)
  1. S TEXT=$$LINE(TEXT,"INITIAL AIDS",61)
  1. S TEXT=$$LINE(TEXT,"TAG",74)
  1. D UPD(TEXT)
  1. S TEXT="PATIENT NAME"
  1. S TEXT=$$LINE(TEXT,"HRN",29)
  1. S TEXT=$$LINE(TEXT,"AGE",36)
  1. S TEXT=$$LINE(TEXT,"SEX",40)
  1. S TEXT=$$LINE(TEXT,"DX",45)
  1. S TEXT=$$LINE(TEXT,"DX DATE",52)
  1. S TEXT=$$LINE(TEXT,"DX DATE",65)
  1. S TEXT=$$LINE(TEXT,"STATUS",74)
  1. D UPD(TEXT)
  1. S TEXT=$E(BKMHDR,1,12)
  1. S TEXT=$$LINE(TEXT,$E(BKMHDR,1,3),29)
  1. S TEXT=$$LINE(TEXT,$E(BKMHDR,1,3),36)
  1. S TEXT=$$LINE(TEXT,$E(BKMHDR,1,3),40)
  1. S TEXT=$$LINE(TEXT,$E(BKMHDR,1,3),44)
  1. S TEXT=$$LINE(TEXT,$E(BKMHDR,1,11),49)
  1. S TEXT=$$LINE(TEXT,$E(BKMHDR,1,12),61)
  1. S TEXT=$$LINE(TEXT,$E(BKMHDR,1,6),74)
  1. D UPD(TEXT)
  1. Q
  1. ;
  1. CTR(TEXT) ; EP - Center data.
  1. ;
  1. ; Input - TEXT - Text (required)
  1. ; LENGTH - Line length (default is 80)
  1. ; This utility will center the data before filing it to the RPC temporary global.
  1. ;
  1. N CENTER,CLINE,LEN,START
  1. S LEN=$L(TEXT)
  1. S CENTER=LEN/2,CLINE=LNLEN/2
  1. S START=CLINE-CENTER\1
  1. S TEXT=$$LINE("",TEXT,START)
  1. D UPD(TEXT)
  1. Q
  1. ;
  1. LINE(TEXT,STR,POS) ; Set text to match Quality of Care report formatting
  1. I $L(TEXT)>POS Q TEXT_STR
  1. S $E(TEXT,POS)=STR
  1. Q TEXT
  1. ;
  1. UPD(LINE,SUPP) ; Update global with line of text; update page and total line count
  1. ;SUPP - Suppress line feed carriage return
  1. S SUPP=$G(SUPP)
  1. S BQII=BQII+1,@DATA@(BQII)=LINE_$S(SUPP:"",1:$C(13)_$C(10))
  1. Q
  1. ;
  1. DONE ;
  1. ;
  1. S BQII=BQII+1,@DATA@(BQII)=$C(31)
  1. Q
  1. ;
  1. COLHDR ;
  1. S @DATA@(BQII)="T00120REPORT_TEXT"_$C(30)
  1. ;S @DATA@(BQII)="T99999REPORT_TEXT"_$C(30)
  1. Q