GMPLEDT3 ; ISL/MKB,KER,JER,TC -- Problem List edit utilities ;08/07/14 13:28
;;2.0;Problem List;**26,35,36,42,45**;Aug 25, 1994;Build 53
;
; External References
; DBIA 872 ^ORD(101
; ICR 5747 $$CODECS^ICDEX
; DBIA 10026 ^XUSEC("GMPL ICD CODE"
; DBIA 10015 EN^DIQ1
; DBIA 10026 ^DIR
; DBIA 10104 $$UP^XLFSTR
;
MSG() ; List Manager Message Bar
Q "Enter the number of the item(s) you wish to change"
;
KEYS ; Setup XQORM("KEY") array
; Numbers ref'd also in IN4^-EDIT, NTES^-EDT4
N I,PROTCL,NUM,ICD
S ICD=$S($D(^XUSEC("GMPL ICD CODE",DUZ)):1,1:0)
S XQORM("KEY","1")=$O(^ORD(101,"B","GMPL EDIT REFORMULATE",0))_"^1"
S XQORM("KEY","2")=$O(^ORD(101,"B","GMPL EDIT ONSET",0))_"^1"
S XQORM("KEY","3")=$O(^ORD(101,"B","GMPL EDIT STATUS",0))_"^1"
S XQORM("KEY","4")=$O(^ORD(101,"B","GMPL EDIT PROVIDER",0))_"^1"
S XQORM("KEY","5")=$O(^ORD(101,"B","GMPL EDIT SERVICE",0))_"^1",NUM=5
S:ICD XQORM("KEY","6")=$O(^ORD(101,"B","GMPL EDIT ICD",0))_"^1",NUM=6
I GMPVA D
. S NUM=NUM+1,XQORM("KEY",NUM)=$O(^ORD(101,"B","GMPL EDIT SC",0))_"^1"
. S NUM=NUM+1,XQORM("KEY",NUM)=$O(^ORD(101,"B","GMPL EDIT SP",0))_"^1"
S PROTCL=$O(^ORD(101,"B","GMPL EDIT NOTES",0))_"^1"
I GMPFLD(10,0) F I=1:1:GMPFLD(10,0) S NUM=NUM+1,XQORM("KEY",NUM)=PROTCL
S XQORM("KEY",NUM+1)=$O(^ORD(101,"B","GMPL EDIT NEW NOTE",0))_"^1"
S:$G(GMPARAM("VER"))&$D(GMPLUSER) XQORM("KEY","$")=$O(^ORD(101,"B","GMPL EDIT VERIFY",0))_"^1"
S XQORM("KEY","=")=$O(^ORD(101,"B","VALM NEXT SCREEN",0))_"^1"
S VALMSG=$$MSG
Q
;
GETFLDS(DA) ; Define GMPFLD(#) and GMPORIG(#) Arrays with Current Values
N DIC,DIQ,DR,I,GMPL,CNT,NIFN,FAC,EXT
S DIC="^AUPNPROB(",DIQ="GMPL",DIQ(0)="IE"
S DR=".01;.03;.05;.08:1.02;1.05:1.18;80001:80005;80201;80202" D EN^DIQ1
F I=.01,.03,.05,.08,.12,.13,1.01,1.02,1.05,1.06,1.07,1.08,1.09,1.1,1.11,1.12,1.13,1.14,1.15,1.16,1.17,1.18,80001,80002,80003,80004,80005,80201,80202 D
. S GMPORIG(I)=$G(GMPL(9000011,DA,I,"I")),EXT=""
. I I=1.01,GMPL(9000011,DA,I,"I")'>1 S GMPORIG(I)="" Q
. Q:(GMPORIG(I)="")!(I=1.02)
. I "^.01^.05^.12^1.01^1.05^1.06^1.08^1.1^1.14^80001^80002^80003^80004^80005^"[(U_I_U) S EXT=GMPL(9000011,DA,I,"E")
. I "^.03^.08^.13^1.07^1.09^80201^"[(U_I_U) S EXT=$$EXTDT^GMPLX(GMPORIG(I))
. I "^80202^"[(U_I_U) S EXT=$P($$CODECS^ICDEX($P(GMPORIG(.01),U,2),80,$P(GMPORIG(80201),U)),U,2)
. I "^1.11^1.12^1.13^"[(U_I_U) S EXT=$S(I=1.11:"AGENT ORANGE",I=1.12:"RADIATION",1:"ENV CONTAMINANTS")
. I "^1.15^1.16^1.17^1.18^"[(U_I_U) S EXT=$S(I=1.15:"HEAD/NECK CANCER",I=1.16:"MIL SEXUAL TRAUMA",I=1.17:"COMBAT VET",1:"SHAD")
. S GMPORIG(I)=GMPORIG(I)_U_EXT
I $D(^AUPNPROB(DA,803))=10 D
. N CODE S CODE=$P(GMPORIG(.01),U,2)
. S I=0 F S I=$O(^AUPNPROB(DA,803,I)) Q:+I'>0 D
. . S $P(CODE,"/",(I+1))=$P($G(^AUPNPROB(DA,803,I,0)),U)
. S $P(GMPORIG(.01),U,2)=CODE
S I=0 F S I=$O(GMPORIG(I)) Q:I'>0!(I=10) S GMPFLD(I)=GMPORIG(I)
S (CNT,FAC,NIFN,GMPORIG(10,0),GMPFLD(10,0))=0
;S FAC=$O(^AUPNPROB(DA,11,"B",+GMPVAMC,0)) Q:'FAC
F S FAC=$O(^AUPNPROB(DA,11,FAC)) Q:FAC'>0 D
. F S NIFN=$O(^AUPNPROB(DA,11,FAC,11,"B",NIFN)) Q:NIFN'>0 D
. . S CNT=CNT+1,GMPORIG(10,CNT)=$G(^AUPNPROB(DA,11,FAC,11,NIFN,0))
. . S $P(GMPORIG(10,CNT),U,2)=FAC
. . S GMPFLD(10,CNT)=GMPORIG(10,CNT)
S (GMPORIG(10,0),GMPFLD(10,0))=CNT
S I=80000 F S I=$O(GMPORIG(I)) Q:I'>0 S GMPFLD(I)=GMPORIG(I)
Q
;
FLDS ; Define GMPFLD("FLD") Array for Editing
S (GMPFLD("FLD",2),GMPFLD("FLD",6),GMPFLD("FLD",7))="Q"
S GMPFLD("FLD",1)="TERM",GMPFLD("FLD","PROBLEM")=1
S:$D(^XUSEC("GMPL ICD CODE",DUZ)) GMPFLD("FLD",2)="ICD",GMPFLD("FLD","ICD CODE")=2
S GMPFLD("FLD",3)="NOTE",GMPFLD("FLD","COMMENT")=3
S GMPFLD("FLD",4)="ONSET",GMPFLD("FLD","DATE OF ONSET")=4
S GMPFLD("FLD",5)="STATUS",GMPFLD("FLD","STATUS")=5
S:GMPSC GMPFLD("FLD",6)="SC",GMPFLD("FLD","IS THIS PROBLEM RELATED TO A SERVICE-CONNECTED CONDITION?")=6
S:GMPAGTOR GMPFLD("FLD",7)="SP",GMPFLD("FLD","IS THIS PROBLEM RELATED TO AGENT ORANGE EXPOSURE?")=7
S:GMPION GMPFLD("FLD",7)="SP",GMPFLD("FLD","IS THIS PROBLEM RELATED TO RADIATION EXPOSURE?")=7
S:GMPGULF GMPFLD("FLD",7)="SP",GMPFLD("FLD","IS THIS PROBLEM RELATED TO ENVIRONMENTAL CONTAMINANTS EXPOSURE?")=7
S:GMPHNC GMPFLD("FLD",7)="SP",GMPFLD("FLD","IS THIS PROBLEM RELATED TO DIAGNOSED HEAD AND/OR NECK CANCER?")=7
S:GMPMST GMPFLD("FLD",7)="SP",GMPFLD("FLD","IS THIS PROBLEM RELATED TO REPORTED MILITARY SEXUAL TRAUMA?")=7
S:GMPCV GMPFLD("FLD",7)="SP",GMPFLD("FLD","IS THIS PROBLEM RELATED TO REPORTED COMBAT VET?")=7
S:GMPSHD GMPFLD("FLD",7)="SP",GMPFLD("FLD","IS THIS PROBLEM RELATED TO REPORTED SHIPBOARD HAZARD AND DEFENSE?")=7
S GMPFLD("FLD",8)="PROV",GMPFLD("FLD","RESPONSIBLE PROVIDER")=8
S GMPFLD("FLD",9)="SOURCE"
S:$E(GMPLVIEW("VIEW"))="C" GMPFLD("FLD","CLINIC")=9
S:$E(GMPLVIEW("VIEW"))'="C" GMPFLD("FLD","SERVICE")=9
S GMPFLD("FLD",10)="RECORDED",GMPFLD("FLD","DATE RECORDED")=10
S GMPFLD("FLD",11)="AUTHOR",GMPFLD("FLD","RECORDING PROVIDER")=11
S GMPFLD("FLD",0)=11
Q
;
JUMP(XFLD) ; Resolve ^- Jump Out of Field Order in Edit
N I,MATCH,CNT,PROMPT,DIR,X,Y,DTOUT,DUOUT
; Passed in as ^XXX
S XFLD=$$UP^XLFSTR($P(XFLD,U,2))
I (XFLD="")!(XFLD["^") S GMPQUIT=1 Q
I '$D(GMPLJUMP) W $C(7)," ^-jumping not allowed now!" S GMPLJUMP=0 Q
; Field is Exact
I $G(GMPFLD("FLD",XFLD)) S GMPLJUMP=GMPFLD("FLD",XFLD) Q
S CNT=0,PROMPT=" "
F S PROMPT=$O(GMPFLD("FLD",PROMPT)) Q:PROMPT="" D
. Q:$E(PROMPT,1,$L(XFLD))'=XFLD
. S CNT=CNT+1,MATCH(CNT)=GMPFLD("FLD",PROMPT)_U_PROMPT
I CNT=0 W $C(7)," ??" Q
I CNT=1 S PROMPT=$P(MATCH(1),U,2),GMPLJUMP=+MATCH(1) W $E(PROMPT,$L(XFLD)+1,$L(PROMPT)) Q
; Select which Field to Jump To.
F I=1:1:CNT S DIR("A",I)=I_" "_$P(MATCH(I),U,2)
S DIR("A")="Select 1-"_CNT_": ",DIR(0)="NAO^1:"_CNT
S DIR("?")="Select the field you wish to jump to, by number"
D ^DIR I $D(DTOUT)!($D(DUOUT))!(Y="") Q
S GMPLJUMP=+MATCH(+Y)
Q
;
CK ; Check whether to Stop Processing
; Called from Exit Action of GMPL EDIT XXX Protocols
S:$D(GMPQUIT) XQORPOP=1 S:'$D(GMPQUIT) GMPREBLD=1 K GMPQUIT
I $D(DTOUT)!($G(VALMBCK)="Q") S VALMBCK="Q" Q
S VALMBCK="R",VALMSG=$$MSG
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMPLEDT3 6176 printed Oct 16, 2024@18:30:41 Page 2
GMPLEDT3 ; ISL/MKB,KER,JER,TC -- Problem List edit utilities ;08/07/14 13:28
+1 ;;2.0;Problem List;**26,35,36,42,45**;Aug 25, 1994;Build 53
+2 ;
+3 ; External References
+4 ; DBIA 872 ^ORD(101
+5 ; ICR 5747 $$CODECS^ICDEX
+6 ; DBIA 10026 ^XUSEC("GMPL ICD CODE"
+7 ; DBIA 10015 EN^DIQ1
+8 ; DBIA 10026 ^DIR
+9 ; DBIA 10104 $$UP^XLFSTR
+10 ;
MSG() ; List Manager Message Bar
+1 QUIT "Enter the number of the item(s) you wish to change"
+2 ;
KEYS ; Setup XQORM("KEY") array
+1 ; Numbers ref'd also in IN4^-EDIT, NTES^-EDT4
+2 NEW I,PROTCL,NUM,ICD
+3 SET ICD=$SELECT($DATA(^XUSEC("GMPL ICD CODE",DUZ)):1,1:0)
+4 SET XQORM("KEY","1")=$ORDER(^ORD(101,"B","GMPL EDIT REFORMULATE",0))_"^1"
+5 SET XQORM("KEY","2")=$ORDER(^ORD(101,"B","GMPL EDIT ONSET",0))_"^1"
+6 SET XQORM("KEY","3")=$ORDER(^ORD(101,"B","GMPL EDIT STATUS",0))_"^1"
+7 SET XQORM("KEY","4")=$ORDER(^ORD(101,"B","GMPL EDIT PROVIDER",0))_"^1"
+8 SET XQORM("KEY","5")=$ORDER(^ORD(101,"B","GMPL EDIT SERVICE",0))_"^1"
SET NUM=5
+9 if ICD
SET XQORM("KEY","6")=$ORDER(^ORD(101,"B","GMPL EDIT ICD",0))_"^1"
SET NUM=6
+10 IF GMPVA
Begin DoDot:1
+11 SET NUM=NUM+1
SET XQORM("KEY",NUM)=$ORDER(^ORD(101,"B","GMPL EDIT SC",0))_"^1"
+12 SET NUM=NUM+1
SET XQORM("KEY",NUM)=$ORDER(^ORD(101,"B","GMPL EDIT SP",0))_"^1"
End DoDot:1
+13 SET PROTCL=$ORDER(^ORD(101,"B","GMPL EDIT NOTES",0))_"^1"
+14 IF GMPFLD(10,0)
FOR I=1:1:GMPFLD(10,0)
SET NUM=NUM+1
SET XQORM("KEY",NUM)=PROTCL
+15 SET XQORM("KEY",NUM+1)=$ORDER(^ORD(101,"B","GMPL EDIT NEW NOTE",0))_"^1"
+16 if $GET(GMPARAM("VER"))&$DATA(GMPLUSER)
SET XQORM("KEY","$")=$ORDER(^ORD(101,"B","GMPL EDIT VERIFY",0))_"^1"
+17 SET XQORM("KEY","=")=$ORDER(^ORD(101,"B","VALM NEXT SCREEN",0))_"^1"
+18 SET VALMSG=$$MSG
+19 QUIT
+20 ;
GETFLDS(DA) ; Define GMPFLD(#) and GMPORIG(#) Arrays with Current Values
+1 NEW DIC,DIQ,DR,I,GMPL,CNT,NIFN,FAC,EXT
+2 SET DIC="^AUPNPROB("
SET DIQ="GMPL"
SET DIQ(0)="IE"
+3 SET DR=".01;.03;.05;.08:1.02;1.05:1.18;80001:80005;80201;80202"
DO EN^DIQ1
+4 FOR I=.01,.03,.05,.08,.12,.13,1.01,1.02,1.05,1.06,1.07,1.08,1.09,1.1,1.11,1.12,1.13,1.14,1.15,1.16,1.17,1.18,80001,80002,80003,80004,80005,80201,80202
Begin DoDot:1
+5 SET GMPORIG(I)=$GET(GMPL(9000011,DA,I,"I"))
SET EXT=""
+6 IF I=1.01
IF GMPL(9000011,DA,I,"I")'>1
SET GMPORIG(I)=""
QUIT
+7 if (GMPORIG(I)="")!(I=1.02)
QUIT
+8 IF "^.01^.05^.12^1.01^1.05^1.06^1.08^1.1^1.14^80001^80002^80003^80004^80005^"[(U_I_U)
SET EXT=GMPL(9000011,DA,I,"E")
+9 IF "^.03^.08^.13^1.07^1.09^80201^"[(U_I_U)
SET EXT=$$EXTDT^GMPLX(GMPORIG(I))
+10 IF "^80202^"[(U_I_U)
SET EXT=$PIECE($$CODECS^ICDEX($PIECE(GMPORIG(.01),U,2),80,$PIECE(GMPORIG(80201),U)),U,2)
+11 IF "^1.11^1.12^1.13^"[(U_I_U)
SET EXT=$SELECT(I=1.11:"AGENT ORANGE",I=1.12:"RADIATION",1:"ENV CONTAMINANTS")
+12 IF "^1.15^1.16^1.17^1.18^"[(U_I_U)
SET EXT=$SELECT(I=1.15:"HEAD/NECK CANCER",I=1.16:"MIL SEXUAL TRAUMA",I=1.17:"COMBAT VET",1:"SHAD")
+13 SET GMPORIG(I)=GMPORIG(I)_U_EXT
End DoDot:1
+14 IF $DATA(^AUPNPROB(DA,803))=10
Begin DoDot:1
+15 NEW CODE
SET CODE=$PIECE(GMPORIG(.01),U,2)
+16 SET I=0
FOR
SET I=$ORDER(^AUPNPROB(DA,803,I))
if +I'>0
QUIT
Begin DoDot:2
+17 SET $PIECE(CODE,"/",(I+1))=$PIECE($GET(^AUPNPROB(DA,803,I,0)),U)
End DoDot:2
+18 SET $PIECE(GMPORIG(.01),U,2)=CODE
End DoDot:1
+19 SET I=0
FOR
SET I=$ORDER(GMPORIG(I))
if I'>0!(I=10)
QUIT
SET GMPFLD(I)=GMPORIG(I)
+20 SET (CNT,FAC,NIFN,GMPORIG(10,0),GMPFLD(10,0))=0
+21 ;S FAC=$O(^AUPNPROB(DA,11,"B",+GMPVAMC,0)) Q:'FAC
+22 FOR
SET FAC=$ORDER(^AUPNPROB(DA,11,FAC))
if FAC'>0
QUIT
Begin DoDot:1
+23 FOR
SET NIFN=$ORDER(^AUPNPROB(DA,11,FAC,11,"B",NIFN))
if NIFN'>0
QUIT
Begin DoDot:2
+24 SET CNT=CNT+1
SET GMPORIG(10,CNT)=$GET(^AUPNPROB(DA,11,FAC,11,NIFN,0))
+25 SET $PIECE(GMPORIG(10,CNT),U,2)=FAC
+26 SET GMPFLD(10,CNT)=GMPORIG(10,CNT)
End DoDot:2
End DoDot:1
+27 SET (GMPORIG(10,0),GMPFLD(10,0))=CNT
+28 SET I=80000
FOR
SET I=$ORDER(GMPORIG(I))
if I'>0
QUIT
SET GMPFLD(I)=GMPORIG(I)
+29 QUIT
+30 ;
FLDS ; Define GMPFLD("FLD") Array for Editing
+1 SET (GMPFLD("FLD",2),GMPFLD("FLD",6),GMPFLD("FLD",7))="Q"
+2 SET GMPFLD("FLD",1)="TERM"
SET GMPFLD("FLD","PROBLEM")=1
+3 if $DATA(^XUSEC("GMPL ICD CODE",DUZ))
SET GMPFLD("FLD",2)="ICD"
SET GMPFLD("FLD","ICD CODE")=2
+4 SET GMPFLD("FLD",3)="NOTE"
SET GMPFLD("FLD","COMMENT")=3
+5 SET GMPFLD("FLD",4)="ONSET"
SET GMPFLD("FLD","DATE OF ONSET")=4
+6 SET GMPFLD("FLD",5)="STATUS"
SET GMPFLD("FLD","STATUS")=5
+7 if GMPSC
SET GMPFLD("FLD",6)="SC"
SET GMPFLD("FLD","IS THIS PROBLEM RELATED TO A SERVICE-CONNECTED CONDITION?")=6
+8 if GMPAGTOR
SET GMPFLD("FLD",7)="SP"
SET GMPFLD("FLD","IS THIS PROBLEM RELATED TO AGENT ORANGE EXPOSURE?")=7
+9 if GMPION
SET GMPFLD("FLD",7)="SP"
SET GMPFLD("FLD","IS THIS PROBLEM RELATED TO RADIATION EXPOSURE?")=7
+10 if GMPGULF
SET GMPFLD("FLD",7)="SP"
SET GMPFLD("FLD","IS THIS PROBLEM RELATED TO ENVIRONMENTAL CONTAMINANTS EXPOSURE?")=7
+11 if GMPHNC
SET GMPFLD("FLD",7)="SP"
SET GMPFLD("FLD","IS THIS PROBLEM RELATED TO DIAGNOSED HEAD AND/OR NECK CANCER?")=7
+12 if GMPMST
SET GMPFLD("FLD",7)="SP"
SET GMPFLD("FLD","IS THIS PROBLEM RELATED TO REPORTED MILITARY SEXUAL TRAUMA?")=7
+13 if GMPCV
SET GMPFLD("FLD",7)="SP"
SET GMPFLD("FLD","IS THIS PROBLEM RELATED TO REPORTED COMBAT VET?")=7
+14 if GMPSHD
SET GMPFLD("FLD",7)="SP"
SET GMPFLD("FLD","IS THIS PROBLEM RELATED TO REPORTED SHIPBOARD HAZARD AND DEFENSE?")=7
+15 SET GMPFLD("FLD",8)="PROV"
SET GMPFLD("FLD","RESPONSIBLE PROVIDER")=8
+16 SET GMPFLD("FLD",9)="SOURCE"
+17 if $EXTRACT(GMPLVIEW("VIEW"))="C"
SET GMPFLD("FLD","CLINIC")=9
+18 if $EXTRACT(GMPLVIEW("VIEW"))'="C"
SET GMPFLD("FLD","SERVICE")=9
+19 SET GMPFLD("FLD",10)="RECORDED"
SET GMPFLD("FLD","DATE RECORDED")=10
+20 SET GMPFLD("FLD",11)="AUTHOR"
SET GMPFLD("FLD","RECORDING PROVIDER")=11
+21 SET GMPFLD("FLD",0)=11
+22 QUIT
+23 ;
JUMP(XFLD) ; Resolve ^- Jump Out of Field Order in Edit
+1 NEW I,MATCH,CNT,PROMPT,DIR,X,Y,DTOUT,DUOUT
+2 ; Passed in as ^XXX
+3 SET XFLD=$$UP^XLFSTR($PIECE(XFLD,U,2))
+4 IF (XFLD="")!(XFLD["^")
SET GMPQUIT=1
QUIT
+5 IF '$DATA(GMPLJUMP)
WRITE $CHAR(7)," ^-jumping not allowed now!"
SET GMPLJUMP=0
QUIT
+6 ; Field is Exact
+7 IF $GET(GMPFLD("FLD",XFLD))
SET GMPLJUMP=GMPFLD("FLD",XFLD)
QUIT
+8 SET CNT=0
SET PROMPT=" "
+9 FOR
SET PROMPT=$ORDER(GMPFLD("FLD",PROMPT))
if PROMPT=""
QUIT
Begin DoDot:1
+10 if $EXTRACT(PROMPT,1,$LENGTH(XFLD))'=XFLD
QUIT
+11 SET CNT=CNT+1
SET MATCH(CNT)=GMPFLD("FLD",PROMPT)_U_PROMPT
End DoDot:1
+12 IF CNT=0
WRITE $CHAR(7)," ??"
QUIT
+13 IF CNT=1
SET PROMPT=$PIECE(MATCH(1),U,2)
SET GMPLJUMP=+MATCH(1)
WRITE $EXTRACT(PROMPT,$LENGTH(XFLD)+1,$LENGTH(PROMPT))
QUIT
+14 ; Select which Field to Jump To.
+15 FOR I=1:1:CNT
SET DIR("A",I)=I_" "_$PIECE(MATCH(I),U,2)
+16 SET DIR("A")="Select 1-"_CNT_": "
SET DIR(0)="NAO^1:"_CNT
+17 SET DIR("?")="Select the field you wish to jump to, by number"
+18 DO ^DIR
IF $DATA(DTOUT)!($DATA(DUOUT))!(Y="")
QUIT
+19 SET GMPLJUMP=+MATCH(+Y)
+20 QUIT
+21 ;
CK ; Check whether to Stop Processing
+1 ; Called from Exit Action of GMPL EDIT XXX Protocols
+2 if $DATA(GMPQUIT)
SET XQORPOP=1
if '$DATA(GMPQUIT)
SET GMPREBLD=1
KILL GMPQUIT
+3 IF $DATA(DTOUT)!($GET(VALMBCK)="Q")
SET VALMBCK="Q"
QUIT
+4 SET VALMBCK="R"
SET VALMSG=$$MSG
+5 QUIT