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

ORAMX.m

Go to the documentation of this file.
  1. ORAMX ;POR/RSF - ADDITIONAL ANTICOAGULATION CALLS ;11/10/14 10:28
  1. ;;3.0;ORDER ENTRY/RESULTS REPORTING;**307,339,361,391**;Dec 17, 1997;Build 11
  1. ;;Per VHA Directive 2004-038, this routine should not be modified
  1. Q
  1. ;
  1. ; External References:
  1. ; $$EXTERNAL^DILFD ICR #2055
  1. ; $$ICDDATA^ICDXCODE ICR #5699
  1. ; $$DATA2PCE^PXAPI ICR #1889
  1. ; $$FMTE/$$NOW^XLFDT ICR #10103
  1. ; $$LOW/$$UP^XLFSTR ICR #10104
  1. ;
  1. COMPRPT ; Complications Report [ORAM COMPLICATIONS REPORT]
  1. N DIRUT,ORAMSDT,ORAMEDT,ORAMSD,ORAMED,ORAMM,ORAMDL,ORAMT,ORAFMT,ORAMDFN,ORAMCNT,ORAMARR,ORAMINCM,ORAMSORT
  1. S (ORAMED,ORAMSD)="",ORAMINCM=1
  1. W !!,"Anticoagulation Complications Report",!
  1. F D Q:+ORAMED>+ORAMSD!+$G(DIRUT)
  1. . S ORAMSD=+$$READ("DA^::E"," Please Enter START Date: ","T-90","Enter a start date for the report")
  1. . Q:'ORAMSD
  1. . S ORAMED=+$$READ("DA^::E"," Please Enter END Date: ","T","Enter an INCLUSIVE end date for the report")
  1. . Q:'ORAMED
  1. . I $L(ORAMED,".")=1 S ORAMED=ORAMED_".2359"
  1. . I ORAMSD>ORAMED W !,"END DATE must be more recent than the START DATE" S (ORAMSD,ORAMED)=""
  1. Q:$S(ORAMSD'>0:1,ORAMED'>0:1,1:0)
  1. S ORAMSDT=$$FMTE^XLFDT(ORAMSD,2),ORAMEDT=$$FMTE^XLFDT(ORAMED,2)
  1. W ! S ORAFMT=$$READ("SA^r:Report;e:Export to Spreadsheet"," Please Specify Format: ","Report")
  1. Q:+$G(DIRUT)
  1. S:"Ee"[$P(ORAFMT,U) ORAMDL=1 S:"Rr"[$P(ORAFMT,U) ORAMDL=0
  1. W ! S ORAMSORT=$$READ("SA^c:Clinic;d:Division"," Sort/Tally By: ","Clinic")
  1. Q:+$G(DIRUT)
  1. S ORAMSORT=$P(ORAMSORT,U)
  1. W ! S ORAMINCM=+$$READ("YA","Include Minor Complications? ","YES")
  1. Q:+$G(DIRUT)
  1. S (ORAMCNT,ORAMDFN)=0
  1. F S ORAMDFN=$O(^ORAM(103,ORAMDFN)) Q:'$G(ORAMDFN) D
  1. . N ORAMFS S ORAMFS=" "
  1. . F S ORAMFS=$O(^ORAM(103,ORAMDFN,3,ORAMFS),-1) Q:'+$G(ORAMFS) D
  1. .. N ORAMCP
  1. .. I $P(^ORAM(103,ORAMDFN,3,ORAMFS,0),U)<ORAMSD Q
  1. .. I $P(^ORAM(103,ORAMDFN,3,ORAMFS,0),U)>ORAMED Q
  1. .. S ORAMCP=$P(^ORAM(103,ORAMDFN,3,ORAMFS,0),U,2)
  1. .. I +$G(ORAMCP) D
  1. ... N ORAMLOC,ORAMM,ORAMCLNO,ORAMCLNM,ORAMDIVN,ORAMDIV
  1. ... I (+ORAMINCM'>0),(ORAMCP>2) Q
  1. ... S ORAMCLNO=+$P($G(^ORAM(103,ORAMDFN,6)),U,2)
  1. ... I ORAMCLNO>0 D
  1. .... S ORAMDIVN=+$P($G(^SC(ORAMCLNO,0)),U,15)
  1. .... S ORAMCLNM=$$EXTERNAL^DILFD(103,101,"",ORAMCLNO) S:$G(ORAMCLNM)="" ORAMCLNM="CLINIC UNKNOWN"
  1. .... S ORAMDIV=$$EXTERNAL^DILFD(44,3.5,"",ORAMDIVN) S:$G(ORAMDIV)="" ORAMDIV="DIVISION UNKNOWN"
  1. ... E S ORAMCLNM="CLINIC UNKNOWN",ORAMDIV="DIVISION UNKNOWN"
  1. ... S ORAMLOC=$S(ORAMSORT="c":ORAMCLNM,1:ORAMDIV)
  1. ... S ORAMARR(ORAMLOC,0)=$G(ORAMARR(ORAMLOC,0))+1
  1. ... S ORAMM=$E($P(^DPT($G(ORAMDFN),0),U),1,10)_" ("_$E($P(^(0),U,9),6,9)_")"
  1. ... I ORAMCP=1!(+ORAMINCM&(ORAMCP=3)) D
  1. .... S ORAMARR(ORAMLOC,"B",0)=$G(ORAMARR(ORAMLOC,"B",0))+1
  1. .... S ORAMARR(ORAMLOC,"B",ORAMDFN,$P(^ORAM(103,ORAMDFN,3,ORAMFS,0),U)_ORAMFS,1)=ORAMM_": INR Draw date - "_$$FMTE^XLFDT($P(^ORAM(103,ORAMDFN,3,ORAMFS,0),U),"2P")
  1. .... N ORAMJ S ORAMJ=0
  1. .... F S ORAMJ=$O(^ORAM(103,ORAMDFN,3,ORAMFS,2,ORAMJ)) Q:+ORAMJ'>0 D
  1. ..... N ORAMCMPL,ORAMFS0
  1. ..... S ORAMFS0=$G(^ORAM(103,ORAMDFN,3,ORAMFS,0))
  1. ..... S ORAMCMPL=$G(^ORAM(103,ORAMDFN,3,ORAMFS,2,ORAMJ,0))
  1. ..... S:$L(ORAMCMPL,":")>1 ORAMCMPL=$S($P(ORAMCMPL,":")="MB":"Major Bleed: ",$P(ORAMCMPL,":")="C":" ",1:ORAMCMPL)_$P(ORAMCMPL,":",2)
  1. ..... S ORAMARR(ORAMLOC,"B",ORAMDFN,$P(ORAMFS0,U)_ORAMFS,1_"."_ORAMJ)=$S(ORAMJ=1:"Complication date: ",1:"")_ORAMCMPL
  1. ..... S ORAMARR(ORAMLOC,"BX",ORAMDFN,$P(ORAMFS0,U)_ORAMFS,99)=$TR(ORAMLOC,";",",")_";"_$S(ORAMCP=3:"Minor Bleed",1:"Hemorrhagic")_";"_ORAMM_";"_$$FMTE^XLFDT($P(ORAMFS0,U),"2P")_";"
  1. ..... S ORAMARR(ORAMLOC,"BX",ORAMDFN,$P(ORAMFS0,U)_ORAMFS,99)=ORAMARR(ORAMLOC,"BX",ORAMDFN,$P(ORAMFS0,U)_ORAMFS,99)_$G(^ORAM(103,ORAMDFN,3,ORAMFS,2,1,0))
  1. ... I ORAMCP=2 D
  1. .... S ORAMARR(ORAMLOC,"C",0)=$G(ORAMARR(ORAMLOC,"C",0))+1
  1. .... S ORAMARR(ORAMLOC,"C",ORAMDFN,$P(^ORAM(103,ORAMDFN,3,ORAMFS,0),U)_ORAMFS,1)=ORAMM_": INR Draw date - "_$$FMTE^XLFDT($P(^ORAM(103,ORAMDFN,3,ORAMFS,0),U),"2P")
  1. .... N ORAMJ S ORAMJ=0
  1. .... F S ORAMJ=$O(^ORAM(103,ORAMDFN,3,ORAMFS,2,ORAMJ)) Q:'+$G(ORAMJ) D
  1. ..... N ORAMCMPL,ORAMFS0
  1. ..... S ORAMFS0=$G(^ORAM(103,ORAMDFN,3,ORAMFS,0))
  1. ..... S ORAMCMPL=^ORAM(103,ORAMDFN,3,ORAMFS,2,ORAMJ,0)
  1. ..... S:$L(ORAMCMPL,":")>1 ORAMCMPL=$S($P(ORAMCMPL,":")="MB":"Major Bleed: ",$P(ORAMCMPL,":")="C":" ",1:ORAMCMPL)_$P(ORAMCMPL,":",2)
  1. ..... S ORAMARR(ORAMLOC,"C",ORAMDFN,$P(ORAMFS0,U)_ORAMFS,1_"."_ORAMJ)=$S(ORAMJ=1:"Complication date: ",1:"")_ORAMCMPL
  1. ..... S ORAMARR(ORAMLOC,"CX",ORAMDFN,$P(ORAMFS0,U)_ORAMFS,99)=$TR(ORAMLOC,";",",")_";Thrombotic;"_ORAMM_";"_$$FMTE^XLFDT($P(ORAMFS0,U),"2P")_";"_$G(^ORAM(103,ORAMDFN,3,ORAMFS,2,1,0))
  1. I ORAMDL=0 D COMP0(.ORAMARR,ORAMSDT,ORAMEDT,ORAMINCM)
  1. I ORAMDL=1 D COMP1(.ORAMARR,ORAMSDT,ORAMEDT,ORAMINCM,ORAMSORT)
  1. Q
  1. COMP0(ORAMARR,ORAMSDT,ORAMEDT,ORAMINCM) ; Print Report Format
  1. N OCLINIC
  1. W @IOF,"COMPLICATIONS REPORT - ANTICOAGULATION: ",ORAMSDT," - ",ORAMEDT,!,$S('ORAMINCM:" (** EXCLUDING MINOR COMPLICATIONS **)"_$C(13)_$C(10),1:"")
  1. I '$D(ORAMARR) W !,?5,"No Complications Noted." Q
  1. S OCLINIC=""
  1. F S OCLINIC=$O(ORAMARR(OCLINIC)) Q:OCLINIC']"" D
  1. . W !!,?5,OCLINIC,": Total Complications - ",ORAMARR(OCLINIC,0)
  1. . I $G(ORAMARR(OCLINIC,"B",0))>0 D ;BLEEDS FOR THIS CLINIC
  1. .. N ODFN
  1. .. W !!,?7," Bleeds (",ORAMARR(OCLINIC,"B",0),")",!
  1. .. W !,?7," Details:"
  1. .. S ODFN=0 F S ODFN=$O(ORAMARR(OCLINIC,"B",ODFN)) Q:+ODFN'>0 D
  1. ... N OCDATE S OCDATE=0
  1. ... F S OCDATE=$O(ORAMARR(OCLINIC,"B",ODFN,OCDATE)) Q:+OCDATE'>0 D
  1. .... N OCNT S OCNT=0 W !
  1. .... F S OCNT=$O(ORAMARR(OCLINIC,"B",ODFN,OCDATE,OCNT)) Q:+OCNT'>0 D
  1. ..... W !,?8,ORAMARR(OCLINIC,"B",ODFN,OCDATE,OCNT)
  1. . I $G(ORAMARR(OCLINIC,"C",0))>0 D ;CLOTS FOR THIS CLINIC
  1. .. N ODFN
  1. .. W !!,?7," Clots (",ORAMARR(OCLINIC,"C",0),")",!
  1. .. W !,?7," Details:"
  1. .. S ODFN=0 F S ODFN=$O(ORAMARR(OCLINIC,"C",ODFN)) Q:+ODFN'>0 D
  1. ... N OCDATE S OCDATE=0
  1. ... F S OCDATE=$O(ORAMARR(OCLINIC,"C",ODFN,OCDATE)) Q:+OCDATE'>0 D
  1. .... N OCNT S OCNT=0 W !
  1. .... F S OCNT=$O(ORAMARR(OCLINIC,"C",ODFN,OCDATE,OCNT)) Q:+OCNT'>0 D
  1. ..... W !,?8,ORAMARR(OCLINIC,"C",ODFN,OCDATE,OCNT)
  1. Q
  1. COMP1(ORAMARR,ORAMSDT,ORAMEDT,ORAMINCM,ORAMSORT) ; Print Export Format
  1. N OCLINIC
  1. W @IOF,"COMPLICATIONS REPORT - ANTICOAGULATION: ",ORAMSDT," - ",ORAMEDT,!,$S('ORAMINCM:" (** EXCLUDING MINOR COMPLICATIONS **)"_$C(13)_$C(10),1:"")
  1. I '$D(ORAMARR) W !,?5,"No Complications Noted." Q
  1. W !,$S(ORAMSORT="c":"Clinic",1:"Division"),";Event;Patient;INR Draw Date;Complication Date"
  1. S OCLINIC="" F S OCLINIC=$O(ORAMARR(OCLINIC)) Q:OCLINIC']"" D
  1. . I $D(ORAMARR(OCLINIC,"BX")) D ;BLEEDS FOR THIS CLINIC
  1. .. N ODFN S ODFN=0 F S ODFN=$O(ORAMARR(OCLINIC,"BX",ODFN)) Q:'+$G(ODFN) D
  1. ... N OCDATE S OCDATE=0 F S OCDATE=$O(ORAMARR(OCLINIC,"BX",ODFN,OCDATE)) Q:'+$G(OCDATE) D
  1. .... W !,ORAMARR(OCLINIC,"BX",ODFN,OCDATE,99)
  1. . I $D(ORAMARR(OCLINIC,"CX")) D ;CLOTS FOR THIS CLINIC
  1. .. N ODFN S ODFN=0 F S ODFN=$O(ORAMARR(OCLINIC,"CX",ODFN)) Q:'+$G(ODFN) D
  1. ... N OCDATE S OCDATE=0 F S OCDATE=$O(ORAMARR(OCLINIC,"CX",ODFN,OCDATE)) Q:'+$G(OCDATE) D
  1. .... W !,ORAMARR(OCLINIC,"CX",ODFN,OCDATE,99)
  1. Q
  1. ;
  1. CONSULT(RESULT,ORAMDFN,ORAMCNM) ; Called from RPC=ORAMX CONSULT
  1. I '+$G(ORAMDFN) S RESULT(0)=0 Q
  1. I $G(ORAMCNM)="" S RESULT(0)=0 Q
  1. N ORAMCLST S ORAMCLST(0)=0
  1. D RPCLIST^GMRCTIU(.ORAMCLST,ORAMDFN)
  1. Q:ORAMCLST(0)=0 ;SHOULD BE NUMBER IN THE ARRAY
  1. I ORAMCLST(0)>0 D
  1. . N ORAMC S ORAMC=0 F S ORAMC=$O(ORAMCLST(ORAMC)) Q:'+$G(ORAMC) D
  1. .. Q:ORAMCNM'=$P(ORAMCLST(ORAMC),U,3)
  1. .. N ORAMK,ORAMCSTS
  1. .. S ORAMK=0,ORAMCSTS=$P(ORAMCLST(ORAMC),U,5)
  1. .. I $S(ORAMCSTS="PENDING":1,ORAMCSTS="ACTIVE":1,ORAMCSTS="SCHEDULED":1,1:0) S ORAMK=1
  1. .. Q:'+ORAMK
  1. .. N ORAMD S ORAMD=$$FMTE^XLFDT($P(ORAMCLST(ORAMC),U,2),"2P")
  1. .. S RESULT(ORAMC)=ORAMD_": "_$P(ORAMCLST(ORAMC),U,3)_" ^"_$P(ORAMCLST(ORAMC),U,1)
  1. Q
  1. PCESET(RESULT,ORAMDFN,ORAMD1,ORAMSC44,ORAMEDT,ORAMSVC,ORAMNARR,ORAMPDX,ORAMSDX) ; RPC to file PCE Data
  1. ; RPC = ORAMX PCESET
  1. ; ORAMDFN = Pt. ID
  1. ; ORAMD1 = Data string e.g., 1143~27898|300|99363|427.31|^SC~0^IR~0^EC~1^MST~0^HNC~1^SHAD~0
  1. ; ORAMSC44 = Hosp Loc IEN
  1. ; ORAMEDT = Enc Dt/Tm
  1. ; ORAMSVC = Svc Cat (e.g., "A"mb or "T"elecomm)
  1. ; ORAMNARR = Prov Narr
  1. ; ORAMPDX = Auto Pri Indic
  1. ; ORAMSDX = Auto Sec Indic
  1. ;
  1. I '+$G(ORAMDFN) S RESULT=99 Q
  1. I '+$G(ORAMSC44) S RESULT=99 Q
  1. I $G(ORAMD1)']"" S RESULT=99 Q
  1. N ORAMNOW,ORAMDAY S ORAMNOW=$$NOW^XLFDT
  1. S RESULT=0,ORAMEDT=$G(ORAMEDT,ORAMNOW),ORAMDAY=$P(ORAMEDT,"."),ORAMSVC=$G(ORAMSVC,"A")
  1. I $G(ORAMD1)'="" D
  1. . N ORAMPPR,ORAMSPR,ORAMCPT,ORAMSC,ORAMQ,ORAMVST,ERRARR,ERRPROB,ORAMPDXN,ORAMDXC,ORDXI
  1. . S ORAMPPR=$P($P(ORAMD1,"|"),"~"),ORAMSPR=$P($P(ORAMD1,"|"),"~",2),ORAMSC=$P(ORAMD1,"|",2),ORAMCPT=$P(ORAMD1,"|",3),ORAMQ=$P(ORAMD1,"|",5)
  1. . S ORAMDXC=$P(ORAMD1,"|",4)
  1. . I $P($G(ORAMPDX),U)]"" D
  1. .. N ORAMPDXC,ORAMPDXT,ORDXINC
  1. .. S ORAMPDXC=$P(ORAMPDX,U),ORAMPDXT=$P(ORAMPDX,U,2),ORDXINC=1
  1. .. I (ORAMPDXC]""),(ORAMPDXC'[".") S ORAMPDXC=ORAMPDXC_"."
  1. .. S ORAMPDXN=+$$ICDDATA^ICDXCODE("DIAGNOSIS",ORAMPDXC,ORAMEDT,"E")
  1. .. Q:+ORAMPDXN'>0
  1. .. S ^TMP("ORAMPCE",$J,"DX/PL",1,"DIAGNOSIS")=$G(ORAMPDXN)
  1. .. S ^TMP("ORAMPCE",$J,"DX/PL",1,"PRIMARY")="P"
  1. .. S:ORAMPDXT]"" ^TMP("ORAMPCE",$J,"DX/PL",1,"NARRATIVE")=ORAMPDXT
  1. .. I $P($G(ORAMSDX),U)]"" D
  1. ... N ORAMSDXC,ORAMSDXT,ORAMSDXN
  1. ... S ORAMSDXC=$P(ORAMSDX,U),ORAMSDXT=$P(ORAMSDX,U,2),ORDXINC=2
  1. ... I (ORAMSDXC]""),(ORAMSDXC'[".") S ORAMSDXC=ORAMSDXC_"."
  1. ... S ORAMSDXN=+$$ICDDATA^ICDXCODE("DIAGNOSIS",ORAMSDXC,ORAMEDT,"E")
  1. ... Q:+ORAMSDXN'>0
  1. ... S ^TMP("ORAMPCE",$J,"DX/PL",2,"DIAGNOSIS")=$G(ORAMSDXN)
  1. ... S ^TMP("ORAMPCE",$J,"DX/PL",2,"PRIMARY")="S"
  1. ... S:ORAMSDXT]"" ^TMP("ORAMPCE",$J,"DX/PL",2,"NARRATIVE")=ORAMSDXT
  1. .. Q:+ORAMDXC']""
  1. .. F ORDXI=1:1:$L(ORAMDXC,"/") D
  1. ... N ORDXC,ORDX S ORDXC=$P(ORAMDXC,"/",ORDXI)
  1. ... I (ORDXC]""),(ORDXC'[".") S ORDXC=ORDXC_"."
  1. ... S ORDX=+$$ICDDATA^ICDXCODE("DIAGNOSIS",ORDXC,ORAMEDT,"E")
  1. ... I +ORDX'>0 Q
  1. ... S ^TMP("ORAMPCE",$J,"DX/PL",ORDXI+ORDXINC,"DIAGNOSIS")=$G(ORDX)
  1. ... S ^TMP("ORAMPCE",$J,"DX/PL",ORDXI+ORDXINC,"PRIMARY")="S"
  1. ... S:$G(ORAMNARR)]"" ^TMP("ORAMPCE",$J,"DX/PL",ORDXI+ORDXINC,"NARRATIVE")=ORAMNARR
  1. . E D
  1. .. Q:+ORAMDXC']""
  1. .. F ORDXI=1:1:$L(ORAMDXC,"/") D
  1. ... N ORDXC,ORDX S ORDXC=$P(ORAMDXC,"/",ORDXI)
  1. ... I (ORDXC]""),(ORDXC'[".") S ORDXC=ORDXC_"."
  1. ... S ORDX=+$$ICDDATA^ICDXCODE("DIAGNOSIS",ORDXC,ORAMEDT,"E")
  1. ... I +ORDX'>0 Q
  1. ... S:ORDXI=1 ORAMPDXN=ORDX
  1. ... S ^TMP("ORAMPCE",$J,"DX/PL",ORDXI,"DIAGNOSIS")=$G(ORDX)
  1. ... S ^TMP("ORAMPCE",$J,"DX/PL",ORDXI,"PRIMARY")=$S(ORDXI=1:"P",1:"S")
  1. ... S:$G(ORAMNARR)]"" ^TMP("ORAMPCE",$J,"DX/PL",ORDXI,"NARRATIVE")=ORAMNARR
  1. . S ^TMP("ORAMPCE",$J,"ENCOUNTER",1,"DSS ID")=$G(ORAMSC) ;STOP CODE 40.7
  1. . S ^TMP("ORAMPCE",$J,"ENCOUNTER",1,"ENC D/T")=ORAMEDT
  1. . S ^TMP("ORAMPCE",$J,"ENCOUNTER",1,"HOS LOC")=ORAMSC44 ;9727 ;8005
  1. . S ^TMP("ORAMPCE",$J,"ENCOUNTER",1,"PATIENT")=ORAMDFN
  1. . S ^TMP("ORAMPCE",$J,"ENCOUNTER",1,"ENCOUNTER TYPE")="P" ;PRIMARY OR ANCILLARY
  1. . S ^TMP("ORAMPCE",$J,"ENCOUNTER",1,"SERVICE CATEGORY")=ORAMSVC
  1. . S ^TMP("ORAMPCE",$J,"ENCOUNTER",1,"CHECKOUT D/T")=$$NOW^XLFDT
  1. . S ^TMP("ORAMPCE",$J,"PROCEDURE",1,"PROCEDURE")=$G(ORAMCPT)
  1. . S:+ORAMPDXN>0 ^TMP("ORAMPCE",$J,"PROCEDURE",1,"DIAGNOSIS")=ORAMPDXN
  1. . S ^TMP("ORAMPCE",$J,"PROCEDURE",1,"EVENT D/T")=ORAMEDT
  1. . S ^TMP("ORAMPCE",$J,"PROCEDURE",1,"QTY")=1
  1. . S:ORAMPPR]"" ^TMP("ORAMPCE",$J,"PROCEDURE",1,"ENC PROVIDER")=ORAMPPR ;FILE 200
  1. . S ^TMP("ORAMPCE",$J,"PROCEDURE",1,"DEPARTMENT")=$G(ORAMSC) ;STOP CODE 40.7
  1. . S ^TMP("ORAMPCE",$J,"PROVIDER",1,"NAME")=ORAMPPR
  1. . S:ORAMPPR]"" ^TMP("ORAMPCE",$J,"PROVIDER",1,"PRIMARY")=1
  1. . ; If Secondary Provider is passed, include them
  1. . I ORAMSPR]"" D
  1. . . S ^TMP("ORAMPCE",$J,"PROVIDER",2,"NAME")=ORAMSPR
  1. . . S ^TMP("ORAMPCE",$J,"PROVIDER",2,"PRIMARY")=0
  1. . ;comes in like: ^SC~0^IR~0^EC~1^MST~0
  1. . S ^TMP("ORAMPCE",$J,"ENCOUNTER",1,"SC")=""
  1. . S ^TMP("ORAMPCE",$J,"ENCOUNTER",1,"AO")=""
  1. . S ^TMP("ORAMPCE",$J,"ENCOUNTER",1,"IR")=""
  1. . S ^TMP("ORAMPCE",$J,"ENCOUNTER",1,"EC")=""
  1. . S ^TMP("ORAMPCE",$J,"ENCOUNTER",1,"MST")=""
  1. . S ^TMP("ORAMPCE",$J,"ENCOUNTER",1,"HNC")=""
  1. . S ^TMP("ORAMPCE",$J,"ENCOUNTER",1,"CV")=""
  1. . S ^TMP("ORAMPCE",$J,"ENCOUNTER",1,"SHAD")=""
  1. . N ORAMCNT,I S ORAMCNT=$L(ORAMQ,U)
  1. . I +$G(ORAMCNT) F I=2:1:ORAMCNT D
  1. .. N T S T=$P(ORAMQ,U,I) Q:$G(T)=""
  1. .. I $P(T,"~",1)'="" S ^TMP("ORAMPCE",$J,"ENCOUNTER",1,$P(T,"~",1))=$P(T,"~",2)
  1. . S RESULT=$$DATA2PCE^PXAPI("^TMP(""ORAMPCE"",$J)","ORAM","ORAM ANTICOAGULATION MANAGEMENT PROGRAM",.ORAMVST,DUZ,,.ERRARR,,.ERRPROB)
  1. Q
  1. READ(TYPE,PROMPT,DEFAULT,HELP,SCREEN) ; Calls reader, returns response
  1. N DIR,X,Y
  1. S DIR(0)=TYPE
  1. I $D(SCREEN) S DIR("S")=SCREEN
  1. I $G(PROMPT)]"" S DIR("A")=PROMPT
  1. I $G(DEFAULT)]"" S DIR("B")=DEFAULT
  1. I $D(HELP) S DIR("?")=HELP
  1. D ^DIR
  1. I $G(X)="@" S Y="@" G READX
  1. I Y]"",($L($G(Y),U)'=2) S Y=Y_U_$G(Y(0),Y)
  1. READX Q Y
  1. NAME(X,FMT) ; Call with X="LAST,FIRST MI", FMT=Return Format ("LAST, FI")
  1. N ORLAST,ORLI,ORFIRST,ORFI,ORMI,ORI
  1. I X']"" S FMT="" G NAMEX
  1. I $S('$D(FMT):1,'$L(FMT):1,1:0) S FMT="LAST,FIRST"
  1. S FMT=$$LOW^XLFSTR(FMT)
  1. S ORLAST=$P(X,","),ORLI=$E(ORLAST),ORFIRST=$P(X,",",2)
  1. S ORFI=$E(ORFIRST)
  1. S ORMI=$S($P(ORFIRST," ",2)'="NMI":$E($P(ORFIRST," ",2)),1:"")
  1. S ORFIRST=$P(ORFIRST," ")
  1. F ORI="last","li","first","fi","mi" I FMT[ORI S FMT=$P(FMT,ORI)_@("OR"_$$UP^XLFSTR(ORI))_$P(FMT,ORI,2)
  1. NAMEX Q FMT
  1. PATIENT() ; Select a patient
  1. N X,DIC,Y
  1. S DIC=2,DIC(0)="AEMQ" D ^DIC
  1. Q Y
  1. VALIDORD(ORDA) ; Screen Orderable for INR
  1. N ORDNM,ORY,ORDGDA,ORID S ORDNM="",ORY=0
  1. ; if orderable item inactive, exclude it
  1. I +$G(^ORD(101.43,+ORDA,.1))>0 G VOX
  1. ; if display group is not LABORATORY, exclude it
  1. S ORDGDA=$P($G(^ORD(101.43,+ORDA,0)),U,5)
  1. I $S(+ORDGDA'>0:1,$P($G(^ORD(100.98,+ORDGDA,0)),U)'="LABORATORY":1,1:0) G VOX
  1. ; if ID not valid, exclude it
  1. S ORID=+$P($G(^ORD(101.43,+ORDA,0)),U,2)
  1. I '$$VALIDLAB(ORID) G VOX
  1. ; otherwise, allow selection
  1. S ORY=1
  1. VOX Q ORY
  1. VALIDLAB(ORID) ; Is lab test valid?
  1. N ORY S ORY=0
  1. I $S(+ORID'>0:1,'$D(^LAB(60,+ORID,0)):1,1:0) G VLX
  1. ; if entry in LABORATORY TEST file (#60) doesn't have a LOCATION (DATA NAME), exclude it
  1. I '$L($P($G(^LAB(60,+ORID,0)),U,5)) G VLX
  1. ; otherwise, allow selection
  1. S ORY=1
  1. VLX Q ORY
  1. TEAMLIST(ORLIST) ; Team List Reports
  1. N DIC,DHD,FLDS,L,FR,BY,TO,ORCL,ORPAR,ORALIST,ORCLIST
  1. S DIC="^OR(100.21,",L=0,FLDS="[ORAM TEAM LIST]",BY="[ORAM TEAM LIST]"
  1. W !!,"List of ",$S(ORLIST="A":"ALL",1:"COMPLEX")," Anticoagulation Patients for a Clinic",!
  1. S ORCL=$$SELLOC^ORAMSET
  1. I +ORCL'>0 D Q
  1. . W $C(7),!!,"You must select a Clinic to proceed...",!
  1. D GET^ORAMSET(.ORPAR,ORCL)
  1. S ORALIST=$P($G(ORPAR(0)),U,2),ORCLIST=$P($G(ORPAR(0)),U,3)
  1. S:+ORALIST ORALIST=$P($G(^OR(100.21,ORALIST,0)),U)
  1. S:+ORCLIST ORCLIST=$P($G(^OR(100.21,ORCLIST,0)),U)
  1. S (FR,TO,DHD)=$S(ORLIST="A":ORALIST,1:ORCLIST)
  1. I FR']"" D Q
  1. . W !,"You must define a list for ",$S(ORLIST="A":"ALL",1:"COMPLEX")," Anticoagulation Patients."
  1. . W $$READ("EA","Press Return to Continue...")
  1. D EN1^DIP
  1. Q
  1. NEXTLAB ; Next Lab Report
  1. N DIC,DHD,FLDS,L,FR,BY,TO,ORCL,OREDT,ORLDT
  1. S DIC="^ORAM(103,",L=0,FLDS="[ORAM TEAM LIST]",BY="@CLINIC,NEXT LAB,@PATIENT",(OREDT,ORLDT)=""
  1. W !!,"List Anticoagulation Patients with Pending Lab Draws",!
  1. S ORCL=$$SELLOC^ORAMSET
  1. I +ORCL'>0 D Q
  1. . W $C(7),!!,"You must select a Clinic to proceed...",!
  1. S ORCL=$P($G(^SC(+ORCL,0)),U)
  1. F D Q:+ORLDT>+OREDT!$D(DIRUT)
  1. . S OREDT=+$$READ("DA^::E","Please Enter START Date: ","T","Enter a start date for the report")
  1. . Q:'OREDT
  1. . S ORLDT=+$$READ("DA^::E"," Please Enter END Date: ","T+14","Enter an INCLUSIVE end date for the report")
  1. . Q:'ORLDT
  1. . I $L(ORLDT,".")=1 S ORLDT=ORLDT_".2359"
  1. . I OREDT>ORLDT W !,"END DATE must be more recent than the START DATE" S (OREDT,ORLDT)=""
  1. Q:$S(OREDT'>0:1,ORLDT'>0:1,1:0)
  1. S OREDT=$$FMTE^XLFDT(OREDT,2),ORLDT=$$FMTE^XLFDT(ORLDT,2)
  1. S DHD=ORCL_" Next Lab Report"
  1. S FR=ORCL_","_OREDT,TO=ORCL_","_ORLDT
  1. D EN1^DIP
  1. Q