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

BKMVSSR.m

Go to the documentation of this file.
  1. BKMVSSR ;PRXM/HC/CJS - STATE SURV. REPORT ; 14 Jun 2005 3:06 PM
  1. ;;2.1;HIV MANAGEMENT SYSTEM;;Feb 07, 2011
  1. ;
  1. ;
  1. ;This report will use the skeleton structure as provided by
  1. ;file 90456
  1. EN ;PRIMARY REPORT ENTRY POINT
  1. ; Check taxonomies - added per bugzilla #1497
  1. NEW DFLAG
  1. S DFLAG=1 D EN^BKMVC1
  1. N DFN
  1. S BKMX=0
  1. S TYPE=$$TYPE()
  1. I $D(DTOUT)!$D(DUOUT) G XIT
  1. I TYPE="B" D QUE("") G XIT
  1. D RLK^BKMPLKP("") G:$G(DFN)="" XIT
  1. I $$CKAGE() G XIT
  1. D QUE(DFN)
  1. G XIT
  1. ;
  1. AGE ;GET PATIENT DOB AND DIAGNOSIS INFO AND CALCULATE AGE AT DIAGNOSIS
  1. S BKMDDT=""
  1. S BKMVDOB=$$GET1^DIQ(2,DFN,.03,"I")
  1. S BKMVDOD=$$GET1^DIQ(2,DFN,.351,"I")
  1. S IEN=$$FIND1^DIC(90451,,"Q",DFN,"B")
  1. I IEN]"" D
  1. . S BKMDIAG=$$GET1^DIQ(90451.01,"1,"_IEN,2.3,"E")
  1. . S:BKMDIAG'="HIV"&(BKMDIAG'="AIDS") BKMDIAG=""
  1. . S:BKMDIAG="HIV" BKMDDT=$$GET1^DIQ(90451.01,"1,"_IEN,5,"I")
  1. . S:BKMDIAG="AIDS" BKMDDT=$$GET1^DIQ(90451.01,"1,"_IEN,5.5,"I")
  1. ; Calculate age at date of diagnosis, if available.
  1. ; Otherwise, calculate age at date of death, if available.
  1. ; Otherwise, calculate age at date of report.
  1. D
  1. . I BKMVDOB>0&(BKMDDT>0) S BKMVAGED=$$FMDIFF^XLFDT(BKMDDT,BKMVDOB)\365.25 Q
  1. . I BKMVDOB>0&(BKMVDOD>0) S BKMVAGED=$$FMDIFF^XLFDT(BKMVDOD,BKMVDOB)\365.25 Q
  1. . I BKMVDOB>0 S BKMVAGED=$$FMDIFF^XLFDT(DT,BKMVDOB)\365.25 Q
  1. . S BKMVAGED="UNK"
  1. Q
  1. FAC ;GATHER FACILITY DATA
  1. S BKMLOC=$$GET1^DIQ(9999999.39,1,.01,"I")
  1. S BKMVLOC=$$GET1^DIQ(4,BKMLOC,.01,"E")
  1. S BKMVLAD=$$GET1^DIQ(4,BKMLOC,1.01,"E")
  1. S BKMVLAD1=$$GET1^DIQ(4,BKMLOC,1.02,"E")
  1. S BKMVLST=$$GET1^DIQ(4,BKMLOC,.02,"E")
  1. S BKMVLCTY=$$GET1^DIQ(4,BKMLOC,1.03,"E")
  1. S BKMVLZIP=$$GET1^DIQ(4,BKMLOC,1.04,"E")
  1. Q
  1. PATDEMO ;GET PATIENT DEMOGRAPHICS
  1. S BKMVSEX=$$GET1^DIQ(2,DFN,.02,"E")
  1. S BKMVSDTH=$$GET1^DIQ(9000001,DFN,1115,"E")
  1. S BKMVSTAT="Alive" I BKMVDOD]"" S BKMVSTAT="Dead"
  1. ; An inactive record should be reported as 'Unknown' instead of 'Alive'.
  1. I $G(IEN)]"",$$GET1^DIQ(90451.01,"1,"_IEN,.5,"I")="I",BKMVSTAT="Alive" S BKMVSTAT="Unknown"
  1. S BKMVHRN=$$GET1^DIQ(9000001.41,BKMLOC_","_DFN,.02,"E")
  1. S BKMVRCE=$$GET1^DIQ(9000001,DFN,1111,"E") D
  1. .I BKMVRCE="INDIAN/ALASKA NATIVE" S BKMVRCE="AMERICAN INDIAN OR ALASKA NATIVE" Q
  1. .S BKMVRCE=$$GET1^DIQ(2,DFN,.06,"E")
  1. S BKMVETH="",BKM=0
  1. F S BKM=$O(^DPT(DFN,.06,BKM)) Q:'BKM S BKMVETH=$P(^DPT(DFN,.06,BKM,0),U,1)
  1. S:BKMVETH'="" BKMVETH=$$GET1^DIQ(10.2,BKMVETH,.01,"E")
  1. S BKMVPHN=$$GET1^DIQ(2,DFN,.131,"E")
  1. S BKMVPOB=$$GET1^DIQ(2,DFN,.093,"I")
  1. S BKMVADD1=$$GET1^DIQ(2,DFN,.111,"E")
  1. S BKMVADD2=$$GET1^DIQ(2,DFN,.112,"E")
  1. S BKMVADD3=$$GET1^DIQ(2,DFN,.113,"E")
  1. S BKMVCITY=$$GET1^DIQ(2,DFN,.114,"E")
  1. S BKMVPST=$$GET1^DIQ(2,DFN,.115,"E")
  1. S BKMVPZP=$$GET1^DIQ(2,DFN,.116,"E")
  1. S BKMVCNTY=$$GET1^DIQ(2,DFN,.117,"E")
  1. S BKMVADDL=BKMVADD1_"," D
  1. .I BKMVADD2'="" S BKMVADDL=BKMVADDL_BKMVADD2_","
  1. .I BKMVADD3'="" S BKMVADDL=BKMVADDL_BKMVADD3_","
  1. .I BKMVCITY'="" S BKMVADDL=BKMVADDL_BKMVCITY_","
  1. .I BKMVPST'="" S BKMVADDL=BKMVADDL_BKMVPST_" "
  1. .I BKMVPZP'="" S BKMVADDL=BKMVADDL_" "_BKMVPZP
  1. Q
  1. PRACDIAG ;GATHER PROVIDER DATA
  1. S BKMPROV=$$GET1^DIQ(90451.01,"1,"_IEN,6,"I")
  1. I $G(IEN)]"",BKMPROV="" S BKMPROV=$$GET1^DIQ(90451.01,"1,"_IEN,6.5,"I")
  1. S BKMVPPH=$S(BKMPROV]"":$$GET1^DIQ(200,BKMPROV,.132,"E"),1:"")
  1. I BKMPROV]"" S BKMPROV=$$GET1^DIQ(200,BKMPROV,.01,"E")
  1. Q
  1. QUE(DFN) ;QUEUE REPORT FOR PRINT/DISPLAY
  1. ;DFN is set to "" if a blank form is desired
  1. K %ZIS,IOP,IOC,ZTIO S %ZIS="MQ" D ^%ZIS G:POP XIT
  1. I $D(IO("Q")) D G XIT
  1. .S ZTRTN="DQUE^BKMVSSR",ZTDESC="HMS STATE SURVEILLANCE REPORT"
  1. .S ZTSAVE("BKM*")="",ZTSAVE("DFN")="",ZTSAVE("IEN")=""
  1. .K IO("Q") D ^%ZTLOAD W:$D(ZTSK) !,"REQUEST QUEUED" H 2
  1. DQUE ;ENTRY FROM QUEUE
  1. U IO
  1. I $G(DFN)="" G DQUE1 ; Skip DFN lookups if generating blank form.
  1. D FAC,PATDEMO,PRACDIAG
  1. D EN^BKMVSSR1 G:BKMX XIT
  1. D EN^BKMVSSR2 G:BKMX XIT
  1. DQUE1 ;
  1. D EN^BKMVSSR3 G:BKMX XIT
  1. D EN^BKMVSSR4 G:BKMX XIT
  1. D EN^BKMVSSR5 G:BKMX XIT
  1. D EN^BKMVSSR6 G:BKMX XIT
  1. I IOST["C-" D
  1. .I $Y>(IOSL-4) D HDR^BKMVSSR3 Q:BKMX D HDR1^BKMVSSR3
  1. .W !!?1,"**End of report**"
  1. .S BKMX=$$PAUSE^BKMIXX3
  1. Q
  1. XIT ;KILL LOCALS AND EXIT
  1. D ^%ZISC
  1. K BKMVADD1,BKMVADD2,BKMVADD3,BKMVCITY,BKMVPST,BKMVPZP,BKMVETH
  1. K BKMPROV,BKMVPPH,BKMDIAG,BKMDT,BKMVDOB,BKMDDT
  1. K BKM,BKM0,BKM1,BKM2,BKMIEN,BKMHAART,BKMHDR,BKMHDR1,BKMX,BKMCC
  1. K BKMICD,BKMLINE,BKMLINE1,BKMLOC,BKMNDT,BKMPAD,BKMPCP,BKMCKDT
  1. K BKMSEC,BKMSICD,BKMVADDL,BKMVAGED,BKMVDOD,BKMVPOB
  1. K BKMVETO,BKMVHRN,BKMVLABS,BKMVNDT,BKMVPHN,BKMVCNTY
  1. K BKMVLAD,BKMVLAD1,BKMVLCTY,BKMVLN,BKMVLOC,BKMVLST,BKMVLZIP
  1. K BKMSIG,BKMQTY,BKMDAY,BKMVRCE,BKMVSDTH,BKMVSEX,BKMVSTAT,PAGE
  1. K POP,X,Y,DIR,DIWF,DIWL,DIWR,DTOUT,DUOUT,GLOBAL,IEN,%DT,%H,TYPE
  1. Q
  1. ;
  1. EN1 ;EP - Secondary entry point from within REP action of Review/Edit Patient HMS Record Data option
  1. S BKMX=0
  1. S TYPE=$$TYPE()
  1. I $D(DTOUT)!$D(DUOUT) G XIT
  1. I TYPE="B" D QUE("") G XIT
  1. I $$CKAGE() G XIT
  1. D QUE(DFN)
  1. G XIT
  1. TYPE() ;Type of report requested
  1. K DIR
  1. S DIR(0)="S^B:BLANK;P:PATIENT"
  1. S DIR("A")=" Type of form"
  1. S DIR("?",1)=" 'B' to print a form with fields empty (fill-in-the-blank)"
  1. S DIR("?",2)=" 'P' to print a form with fields filled in for a selected patient"
  1. S DIR("?")=" "
  1. D ^DIR
  1. Q $G(Y)
  1. CKAGE() ;Call AGE subroutine and confirm eligibility for report
  1. D AGE
  1. I $G(BKMVAGED)<13 D I BKMX Q 1
  1. . W !!,"Patient age at diagnosis less than 13. Not a reportable case."
  1. . K DIR
  1. . S DIR(0)="YA"
  1. . S DIR("A")="Would you like to print a copy anyway (Y/N)? ",DIR("B")="N"
  1. . D ^DIR
  1. . I $D(DTOUT)!$D(DUOUT)!(Y=0) S BKMX=1
  1. Q ""