ORWGAPIA ; SLC/STAFF - Graph Application Calls ;07/16/13 13:20
;;3.0;ORDER ENTRY/RESULTS REPORTING;**215,251,260,243,372,361**;Dec 17, 1997;Build 39
;
; External References:
; $$ICDDATA^ICDXCODE ICR #5699
; $$CPT^ICPTCOD ICR #1995
; $$DOCCLASS^TIULC1 ICR #3548
; $$HASDOCMT^TIULX ICR #4315
; $$ISA^USRLM ICR #1544
;
ADMITX(DFN) ; $$(dfn) -> 1 if patient has data else 0
Q $O(^DGPM("C",+$G(DFN),0))>0
;
ALLERGYX(DFN) ; $$(dfn) -> 1 if patient has data else 0
Q $O(^GMR(120.8,"B",+$G(DFN),0))>0
;
ALLG(IEN) ; $$(ien) -> external display of allergies
I IEN Q $P($G(^GMRD(120.83,IEN,0)),U) ; this is for rxn, allergy is free text
Q IEN
;
CPT(NODE,ORVALUE,VALUES) ; from ORWGAPI4
D VCPT^PXPXRM(NODE,.ORVALUE)
S VALUES=$$DATA^ORWGAPIW(.ORVALUE) ;*****************************
Q
;
DISCH(IEN) ; $$(pt movement ien) -> discharge date
Q $P($G(^DGPM(+$P($G(^DGPM(+$G(IEN),0)),U,17),0)),U)
;
DOCCLASS(DOCTYPE) ; $$(doc type) -> ien of tiu doc class
N CONSULTS
S DOCTYPE=$E(DOCTYPE,1)
I DOCTYPE="P" Q 3
I DOCTYPE="D" Q 244
I DOCTYPE="C" D CNSLCLAS^TIUSRVD(.CONSULTS) Q CONSULTS
Q 0
;
EDU(NODE,ORVALUE,VALUES) ; from ORWGAPI4
D VPEDU^PXPXRM(NODE,.ORVALUE)
S VALUES=$$DATA^ORWGAPIW(.ORVALUE) ;*****************************
Q
;
EXAM(NODE,ORVALUE,VALUES) ; from ORWGAPI4
D VXAM^PXPXRM(NODE,.ORVALUE)
S VALUES=$$DATA^ORWGAPIW(.ORVALUE) ;*****************************
Q
;
GETTIU(ORDATA,IEN) ; from ORWGAPID
D TGET^TIUSRVR1(.ORDATA,IEN)
Q
;
HF(NODE,ORVALUE,VALUES) ; from ORWGAPI4
D VHF^PXPXRM(NODE,.ORVALUE)
S VALUES=$$DATA^ORWGAPIW(.ORVALUE) ;*****************************
Q
;
ICD0(IEN) ; $$(ien) -> external display of IDC0
N INFO
S INFO=$$ICDDATA^ICDXCODE("PROCEDURE",IEN,DT)
I INFO<0 Q ""
Q $P(INFO,U,2)_" "_$P(INFO,U,5)
;
ICD9(IEN) ; $$(ien) -> external display of IDC9
N INFO
S INFO=$$ICDDATA^ICDXCODE("DIAGNOSIS",IEN,DT)
I INFO<0 Q ""
Q $P(INFO,U,2)_" "_$P(INFO,U,4)
;
ICPT(IEN,CSD) ; $$(ien) -> external display of CPT
N X S X=$$CPT^ICPTCOD($G(IEN),$G(CSD))
Q $P(X,U,2)_" "_$E($P(X,U,3),1,30)
;
IMM(NODE,ORVALUE,VALUES) ; from ORWGAPI4
D VIMM^PXPXRM(NODE,.ORVALUE)
S VALUES=$$DATA^ORWGAPIW(.ORVALUE) ;*****************************
Q
;
ISA(USER,CLASS,ORERR) ; $$(user,user class,err) -> 1 if user in class, else 0
Q $$ISA^USRLM(USER,CLASS,.ORERR)
;
LOS(DGPMIFN) ; $$(pt movement ien) -> length of stay
N X D ^DGPMLOS
Q +$P($G(X),U,5)
;
MEDICINE(ARRAY,DFN) ;
N DATE,FILE,IEN,NAME,NUM,REF,VALUES,XREF
K ARRAY,^TMP("MCAR",$J),^TMP("OR",$J,"MCAR")
D FILE^ORWGAPIU(690,.REF,.XREF)
I '$L(REF) Q
I $E(REF,$L(REF))="," S REF=$E(REF,1,$L(REF)-1)_")"
I $E(REF,$L(REF))="(" S REF=$P(REF,"(")
D EN^MCARPS2(DFN)
S NUM=0
F S NUM=$O(^TMP("OR",$J,"MCAR","OT",NUM)) Q:NUM<1 D
. S VALUES=^TMP("OR",$J,"MCAR","OT",NUM)
. S DATE=$$DATETFM^ORWGAPIW($P(VALUES,U,6))
. S NAME=$P(VALUES,U) I '$L(NAME) Q
. S IEN=+$O(@REF@(XREF,NAME,""))
. I DATE,IEN S ARRAY(IEN,DATE)=NAME
K ^TMP("MCAR",$J),^TMP("OR",$J,"MCAR")
Q
;
MEDVAL(VAL) ;
N IEN,NAME,NAMES,REF,SEQ,XREF K NAMES,VAL
D FILE^ORWGAPIU(690,.REF,.XREF)
I '$L(REF) Q
I $E(REF,$L(REF))="," S REF=$E(REF,1,$L(REF)-1)_")"
I $E(REF,$L(REF))="(" S REF=$P(REF,"(")
S NAME=""
F S NAME=$O(@REF@(XREF,NAME)) Q:NAME="" D
. S IEN=0
. F S IEN=$O(@REF@(XREF,NAME,IEN)) Q:IEN<1 D
.. S NAMES(IEN)=NAME
S SEQ=0
S IEN=0
F S IEN=$O(NAMES(IEN)) Q:IEN<1 D
. S SEQ=SEQ+1
. S VAL(SEQ)=690_U_IEN_U_NAMES(IEN)
Q
;
MH(ORVALUE,NODE,VALUES) ; from ORWGAPI4
D ENDAS^YTAPI10(.ORVALUE,NODE)
S VALUES=$$DATA^ORWGAPIW(.ORVALUE) ;*****************************
Q
;
NOTEX(DFN) ; $$(dfn) -> 1 if patient has data else 0
Q $$HASDOCMT^TIULX($G(DFN))
;
OITEM(DATA) ; API - get order display groups - from ORWGAPI
N CNT,IEN,RESULT,TMP,ZERO
D RETURN^ORWGAPIW(.TMP,.DATA)
S CNT=0
S IEN=0
F S IEN=$O(^ORD(100.98,IEN)) Q:IEN<1 D
. S ZERO=$G(^ORD(100.98,IEN,0)) I '$L(ZERO) Q
. S RESULT="100.98^"_IEN_U_$P(ZERO,U)_U_$P(ZERO,U,3)
. D SETUP^ORWGAPIW(.DATA,RESULT,TMP,.CNT)
Q
;
POV(NODE,ORVALUE,VALUES) ; from ORWGAPI4
D VPOV^PXPXRM(NODE,.ORVALUE)
S VALUES=$$DATA^ORWGAPIW(.ORVALUE) ;*****************************
Q
;
PROB(GMPLLEX,GMPLSTAT,GMPLICD,GMPLODAT,GMPLXDAT,NODE) ; from ORWGAPI4
N GMPLPNAM,GMPLDLM,GMPLTXT,GMPLCOND,GMPLPRV,GMPLPRIO
D CALL2^GMPLUTL3(NODE)
Q
;
PTF(NODE,ORVALUE,VALUES) ; from ORWGAPI3, ORWGAPI4
D PTF^DGPTPXRM(NODE,.ORVALUE)
S VALUES=$$DATA^ORWGAPIW(.ORVALUE) ;*****************************
Q
;
RAD(NODE,ORVALUE,VALUES) ; from ORWGAPI3
D EN1^RAPXRM(NODE,.ORVALUE)
S VALUES=$$DATA^ORWGAPIW(.ORVALUE) ;*****************************
Q
;
SKIN(NODE,ORVALUE,VALUES) ; from ORWGAPI4
D VSKIN^PXPXRM(NODE,.ORVALUE)
S VALUES=$$DATA^ORWGAPIW(.ORVALUE) ;*****************************
Q
;
SURG(ORSURG,DFN,VALUES) ; from ORWGAPI2, ORWGAPI4
D GET^SROGTSR(.ORSURG,DFN)
S VALUES=$$DATA^ORWGAPIW(.ORSURG) ;*****************************
Q
;
SURGX(DFN) ; $$(dfn) -> 1 if patient has data else 0
Q $O(^SRF("B",+$G(DFN),0))>0
;
TAX(IEN) ; $$(ien) -> external display of reminder taxonomy
Q $P($G(^PXD(811.2,+$G(IEN),0)),U)
;
TITLE(DOCTYPE) ; $$(document type) -> parent ien^parent^parent abbrev
N IEN,RESULTS K RESULTS
S DOCTYPE=+$G(^TIU(8925,+$G(DOCTYPE),0))
S IEN=+$$DOCCLASS^TIULC1(DOCTYPE) I 'IEN Q ""
D GETDATA^ORWGAPIX(.RESULTS,8925.1,".01;.02",IEN)
I '$L($G(RESULTS(.01))) Q ""
Q IEN_U_"note - "_RESULTS(.01)_U_$G(RESULTS(.02))
;
TIU(ORVALUE,DOCIEN,ONE,DFN,OLDEST,NEWEST) ; from ORWGAPI1, ORWGAPI3
D CONTEXT^TIUSRVLO(.ORVALUE,DOCIEN,ONE,DFN,$G(OLDEST),$G(NEWEST))
Q
;
TIUTITLE(DATA) ; API - get tiu document titles - from ORWGAPI
N CNT,IEN,RESULT,RESULTS,TMP K ^TMP("TIUTLS",$J)
D RETURN^ORWGAPIW(.TMP,.DATA)
S CNT=0
D TITLIENS^TIULX
S IEN=0
F S IEN=$O(^TMP("TIUTLS",$J,IEN)) Q:IEN<1 D
. K RESULTS
. D GETDATA^ORWGAPIX(.RESULTS,8925.1,".01;.02",IEN)
. I '$L($G(RESULTS(.01))) Q
. S RESULT="8925.1^"_IEN_U_RESULTS(.01)_U_$G(RESULTS(.02))
. D SETUP^ORWGAPIW(.DATA,RESULT,TMP,.CNT)
K ^TMP("TIUTLS",$J)
Q
;
VISITX(DFN) ; $$(dfn) -> 1 if patient has data else 0
Q $O(^AUPNVSIT("AET",+$G(DFN),0))>0
;
VITAL(ORVALUE,NODE,VALUES) ; from ORWGAPI4
D EN^GMVPXRM(.ORVALUE,NODE)
S VALUES=$$DATA^ORWGAPIW(.ORVALUE) ;*****************************
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HORWGAPIA 6458 printed Oct 16, 2024@18:36:52 Page 2
ORWGAPIA ; SLC/STAFF - Graph Application Calls ;07/16/13 13:20
+1 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**215,251,260,243,372,361**;Dec 17, 1997;Build 39
+2 ;
+3 ; External References:
+4 ; $$ICDDATA^ICDXCODE ICR #5699
+5 ; $$CPT^ICPTCOD ICR #1995
+6 ; $$DOCCLASS^TIULC1 ICR #3548
+7 ; $$HASDOCMT^TIULX ICR #4315
+8 ; $$ISA^USRLM ICR #1544
+9 ;
ADMITX(DFN) ; $$(dfn) -> 1 if patient has data else 0
+1 QUIT $ORDER(^DGPM("C",+$GET(DFN),0))>0
+2 ;
ALLERGYX(DFN) ; $$(dfn) -> 1 if patient has data else 0
+1 QUIT $ORDER(^GMR(120.8,"B",+$GET(DFN),0))>0
+2 ;
ALLG(IEN) ; $$(ien) -> external display of allergies
+1 ; this is for rxn, allergy is free text
IF IEN
QUIT $PIECE($GET(^GMRD(120.83,IEN,0)),U)
+2 QUIT IEN
+3 ;
CPT(NODE,ORVALUE,VALUES) ; from ORWGAPI4
+1 DO VCPT^PXPXRM(NODE,.ORVALUE)
+2 ;*****************************
SET VALUES=$$DATA^ORWGAPIW(.ORVALUE)
+3 QUIT
+4 ;
DISCH(IEN) ; $$(pt movement ien) -> discharge date
+1 QUIT $PIECE($GET(^DGPM(+$PIECE($GET(^DGPM(+$GET(IEN),0)),U,17),0)),U)
+2 ;
DOCCLASS(DOCTYPE) ; $$(doc type) -> ien of tiu doc class
+1 NEW CONSULTS
+2 SET DOCTYPE=$EXTRACT(DOCTYPE,1)
+3 IF DOCTYPE="P"
QUIT 3
+4 IF DOCTYPE="D"
QUIT 244
+5 IF DOCTYPE="C"
DO CNSLCLAS^TIUSRVD(.CONSULTS)
QUIT CONSULTS
+6 QUIT 0
+7 ;
EDU(NODE,ORVALUE,VALUES) ; from ORWGAPI4
+1 DO VPEDU^PXPXRM(NODE,.ORVALUE)
+2 ;*****************************
SET VALUES=$$DATA^ORWGAPIW(.ORVALUE)
+3 QUIT
+4 ;
EXAM(NODE,ORVALUE,VALUES) ; from ORWGAPI4
+1 DO VXAM^PXPXRM(NODE,.ORVALUE)
+2 ;*****************************
SET VALUES=$$DATA^ORWGAPIW(.ORVALUE)
+3 QUIT
+4 ;
GETTIU(ORDATA,IEN) ; from ORWGAPID
+1 DO TGET^TIUSRVR1(.ORDATA,IEN)
+2 QUIT
+3 ;
HF(NODE,ORVALUE,VALUES) ; from ORWGAPI4
+1 DO VHF^PXPXRM(NODE,.ORVALUE)
+2 ;*****************************
SET VALUES=$$DATA^ORWGAPIW(.ORVALUE)
+3 QUIT
+4 ;
ICD0(IEN) ; $$(ien) -> external display of IDC0
+1 NEW INFO
+2 SET INFO=$$ICDDATA^ICDXCODE("PROCEDURE",IEN,DT)
+3 IF INFO<0
QUIT ""
+4 QUIT $PIECE(INFO,U,2)_" "_$PIECE(INFO,U,5)
+5 ;
ICD9(IEN) ; $$(ien) -> external display of IDC9
+1 NEW INFO
+2 SET INFO=$$ICDDATA^ICDXCODE("DIAGNOSIS",IEN,DT)
+3 IF INFO<0
QUIT ""
+4 QUIT $PIECE(INFO,U,2)_" "_$PIECE(INFO,U,4)
+5 ;
ICPT(IEN,CSD) ; $$(ien) -> external display of CPT
+1 NEW X
SET X=$$CPT^ICPTCOD($GET(IEN),$GET(CSD))
+2 QUIT $PIECE(X,U,2)_" "_$EXTRACT($PIECE(X,U,3),1,30)
+3 ;
IMM(NODE,ORVALUE,VALUES) ; from ORWGAPI4
+1 DO VIMM^PXPXRM(NODE,.ORVALUE)
+2 ;*****************************
SET VALUES=$$DATA^ORWGAPIW(.ORVALUE)
+3 QUIT
+4 ;
ISA(USER,CLASS,ORERR) ; $$(user,user class,err) -> 1 if user in class, else 0
+1 QUIT $$ISA^USRLM(USER,CLASS,.ORERR)
+2 ;
LOS(DGPMIFN) ; $$(pt movement ien) -> length of stay
+1 NEW X
DO ^DGPMLOS
+2 QUIT +$PIECE($GET(X),U,5)
+3 ;
MEDICINE(ARRAY,DFN) ;
+1 NEW DATE,FILE,IEN,NAME,NUM,REF,VALUES,XREF
+2 KILL ARRAY,^TMP("MCAR",$JOB),^TMP("OR",$JOB,"MCAR")
+3 DO FILE^ORWGAPIU(690,.REF,.XREF)
+4 IF '$LENGTH(REF)
QUIT
+5 IF $EXTRACT(REF,$LENGTH(REF))=","
SET REF=$EXTRACT(REF,1,$LENGTH(REF)-1)_")"
+6 IF $EXTRACT(REF,$LENGTH(REF))="("
SET REF=$PIECE(REF,"(")
+7 DO EN^MCARPS2(DFN)
+8 SET NUM=0
+9 FOR
SET NUM=$ORDER(^TMP("OR",$JOB,"MCAR","OT",NUM))
if NUM<1
QUIT
Begin DoDot:1
+10 SET VALUES=^TMP("OR",$JOB,"MCAR","OT",NUM)
+11 SET DATE=$$DATETFM^ORWGAPIW($PIECE(VALUES,U,6))
+12 SET NAME=$PIECE(VALUES,U)
IF '$LENGTH(NAME)
QUIT
+13 SET IEN=+$ORDER(@REF@(XREF,NAME,""))
+14 IF DATE
IF IEN
SET ARRAY(IEN,DATE)=NAME
End DoDot:1
+15 KILL ^TMP("MCAR",$JOB),^TMP("OR",$JOB,"MCAR")
+16 QUIT
+17 ;
MEDVAL(VAL) ;
+1 NEW IEN,NAME,NAMES,REF,SEQ,XREF
KILL NAMES,VAL
+2 DO FILE^ORWGAPIU(690,.REF,.XREF)
+3 IF '$LENGTH(REF)
QUIT
+4 IF $EXTRACT(REF,$LENGTH(REF))=","
SET REF=$EXTRACT(REF,1,$LENGTH(REF)-1)_")"
+5 IF $EXTRACT(REF,$LENGTH(REF))="("
SET REF=$PIECE(REF,"(")
+6 SET NAME=""
+7 FOR
SET NAME=$ORDER(@REF@(XREF,NAME))
if NAME=""
QUIT
Begin DoDot:1
+8 SET IEN=0
+9 FOR
SET IEN=$ORDER(@REF@(XREF,NAME,IEN))
if IEN<1
QUIT
Begin DoDot:2
+10 SET NAMES(IEN)=NAME
End DoDot:2
End DoDot:1
+11 SET SEQ=0
+12 SET IEN=0
+13 FOR
SET IEN=$ORDER(NAMES(IEN))
if IEN<1
QUIT
Begin DoDot:1
+14 SET SEQ=SEQ+1
+15 SET VAL(SEQ)=690_U_IEN_U_NAMES(IEN)
End DoDot:1
+16 QUIT
+17 ;
MH(ORVALUE,NODE,VALUES) ; from ORWGAPI4
+1 DO ENDAS^YTAPI10(.ORVALUE,NODE)
+2 ;*****************************
SET VALUES=$$DATA^ORWGAPIW(.ORVALUE)
+3 QUIT
+4 ;
NOTEX(DFN) ; $$(dfn) -> 1 if patient has data else 0
+1 QUIT $$HASDOCMT^TIULX($GET(DFN))
+2 ;
OITEM(DATA) ; API - get order display groups - from ORWGAPI
+1 NEW CNT,IEN,RESULT,TMP,ZERO
+2 DO RETURN^ORWGAPIW(.TMP,.DATA)
+3 SET CNT=0
+4 SET IEN=0
+5 FOR
SET IEN=$ORDER(^ORD(100.98,IEN))
if IEN<1
QUIT
Begin DoDot:1
+6 SET ZERO=$GET(^ORD(100.98,IEN,0))
IF '$LENGTH(ZERO)
QUIT
+7 SET RESULT="100.98^"_IEN_U_$PIECE(ZERO,U)_U_$PIECE(ZERO,U,3)
+8 DO SETUP^ORWGAPIW(.DATA,RESULT,TMP,.CNT)
End DoDot:1
+9 QUIT
+10 ;
POV(NODE,ORVALUE,VALUES) ; from ORWGAPI4
+1 DO VPOV^PXPXRM(NODE,.ORVALUE)
+2 ;*****************************
SET VALUES=$$DATA^ORWGAPIW(.ORVALUE)
+3 QUIT
+4 ;
PROB(GMPLLEX,GMPLSTAT,GMPLICD,GMPLODAT,GMPLXDAT,NODE) ; from ORWGAPI4
+1 NEW GMPLPNAM,GMPLDLM,GMPLTXT,GMPLCOND,GMPLPRV,GMPLPRIO
+2 DO CALL2^GMPLUTL3(NODE)
+3 QUIT
+4 ;
PTF(NODE,ORVALUE,VALUES) ; from ORWGAPI3, ORWGAPI4
+1 DO PTF^DGPTPXRM(NODE,.ORVALUE)
+2 ;*****************************
SET VALUES=$$DATA^ORWGAPIW(.ORVALUE)
+3 QUIT
+4 ;
RAD(NODE,ORVALUE,VALUES) ; from ORWGAPI3
+1 DO EN1^RAPXRM(NODE,.ORVALUE)
+2 ;*****************************
SET VALUES=$$DATA^ORWGAPIW(.ORVALUE)
+3 QUIT
+4 ;
SKIN(NODE,ORVALUE,VALUES) ; from ORWGAPI4
+1 DO VSKIN^PXPXRM(NODE,.ORVALUE)
+2 ;*****************************
SET VALUES=$$DATA^ORWGAPIW(.ORVALUE)
+3 QUIT
+4 ;
SURG(ORSURG,DFN,VALUES) ; from ORWGAPI2, ORWGAPI4
+1 DO GET^SROGTSR(.ORSURG,DFN)
+2 ;*****************************
SET VALUES=$$DATA^ORWGAPIW(.ORSURG)
+3 QUIT
+4 ;
SURGX(DFN) ; $$(dfn) -> 1 if patient has data else 0
+1 QUIT $ORDER(^SRF("B",+$GET(DFN),0))>0
+2 ;
TAX(IEN) ; $$(ien) -> external display of reminder taxonomy
+1 QUIT $PIECE($GET(^PXD(811.2,+$GET(IEN),0)),U)
+2 ;
TITLE(DOCTYPE) ; $$(document type) -> parent ien^parent^parent abbrev
+1 NEW IEN,RESULTS
KILL RESULTS
+2 SET DOCTYPE=+$GET(^TIU(8925,+$GET(DOCTYPE),0))
+3 SET IEN=+$$DOCCLASS^TIULC1(DOCTYPE)
IF 'IEN
QUIT ""
+4 DO GETDATA^ORWGAPIX(.RESULTS,8925.1,".01;.02",IEN)
+5 IF '$LENGTH($GET(RESULTS(.01)))
QUIT ""
+6 QUIT IEN_U_"note - "_RESULTS(.01)_U_$GET(RESULTS(.02))
+7 ;
TIU(ORVALUE,DOCIEN,ONE,DFN,OLDEST,NEWEST) ; from ORWGAPI1, ORWGAPI3
+1 DO CONTEXT^TIUSRVLO(.ORVALUE,DOCIEN,ONE,DFN,$GET(OLDEST),$GET(NEWEST))
+2 QUIT
+3 ;
TIUTITLE(DATA) ; API - get tiu document titles - from ORWGAPI
+1 NEW CNT,IEN,RESULT,RESULTS,TMP
KILL ^TMP("TIUTLS",$JOB)
+2 DO RETURN^ORWGAPIW(.TMP,.DATA)
+3 SET CNT=0
+4 DO TITLIENS^TIULX
+5 SET IEN=0
+6 FOR
SET IEN=$ORDER(^TMP("TIUTLS",$JOB,IEN))
if IEN<1
QUIT
Begin DoDot:1
+7 KILL RESULTS
+8 DO GETDATA^ORWGAPIX(.RESULTS,8925.1,".01;.02",IEN)
+9 IF '$LENGTH($GET(RESULTS(.01)))
QUIT
+10 SET RESULT="8925.1^"_IEN_U_RESULTS(.01)_U_$GET(RESULTS(.02))
+11 DO SETUP^ORWGAPIW(.DATA,RESULT,TMP,.CNT)
End DoDot:1
+12 KILL ^TMP("TIUTLS",$JOB)
+13 QUIT
+14 ;
VISITX(DFN) ; $$(dfn) -> 1 if patient has data else 0
+1 QUIT $ORDER(^AUPNVSIT("AET",+$GET(DFN),0))>0
+2 ;
VITAL(ORVALUE,NODE,VALUES) ; from ORWGAPI4
+1 DO EN^GMVPXRM(.ORVALUE,NODE)
+2 ;*****************************
SET VALUES=$$DATA^ORWGAPIW(.ORVALUE)
+3 QUIT
+4 ;