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

BKMSTID2.m

Go to the documentation of this file.
  1. BKMSTID2 ;PRXM/HC/ALA-STI Display ; 20 Mar 2007 2:23 PM
  1. ;;2.1;HIV MANAGEMENT SYSTEM;;Feb 07, 2011
  1. ;
  1. PAT ; Get patient
  1. NEW DIR,RPSDT,RPEDT,Y,X,DTOUT,DUOUT,DFN,SEX,SSN,PTNAME,AGE,AUPNDAYS,AUPNDOB
  1. NEW AUPNDOD,AUPNPAT,AUPNSEX,BKARRAY,SIEN,STINM,STI,NIN,DDATA,RSTI,NSTI,RSTINM
  1. NEW RSTNM,RSIEN,NSIEN,NRSCR,HVDFL,BKTYPE,NCT,NSCR,RFL,SCREEN,LR,NTSCR,QFL,SSCREEN
  1. NEW TOT,BKIN,BKN,HSCR,POP,INC,SDAT,STYP,BKBDT,BKEDT,CT,BKMARRAY
  1. W !!
  1. D PLK^BKMPLKP
  1. I $G(AUPNPAT)="" Q
  1. S DIR("A")="Enter Report Start Date"
  1. S DIR("B")=$$FMTE^XLFDT(3060101,1)
  1. S DIR(0)="D"
  1. D ^DIR
  1. I $D(DTOUT)!$D(DUOUT) Q
  1. S RPSDT=Y
  1. ;
  1. S DIR("A")="Enter Report End Date"
  1. S DIR("B")=$$FMTE^XLFDT($$FMADD^XLFDT(RPSDT,365),1)
  1. S DIR(0)="D"
  1. D ^DIR
  1. I $D(DTOUT)!$D(DUOUT) Q
  1. S RPEDT=Y
  1. ;
  1. K DIR
  1. S DIR("A")="Enter STI type"
  1. S DIR(0)="S^K:KEY;O:OTHER;A:ALL"
  1. D ^DIR
  1. I $D(DTOUT)!$D(DUOUT) Q
  1. ;
  1. PRT K %ZIS,IOP,IOC,ZTIO
  1. S %ZIS="M" D ^%ZIS Q:POP ; ask device
  1. I $D(IO("Q")) D EN^DDIOL("Cannot queue this") G PRT
  1. ;
  1. U IO
  1. ;
  1. I IOST'["C-" W !,?10,"HRN: "_$$HRN^AUPNPAT3(AUPNPAT,DUZ(2)),?40,"Date Range: "_$$FMTE^XLFDT(RPSDT,"2Z")_" - "_$$FMTE^XLFDT(RPEDT,"2Z")
  1. S X=$$UP^XLFSTR(X)
  1. S BKTYPE=$S(X="K":"KEY",X="O":"OTHER",1:""),HVDFL=0
  1. K BKARRAY S QFL=0
  1. ; Set beginning date to 2 months (60 days) prior to CRS report period begin date
  1. ; through the first 300 days of the CRS report period
  1. S BKBDT=$$FMADD^XLFDT(RPSDT,-60),BKEDT=$$FMADD^XLFDT(RPSDT,300)
  1. D EN^BKMSTI(AUPNPAT,BKBDT,BKEDT,BKTYPE,.BKARRAY,.HVDFL)
  1. I '$D(BKARRAY) W !,"Patient has no STI diagnoses" D ^%ZISC G PAT
  1. I $D(BKARRAY) D
  1. . NEW STI
  1. . S STI=""
  1. . F S STI=$O(BKARRAY(STI)) Q:STI="" D Q:QFL
  1. .. I $G(BKARRAY(STI,"DEN"))'=0 S QFL=1 Q
  1. I 'QFL W !!!,"Patient has no STI diagnoses" D ^%ZISC G PAT
  1. D INC
  1. ; clean up extras
  1. S INC=0
  1. F S INC=$O(BKSTIY(INC)) Q:INC="" D
  1. . S STYP=""
  1. . F S STYP=$O(BKSTIY(INC,STYP)) Q:STYP="" D
  1. .. S SDAT="",CT=0
  1. .. F S SDAT=$O(BKSTIY(INC,STYP,"DEN",SDAT)) Q:SDAT="" D
  1. ... S CT=CT+1
  1. ... I CT>1 K BKSTIY(INC,STYP,"DEN",SDAT)
  1. ;
  1. S INC=0
  1. F S INC=$O(BKSTIY(INC)) Q:INC="" D
  1. . W !!,?5,"Diagnosis Incident: ",INC
  1. . K REC,NBREC,NREC
  1. . S TYP="" F S TYP=$O(BKSTIY(INC,TYP)) Q:TYP="" D
  1. .. S DAT=""
  1. .. F S DAT=$O(BKSTIY(INC,TYP,"DEN",DAT)) Q:DAT="" D
  1. ... W !,?10,$$FMTE^XLFDT(DAT,"2Z")," ",TYP," ",BKSTIY(INC,TYP,"DEN",DAT)
  1. ... S RC=""
  1. ... F S RC=$O(BKARRAY(TYP,"NUM",RC)) Q:RC="" D
  1. .... I $G(REC(RC))="" S REC(RC)=$P($G(BKARRAY(TYP,"NUM",RC,DAT)),U,2),NREC(RC)=""
  1. .... I RC="HIV" D
  1. ..... NEW HKDATE,HEDATE
  1. ..... S HKDATE="",HEDATE=DAT
  1. ..... S HVDFL=$$HIVS^BKMRMDR(AUPNPAT,.HKDATE,.HEDATE)
  1. ..... ; HIV Diagnosis takes precedence over HIV screening
  1. ..... I +HVDFL=0 S NREC(RC)=$P($G(BKARRAY(TYP,"NUM",RC)),U,2) Q
  1. ..... I +HVDFL=1 S NREC(RC)=$P(HVDFL,U,2)
  1. .... ;I HVDFL,RC="HIV" S NREC(RC)=$P(BKARRAY(TYP,"NUM",RC),U,2)
  1. .... I $G(NREC(RC))="" D
  1. ..... I $G(BKARRAY(RC,"DEN",DAT))'="" S NREC(RC)=$$FMTE^XLFDT(DAT,"2Z")_" "_$G(BKARRAY(RC,"DEN",DAT)) Q
  1. ..... NEW BDATE,EDATE,DDT,QFL
  1. ..... S EDATE=$$FMADD^XLFDT(DAT,60),BDATE=$$FMADD^XLFDT(DAT,-30)
  1. ..... S DDT="",QFL=0
  1. ..... F S DDT=$O(BKARRAY(RC,"DEN",DDT)) Q:DDT="" D Q:QFL
  1. ...... I DDT'<BDATE,DDT'>EDATE S NREC(RC)=$$FMTE^XLFDT(DDT,"2Z")_" "_$G(BKARRAY(RC,"DEN",DDT)),QFL=1
  1. ..... I $G(BKMARRAY(RC,"DEN"))="" D
  1. ...... D EN^BKMSTI(DFN,BDATE,EDATE,RC,.BKDXN,.HVDFL)
  1. ...... I $P(BKDXN(RC,"DEN"),U,1)'=0 S NREC(RC)=$P($P(BKDXN(RC,"DEN"),U,2),";",1)
  1. ...... K BKDXN
  1. .... I $G(NREC(RC))="",$G(BKARRAY(TYP,"REF",RC,DAT))'="" S REC(RC)=$P($G(BKARRAY(TYP,"REF",RC,DAT)),U,1)
  1. . W !,?5,"Recommended Screenings: "
  1. . S RC="" F S RC=$O(REC(RC)) Q:RC="" W !,?10,"1 "_RC
  1. . W !,?5,"Needed Screenings: "
  1. . S RC="" F S RC=$O(NREC(RC)) Q:RC="" D
  1. .. S NUM=$S(NREC(RC)="":1,1:0)
  1. .. S SUMNREC(RC)=$G(SUMNREC(RC))+NUM
  1. .. I NREC(RC)="" W !,?10,NUM_" "_RC Q
  1. .. W !,?10,NUM_" "_RC_" "_NREC(RC)
  1. . W !,?5,"Need-based Screenings Performed: "
  1. . S RC="" F S RC=$O(REC(RC)) Q:RC="" D
  1. .. I $G(NREC(RC))'="" Q
  1. .. S NUM=$S($G(REC(RC))="":0,1:1)
  1. .. S SUMNBRC(RC)=$G(SUMNBRC(RC))+NUM
  1. .. I $G(REC(RC))="" W !,?10,NUM_" "_RC Q
  1. .. W !,?10,NUM_" "_RC_" "_REC(RC)
  1. W !!,?5,"Summary",!
  1. W !,?5,"Needed Screenings: "
  1. S RC=""
  1. F S RC=$O(SUMNREC(RC)) Q:RC="" W !,?10,SUMNREC(RC)_" "_RC
  1. ;
  1. W !,?5,"Need-Based Screenings Performed: "
  1. S RC=""
  1. F S RC=$O(SUMNBRC(RC)) Q:RC="" D
  1. . S NUM=SUMNBRC(RC),NPR=SUMNREC(RC)
  1. . I NPR'=0 S PER=$J((NUM/NPR)*100,3,0)
  1. . I NPR=0 S PER=0
  1. . W !,?10,SUMNBRC(RC)_" "_RC_" "_PER_"%"
  1. D ^%ZISC
  1. K REC,NREC,NBREC,SUMNBRC,SUMNREC,MBKARAY,BKSTIY,DAT,INC,NPR,NUM,PER,RC,TYP
  1. G PAT
  1. ;
  1. INC ;EP - Determine multiple incidences
  1. NEW TYP,DAT,INC,PDAT,NXDT,NTYP,DTDIF
  1. K MBKARAY,BKSTIY
  1. S TYP=""
  1. F S TYP=$O(BKARRAY(TYP)) Q:TYP="" D
  1. . S DAT=""
  1. . F S DAT=$O(BKARRAY(TYP,"DEN",DAT)) Q:DAT="" D
  1. .. S MBKARAY(DAT,TYP)=BKARRAY(TYP,"DEN",DAT)
  1. S INC=0,DAT="",PDAT=""
  1. F S DAT=$O(MBKARAY(DAT)) Q:DAT="" D
  1. . S INC=INC+1 D SDT(DAT) K MBKARAY(DAT)
  1. . S DTDIF=$$FMADD^XLFDT(DAT,60)
  1. . S NXDT=DAT F S NXDT=$O(MBKARAY(NXDT)) Q:NXDT="" D
  1. .. I NXDT<DTDIF D
  1. ... D SDT(NXDT)
  1. ... K MBKARAY(NXDT)
  1. Q
  1. ;
  1. SDT(VDT) ;EP - Same date, multiple types
  1. S TYP=""
  1. F S TYP=$O(MBKARAY(VDT,TYP)) Q:TYP="" D
  1. . S BKSTIY(INC,TYP,"DEN",VDT)=MBKARAY(VDT,TYP)
  1. Q