[613] | 1 | PXRMEUT1 ; SLC/PKR - General extract utilities ;05/08/2007
|
---|
| 2 | ;;2.0;CLINICAL REMINDERS;**4,6**;Feb 04, 2005;Build 123
|
---|
| 3 | ;=================================================
|
---|
| 4 | CLDATES ;Cleanup entries in ^TMP("PXRMDDOC",$J) before making date checks.
|
---|
| 5 | ;For drug findings consolidate PS(55, PS(55NVA, and PSRX( back to
|
---|
| 6 | ;PSDRUG(.
|
---|
| 7 | N FI,FIND0,ITEM,GLOBAL,LIST
|
---|
| 8 | S FIND0=""
|
---|
| 9 | F S FIND0=$O(^TMP("PXRMDDOC",$J,FIND0)) Q:FIND0="" D
|
---|
| 10 | . S FI=$P(FIND0,U,1)
|
---|
| 11 | . S GLOBAL=$P(FI,";",2)
|
---|
| 12 | . I GLOBAL'["PS" Q
|
---|
| 13 | . S GLOBAL="PSDRUG("
|
---|
| 14 | . S ITEM=$P(FI,";",1)
|
---|
| 15 | . S FI=ITEM_";"_GLOBAL_U_$P(FIND0,U,2,11)
|
---|
| 16 | . S LIST(FIND0)=FI
|
---|
| 17 | ;
|
---|
| 18 | S FIND0=""
|
---|
| 19 | F S FIND0=$O(LIST(FIND0)) Q:FIND0="" D
|
---|
| 20 | . S FI=LIST(FIND0)
|
---|
| 21 | . S ^TMP("PXRMDDOC",$J,FI)=^TMP("PXRMDDOC",$J,FIND0)
|
---|
| 22 | . K ^TMP("PXRMDDOC",$J,FIND0)
|
---|
| 23 | Q
|
---|
| 24 | ;
|
---|
| 25 | ;=================================================
|
---|
| 26 | DAYSIM(FMDATE) ;Given a FileMan date return the number of days in the month.
|
---|
| 27 | N MONTH
|
---|
| 28 | S MONTH=$E(FMDATE,4,5)
|
---|
| 29 | S DAYS=$S(MONTH="01":31,MONTH="02":28,MONTH="03":31,MONTH="04":30,MONTH="05":31,MONTH="06":30,MONTH="07":31,MONTH="08":31,MONTH="09":30,MONTH="10":31,MONTH="11":30,MONTH="12":31,1:"")
|
---|
| 30 | I MONTH="02" D
|
---|
| 31 | . N LYEAR,YEAR
|
---|
| 32 | . S YEAR=$E(FMDATE,1,3)+1700
|
---|
| 33 | . S LYEAR=$S((YEAR#4=0)&(YEAR#100'=0):1,YEAR#400=0:1,1:0)
|
---|
| 34 | . I LYEAR S DAYS=29
|
---|
| 35 | Q DAYS
|
---|
| 36 | ;
|
---|
| 37 | ;=================================================
|
---|
| 38 | DCONV(DATE,LBBDT,LBEDT) ;Convert dates to actual values.
|
---|
| 39 | I DATE=0 Q DATE
|
---|
| 40 | N PXRMDATE
|
---|
| 41 | S PXRMDATE=$S(DATE["BDT":LBBDT,1:LBEDT)
|
---|
| 42 | S DATE=$$STRREP^PXRMUTIL(DATE,"BDT","T")
|
---|
| 43 | Q $$CTFMD^PXRMDATE(DATE)
|
---|
| 44 | ;
|
---|
| 45 | ;=================================================
|
---|
| 46 | DOCDATES(RULESET,LBBDT,LBEDT,NL,OUTPUT) ;
|
---|
| 47 | N EM,FRACT,FRDATA,FRDATES,FRIEN,FRLST,FRLIEN,FROLST,FROUT,FRPAT
|
---|
| 48 | N FRPERM,FRSTRT,FRTIEN,FRTYP,FSEQ,OPER,PXRMFVPL
|
---|
| 49 | N RRIEN,RSDATA,RSDATES,RBDT,REDT,SEQ,SUB
|
---|
| 50 | I $G(PXRMDDOC)=2 D CLDATES
|
---|
| 51 | ;Build the variable pointer list.
|
---|
| 52 | D BLDRLIST^PXRMVPTR(811.902,.01,.PXRMFVPL)
|
---|
| 53 | S SEQ="",NL=0
|
---|
| 54 | F S SEQ=$O(^PXRM(810.4,RULESET,30,"B",SEQ)) Q:'SEQ D
|
---|
| 55 | . S SUB=$O(^PXRM(810.4,RULESET,30,"B",SEQ,"")) Q:'SUB
|
---|
| 56 | . S RSDATA=$G(^PXRM(810.4,RULESET,30,SUB,0)) Q:RSDATA=""
|
---|
| 57 | . S OPER=$P(RSDATA,U,3)
|
---|
| 58 | . S OPER=$$EXTERNAL^DILFD(810.41,.03,"",OPER,.EM)
|
---|
| 59 | . S RSDATES=$G(^PXRM(810.4,RULESET,30,SUB,1))
|
---|
| 60 | .;Finding rule ien.
|
---|
| 61 | . S FRIEN=$P(RSDATA,U,2) Q:'FRIEN
|
---|
| 62 | .;Check if entry is a finding rule (not a set or reminder rule)
|
---|
| 63 | . S FRDATA=$G(^PXRM(810.4,FRIEN,0)),FRTYP=$P(FRDATA,U,3) Q:FRTYP=3
|
---|
| 64 | . S FRDATES=$P(FRDATA,U,4,5)
|
---|
| 65 | .;Get term IEN for finding rule
|
---|
| 66 | . I FRTYP=1 S FRTIEN=$P(FRDATA,U,7) Q:'FRTIEN
|
---|
| 67 | .;Get Reminder definition IEN for Reminder rule
|
---|
| 68 | . I FRTYP=2 S RRIEN=$P(FRDATA,U,10) Q:'RRIEN
|
---|
| 69 | .;Determine RBDT and REDT
|
---|
| 70 | . D RDATES(RSDATES,FRDATES,LBBDT,LBEDT,.RBDT,.REDT)
|
---|
| 71 | . S NL=NL+1,OUTPUT(NL)=""
|
---|
| 72 | . S NL=NL+1,OUTPUT(NL)="SEQUENCE "_SEQ_" "_$P(FRDATA,U,1)
|
---|
| 73 | . S NL=NL+1,OUTPUT(NL)=" Operation: "_OPER
|
---|
| 74 | .;Term finding rules
|
---|
| 75 | . I FRTYP=1 D TERM(FRTIEN,LBBDT,LBEDT,RBDT,REDT,.PXRMFVPL,.NL,.OUTPUT)
|
---|
| 76 | .;Reminder Definition List Rule
|
---|
| 77 | . I FRTYP=2 D REM(RRIEN,LBBDT,LBEDT,RBDT,REDT,.PXRMFVPL,.NL,.OUTPUT)
|
---|
| 78 | Q
|
---|
| 79 | ;
|
---|
| 80 | ;=================================================
|
---|
| 81 | FMULPRT(FARR,PXRMFVPL,NL,OUTPUT) ;Print the finding multiple
|
---|
| 82 | ;information.
|
---|
| 83 | ;Q
|
---|
| 84 | N BDT,EDT,DERROR,FNAME,FTYPE,IND,NOCC,TBDT,TEDT,TEMP,VPTR
|
---|
| 85 | S IND=0
|
---|
| 86 | F S IND=+$O(FARR(20,IND)) Q:IND=0 D
|
---|
| 87 | . S VPTR=$P(FARR(20,IND,0),U,1)
|
---|
| 88 | . S FNAME=$$ENTRYNAM^PXRMPTD2(VPTR)
|
---|
| 89 | . S FTYPE=$$FTYPE^PXRMPTD2(VPTR,1)
|
---|
| 90 | . S NL=NL+1,OUTPUT(NL)=" FINDING "_IND_"-"_FTYPE_"."_FNAME
|
---|
| 91 | .;Set the finding parameters.
|
---|
| 92 | . D SSPAR^PXRMUTIL(FARR(20,IND,0),.NOCC,.BDT,.EDT)
|
---|
| 93 | . S NL=NL+1,OUTPUT(NL)=" Beginning Date/Time: "_$$FMTE^XLFDT(BDT,"5Z")
|
---|
| 94 | . S NL=NL+1,OUTPUT(NL)=" Ending Date/Time: "_$$FMTE^XLFDT(EDT,"5Z")
|
---|
| 95 | . I $G(PXRMDDOC)'=2 Q
|
---|
| 96 | . S DERROR=0
|
---|
| 97 | . S TEMP=$G(^TMP("PXRMDDOC",$J,$P(FARR(20,IND,0),U,1,11)))
|
---|
| 98 | .;If TEMP is null then no evaluation was required and the check
|
---|
| 99 | .;cannot be made
|
---|
| 100 | . I TEMP="" Q
|
---|
| 101 | . I $P(TEMP,U,1)'=BDT D
|
---|
| 102 | .. S DERROR=1
|
---|
| 103 | .. S NL=NL+1,OUTPUT(NL)=" There is a consistency problem with the beginning date!"
|
---|
| 104 | .. S NL=NL+1,OUTPUT(NL)=" Date used to build the list was: "_$$FMTE^XLFDT($P(TEMP,U,1),"5Z")
|
---|
| 105 | . I $P(TEMP,U,2)'=EDT D
|
---|
| 106 | .. S DERROR=1
|
---|
| 107 | .. S NL=NL+1,OUTPUT(NL)=" There is a consistency problem with the ending date!"
|
---|
| 108 | .. S NL=NL+1,OUTPUT(NL)=" Date used to build the list was: "_$$FMTE^XLFDT($P(TEMP,U,2),"5Z")
|
---|
| 109 | . I DERROR D
|
---|
| 110 | .. S NL=NL+1,OUTPUT(NL)=" Please notify the developers."
|
---|
| 111 | .. ;S NL=NL+1,OUTPUT(NL)=" Please enter a Remedy ticket."
|
---|
| 112 | .. S NL=NL+1,OUTPUT(NL)=" "
|
---|
| 113 | Q
|
---|
| 114 | ;
|
---|
| 115 | ;=================================================
|
---|
| 116 | RDATES(RSDATES,FRDATES,LBBDT,LBEDT,RBDT,REDT) ;Determine the beginning and
|
---|
| 117 | ;ending dates.
|
---|
| 118 | ;Date precedence: LIST BUILD < RULE SET < FINDING RULE < TERM/REMINDER
|
---|
| 119 | S RBDT=$P(FRDATES,U,1),REDT=$P(FRDATES,U,2)
|
---|
| 120 | I RBDT="",REDT="" S RBDT=$P(RSDATES,U,1),REDT=$P(RSDATES,U,2)
|
---|
| 121 | I RBDT="",REDT="" S RBDT=LBBDT,REDT=LBEDT
|
---|
| 122 | I RBDT="" S RBDT=0
|
---|
| 123 | I REDT="" S REDT=LBEDT
|
---|
| 124 | I REDT=0 S REDT=DT
|
---|
| 125 | ;Convert RBDT and REDT to FileMan dates.
|
---|
| 126 | S RBDT=$$DCONV(RBDT,LBBDT,LBEDT)
|
---|
| 127 | S REDT=$$DCONV(REDT,LBBDT,LBEDT)
|
---|
| 128 | ;If the month is missing use January for the beginning date and
|
---|
| 129 | ;December for the ending date.
|
---|
| 130 | I $E(RBDT,4,5)="00" S RBDT=$E(RBDT,1,3)_"01"_$E(RBDT,6,7)
|
---|
| 131 | I $E(REDT,4,5)="00" S REDT=$E(REDT,1,3)_"12"_$E(REDT,6,7)
|
---|
| 132 | ;If the day is missing use the first for beginning date and the end
|
---|
| 133 | ;of the month for ending date.
|
---|
| 134 | I $E(RBDT,6,7)="00" S RBDT=$E(RBDT,1,5)_"01"
|
---|
| 135 | I $E(REDT,6,7)="00" S REDT=$E(REDT,1,5)_$$DAYSIM(REDT)
|
---|
| 136 | Q
|
---|
| 137 | ;
|
---|
| 138 | ;=================================================
|
---|
| 139 | REM(IEN,LBBDT,LBEDT,RBDT,REDT,PXRMFVPL,NL,OUTPUT) ;
|
---|
| 140 | N DEFARR
|
---|
| 141 | D DEF^PXRMLDR(IEN,.DEFARR)
|
---|
| 142 | D DATES^PXRMRUL1(LBBDT,LBEDT,RBDT,REDT,.DEFARR)
|
---|
| 143 | S NL=NL+1,OUTPUT(NL)=" REMINDER DEFINITION "_$P(DEFARR(0),U,1)
|
---|
| 144 | D FMULPRT(.DEFARR,.PXRMFVPL,.NL,.OUTPUT)
|
---|
| 145 | Q
|
---|
| 146 | ;
|
---|
| 147 | ;=================================================
|
---|
| 148 | TERM(IEN,LBBDT,LBEDT,RBDT,REDT,PXRMFVPL,NL,OUTPUT) ;
|
---|
| 149 | N TERMARR
|
---|
| 150 | D TERM^PXRMLDR(IEN,.TERMARR)
|
---|
| 151 | D DATES^PXRMRUL1(LBBDT,LBEDT,RBDT,REDT,.TERMARR)
|
---|
| 152 | S NL=NL+1,OUTPUT(NL)=" TERM "_$P(TERMARR(0),U,1)
|
---|
| 153 | D FMULPRT(.TERMARR,.PXRMFVPL,.NL,.OUTPUT)
|
---|
| 154 | Q
|
---|
| 155 | ;
|
---|