- PXRMGECJ ;SLC/AGP,JVS - Restore Func ;7/14/05 10:42
- ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
- ;Restore GEC Referral to open status
- Q
- ;
- EN ;Starting point
- N DIR,DA,DFN,STATUS,NAME,STAMP,CNT,FIRST,SECOND,DIRUT
- K ^TMP("PXRMGEC_CK1",$J),DIR(0),^TMP("PXRMGEC_CK2",$J)
- D PAT
- I $D(DIRUT) Q
- ;
- DISP ;Display referrals and data
- N LOC,DIV,SSN,AGE
- S NAME=$P(^DPT(DFN,0),"^",1)
- S LOC=$S($D(^DPT(DFN,.1)):"INPATIENT",1:"OUTPATIENT")
- S DIV=$$GET1^DIQ(2,DFN,.19) I DIV="" S DIV="Unknown"
- S SSN=$$GET1^DIQ(2,DFN,.09)
- S AGE=$$GET1^DIQ(2,DFN,.033)
- S STATUS=$$CK1(DFN)_"^"_$$CK2(DFN)
- ;
- ;
- W !,"================================================================================"
- W !,NAME," (",SSN,") "," AGE:",AGE," ",LOC," ",DIV," Division",!
- W !,?5,"Current Open Referral::"
- I +STATUS=0 W !,?10,"< N O N E >"
- I +STATUS=1 D
- .N I,DATE,DIALOG,USER,STAMP
- .S I=0 F S I=$O(^TMP("PXRMGEC_CK1",$J,I)) Q:I="" D
- ..S J=0 F S J=$O(^TMP("PXRMGEC_CK1",$J,I,J)) Q:J="" D
- ...S STAMP=$P(^TMP("PXRMGEC_CK1",$J,I,J),"^",2) I STAMP'="" S STAMP=$$FMTE^XLFDT(STAMP,"1P")
- ...S DIALOG=$$DIALOG($P(^TMP("PXRMGEC_CK1",$J,I,J),"^",3))
- ...S USER=$P(^TMP("PXRMGEC_CK1",$J,I,J),"^",5) I USER'="" S USER=$P(^VA(200,USER,0),"^",1)
- ...S DATE=$P(^TMP("PXRMGEC_CK1",$J,I,J),"^",6) I DATE'="" S DATE=$$FMTE^XLFDT(DATE,"1P")
- ...I J=1 W !,$O(^TMP("PXRMGEC_CK1",$J,0)),?10,STAMP_" (start date)"
- ...W !,?15,DIALOG,?35," by: ",USER," ",?62," On: ",DATE
- ;
- W !!,?5,"Historical Referral(s)::"
- I $P(STATUS,"^",2)=0 D
- .W !,?10,"< N O N E >"
- I $P(STATUS,"^",2)=1 D
- .N J,K,STAMP,STAMPB,DIALOG,USER,DATE,I,DAX,COUNT
- .S STAMPB=1,J=1,K=0,COUNT=$S($D(LOOP):5,1:0)
- .S I=1 F S I=$O(^TMP("PXRMGEC_CK2",$J,I)),COUNT=COUNT+1 Q:I="" Q:COUNT=3 D
- ..W !
- ..S K=0 F S K=$O(^TMP("PXRMGEC_CK2",$J,I,K)) Q:K="" D
- ...S DAX=0 F S DAX=$O(^TMP("PXRMGEC_CK2",$J,I,K,DAX)) Q:DAX="" D
- ....S STAMP=$P(^TMP("PXRMGEC_CK2",$J,I,K,DAX),"^",2)
- ....I STAMP'=STAMPB S J=J+1,CNT=I
- ....S CNTA=$O(^TMP("PXRMGEC_CK2",$J,0)),CNTB=CNTA+2
- ....S STAMP=$$FMTE^XLFDT(STAMP,"1P")
- ....S DIALOG=$$DIALOG($P(^TMP("PXRMGEC_CK2",$J,I,K,DAX),"^",3))
- ....S USER=$P(^TMP("PXRMGEC_CK2",$J,I,K,DAX),"^",5) I USER'="" S USER=$P(^VA(200,USER,0),"^",1)
- ....S DATE=$P(^TMP("PXRMGEC_CK2",$J,I,K,DAX),"^",6) I DATE'="" S DATE=$$FMTE^XLFDT(DATE,"1P")
- ....I STAMP'=STAMPB W !,I,?10,STAMP_" (start date)"
- ....W !,?15,DIALOG," ",?35," by: ",USER," ",?62," On: ",DATE
- ....S STAMPB=STAMP
- ;
- ASK ;Ask the User what they want to do.
- N DIR,Y,X,MODE,ROPNNUM
- K DIR(0),DIR("A")
- I STATUS="0^1",CNT=2,'$D(LOOP) S DIR(0)="S^R:Re-open 1 Referral;V:View All Historical Referrals;P:New Patient;Q:Quit"
- I STATUS="0^1",CNT=2,$D(LOOP) S DIR(0)="S^R:Re-open 1 Referral;D:Display Last 2 Referrals Only;P:New Patient;Q:Quit"
- I STATUS="0^1",CNT>2,'$D(LOOP) S DIR(0)="S^R:Re-open 1 Referral;M:Merge 2 Referrals;V:View All Historical Referrals;P:New Patient;Q:Quit"
- I STATUS="0^1",CNT>2,$D(LOOP) S DIR(0)="S^R:Re-open 1 Referral;M:Merge 2 Referrals;D:Display Last 2 Referrals Only;P:New Patient;Q:Quit"
- I STATUS="1^1",'$D(LOOP) S DIR(0)="S^C:CLOSE Open Referral;M:Merge 2 Referrals;V:View ALL Historical Referrals;P:New Patient;Q:Quit"
- I STATUS="1^1",$D(LOOP) S DIR(0)="S^C:CLOSE Open Referral;M:Merge 2 Referrals;D:Display Last 2 Referrals Only;P:New Patient;Q:Quit"
- I STATUS="1^0"!(STATUS="0^0") S DIR(0)="S^C:CLOSE Open Referral;P:New Patient;Q:Quit"
- D ^DIR S MODE=Y W !
- I MODE="R" D
- .S DIR(0)="NO^"_$O(^TMP("PXRMGEC_CK2",$J,0))_":"_CNT_":0"
- .S DIR("A")="Enter the number on the Left side of the screen next to the Historical Referral that you want to re-open."
- .D ^DIR
- .S ROPNNUM=Y
- I MODE="M" D I $D(DIRUT) G ASK
- MRG .I STATUS="0^1" S DIR(0)="NO^"_CNTA_":"_$S($D(LOOP):CNT,1:CNTB)_":0"
- .I STATUS="1^1" S DIR(0)="NO^"_$O(^TMP("PXRMGEC_CK1",$J,0))_":"_CNT_":0"
- .S DIR("A")="First Referral Record"
- .D ^DIR Q:$D(DIRUT) S FIRST=Y D Q:$D(DIRUT)
- ..I STATUS="0^1" S DIR(0)="NO^"_CNTA_":"_$S($D(LOOP):CNT,1:CNTB)_":0"
- ..I STATUS="1^1" S DIR(0)="NO^"_$O(^TMP("PXRMGEC_CK1",$J,0))_":"_CNT_":0"
- ..S DIR("A")="Second Referral Record"
- ..D ^DIR Q:$D(DIRUT) S SECOND=Y
- .I +FIRST>0,+SECOND>0,FIRST=SECOND W !,"Try again.." G MRG
- I MODE="Q" D EXIT
- I MODE="R" D REOPEN^PXRMGECL(ROPNNUM) G DISP
- I MODE="M" D MERGE(FIRST,SECOND,DFN) G DISP
- I MODE="V" S LOOP=1 G DISP
- I MODE="D" K LOOP G DISP
- I MODE="P" G EN
- I MODE="C" D FINISHED^PXRMGECU(DFN,1) G DISP
- Q
- ;
- MERGE(FIR,SEC,DFN) ;Merge 2 Referrals
- Q:FIR=""
- Q:SEC=""
- Q:DFN=""
- N DATE1,DATE2,OLDDT,OLD,SRCHDT
- W !,"DO MERGE",!
- ;Get Date to use for setting and to be changed.
- I $D(^TMP("PXRMGEC_CK1",$J,FIR,1)) S DATE(FIR)=$P($G(^TMP("PXRMGEC_CK1",$J,FIR,1)),"^",2)
- I $D(^TMP("PXRMGEC_CK1",$J,SEC,1)) S DATE(SEC)=$P($G(^TMP("PXRMGEC_CK1",$J,SEC,1)),"^",2)
- I $D(^TMP("PXRMGEC_CK2",$J,FIR)) D
- .N SUB3,SUBDA
- .S SUB3=$O(^TMP("PXRMGEC_CK2",$J,FIR,0))
- .S SUBDA=$O(^TMP("PXRMGEC_CK2",$J,FIR,SUB3,0))
- .S DATE(FIR)=$P($G(^TMP("PXRMGEC_CK2",$J,FIR,SUB3,SUBDA)),"^",2)
- I $D(^TMP("PXRMGEC_CK2",$J,SEC)) D
- .N SUB3,SUBDA
- .S SUB3=$O(^TMP("PXRMGEC_CK2",$J,SEC,0))
- .S SUBDA=$O(^TMP("PXRMGEC_CK2",$J,SEC,SUB3,0))
- .S DATE(SEC)=$P($G(^TMP("PXRMGEC_CK2",$J,SEC,SUB3,SUBDA)),"^",2)
- S OLD(DATE(FIR))=FIR
- S OLD(DATE(SEC))=SEC
- S OLDDT=$O(OLD(0))
- S SRCHDT=$O(OLD(OLDDT))
- ;
- ;List of Health Factors DA's to change
- N DATE,ARY,GEC,DA,VISIT,ROOT,PKG,SOURCE
- N HF0,HF12,HF801,HF812,ARY1
- S ARY="^AUPNVHF(""AED"","_SRCHDT_","_DFN_")"
- S GEC="" F S GEC=$O(@ARY@(GEC)) Q:GEC="" D
- .S DA=0 F S DA=$O(@ARY@(GEC,DA)) Q:DA="" D
- ..S VISIT=$P($G(^AUPNVHF(DA,0)),"^",3)
- ..S ^TMP("PXRMGECMRG",$J,VISIT,DA,SRCHDT)=""
- ;
- ;Change HF with DATA2PCE
- S I=0
- S ROOT="^TMP(""PXRMGECMRGPCE"",$J)"
- S SOURCE="Geriatric Extended Care Merge"
- ;
- S ARY1="^TMP(""PXRMGECMRG"",$J)"
- S VISIT=0 F S VISIT=$O(@ARY1@(VISIT)) Q:VISIT="" D
- .S DA=0 F S DA=$O(@ARY1@(VISIT,DA)) Q:DA="" D
- ..I $D(^AUPNVHF(DA)) D
- ...S HF0=$G(^AUPNVHF(DA,0))
- ...S HF12=$G(^AUPNVHF(DA,12))
- ...S HF812=$G(^AUPNVHF(DA,812))
- ...;
- ...S PKG=$P(HF812,"^",2)
- ...S SOURCE=$P(HF812,"^",3)
- ...S USER=DUZ
- ...S @ROOT@("HEALTH FACTOR",DA,"HEALTH FACTOR")=$P(HF0,"^",1)
- ...S @ROOT@("HEALTH FACTOR",DA,"LEVEL/SEVERITY")=$P(HF0,"^",4)
- ...S @ROOT@("HEALTH FACTOR",DA,"ENC PROVIDER")=$P(HF12,"^",4)
- ...S @ROOT@("HEALTH FACTOR",DA,"EVENT D/T")=OLDDT
- .I $D(^TMP("PXRMGECMRGPCE",$J)) D
- ..N NOEVT
- ..S NOEVT="PXKNOEVT"
- ..S @NOEVT=1
- ..S OK=$$DATA2PCE^PXAPI(ROOT,PKG,SOURCE,.VISIT,USER,"","","")
- ;
- ;Change 801.55
- N GEC,DA,GECX,GECM
- ;
- S GEC="" F S GEC=$O(^PXRMD(801.55,"AC",DFN,SRCHDT,GEC)) Q:GEC="" D
- .S DA=0 F S DA=$O(^PXRMD(801.55,"AC",DFN,SRCHDT,GEC,DA)) Q:DA="" D
- ..S GECX(1,801.55,DA_",",.02)=OLDDT
- ..D FILE^DIE("","GECX(1)") K GECX
- ..;
- ..I FIR=$O(^TMP("PXRMGEC_CK1",$J,0)) D
- ...;I FIR=1!(SEC=1) D
- ...I '$D(^PXRMD(801.5,"AC",DFN,SRCHDT,GEC)) D
- ....S GECM(1,801.5,"+1,",.01)=$P($G(^PXRMD(801.55,DA,0)),"^",1)
- ....S GECM(1,801.5,"+1,",.02)=$P($G(^PXRMD(801.55,DA,0)),"^",2)
- ....S GECM(1,801.5,"+1,",.03)=$P($G(^PXRMD(801.55,DA,0)),"^",3)
- ....S GECM(1,801.5,"+1,",.04)=$P($G(^PXRMD(801.55,DA,0)),"^",4)
- ....S GECM(1,801.5,"+1,",.05)=$P($G(^PXRMD(801.55,DA,0)),"^",5)
- ....S GECM(1,801.5,"+1,",.06)=$P($G(^PXRMD(801.55,DA,0)),"^",6)
- ....D UPDATE^DIE("","GECM(1)")
- ;
- ;
- ;Change 801.5
- N GEC,DA,GECX
- ;
- S GEC="" F S GEC=$O(^PXRMD(801.5,"AC",DFN,SRCHDT,GEC)) Q:GEC="" D
- .S DA=0 F S DA=$O(^PXRMD(801.5,"AC",DFN,SRCHDT,GEC,DA)) Q:DA="" D
- ..S GECX(1,801.5,DA_",",.02)=OLDDT
- ..D FILE^DIE("","GECX(1)") K GECX
- ;EXIT
- K ^TMP("PXRMGECMRG",$J)
- K ^TMP("PXRMGECMRGPCE",$J)
- Q
- ;
- ;
- PAT ;LOOK UP ALL PATIENTS
- W @IOF,!
- S DIR(0)="801.55,.01"
- D ^DIR
- S DFN=+Y
- K Y,Y(0),Y(0,0)
- Q
- ;
- CK1(DFN) ;Check for current open referral
- Q:DFN'>0
- N STATUS,I,Z
- K ^TMP("PXRMGEC_CK1",$J)
- S STATUS=0,I=1,J=0
- ;S Z=$$CK2(DFN) S I=$O(^TMP("PXRMGEC_CK2",$J,0))-1
- I $D(^PXRMD(801.5,"B",DFN)) D
- .S DA=0 F S DA=$O(^PXRMD(801.5,"B",DFN,DA)) Q:DA="" S J=J+1 D
- ..S ^TMP("PXRMGEC_CK1",$J,I,J)=$G(^PXRMD(801.5,DA,0))
- .S STATUS=1
- Q STATUS
- ;
- CK2(DFN) ;Check for entries in History file 801.55
- Q:DFN'>0
- N STATUS,I,CURRENT,DATE,DIA,DA,J
- K ^TMP("PXRMGEC_CK2",$J)
- S STATUS=0,I=1000,J=0
- I $D(^TMP("PXRMGEC_CK1",$J)) S CURRENT=$P($G(^TMP("PXRMGEC_CK1",$J,$O(^TMP("PXRMGEC_CK1",$J,0)),1)),"^",2)
- I $D(^PXRMD(801.55,"B",DFN)) D
- .S DATE="" F S DATE=$O(^PXRMD(801.55,"AC",DFN,DATE)) Q:DATE="" D
- ..Q:$G(CURRENT)=DATE
- ..S I=I-1
- ..S DIA="" F S DIA=$O(^PXRMD(801.55,"AC",DFN,DATE,DIA)) Q:DIA="" D
- ...S J=J+1
- ...S DA=0 F S DA=$O(^PXRMD(801.55,"AC",DFN,DATE,DIA,DA)) Q:DA="" D
- ....S ^TMP("PXRMGEC_CK2",$J,I,J,DA)=$G(^PXRMD(801.55,DA,0))
- ....S STATUS=1
- ;RENUMBER ARRAY
- I $D(^TMP("PXRMGEC_CK2",$J)) D
- .N OLD,NEW,J,DA,DATA
- .S NEW=1
- .S OLD=0 F S OLD=$O(^TMP("PXRMGEC_CK2",$J,OLD)) Q:OLD="" D
- ..S NEW=NEW+1
- ..S J=0 F S J=$O(^TMP("PXRMGEC_CK2",$J,OLD,J)) Q:J="" D
- ...S DA=0 F S DA=$O(^TMP("PXRMGEC_CK2",$J,OLD,J,DA)) Q:DA="" D
- ....S DATA=$G(^TMP("PXRMGEC_CK2",$J,OLD,J,DA))
- ....S ^TMP("PXRMGEC_CK2",$J,NEW,J,DA)=DATA
- ....K ^TMP("PXRMGEC_CK2",$J,OLD,J,DA)
- Q STATUS
- ;
- DIALOG(DIA) ;Returns expanded name of dialog
- N NAME
- S NAME=""
- I DIA="GEC1" S NAME="Social Services"
- I DIA="GEC2" S NAME="Nursing Assessment"
- I DIA="GEC3" S NAME="Care Recommendation"
- I DIA="GECF" S NAME="Care Coordination"
- Q NAME
- ;
- EXIT ;CLEAN UP
- K CK2,LOOP,X,CNTA,CNTB,ROPNNUM
- K ^TMP("PXRMGEC_CK1",$J),^TMP("PXRMGEC_CK2",$J)
- Q
- ;
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPXRMGECJ 9601 printed Apr 23, 2025@18:00:08 Page 2
- PXRMGECJ ;SLC/AGP,JVS - Restore Func ;7/14/05 10:42
- +1 ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
- +2 ;Restore GEC Referral to open status
- +3 QUIT
- +4 ;
- EN ;Starting point
- +1 NEW DIR,DA,DFN,STATUS,NAME,STAMP,CNT,FIRST,SECOND,DIRUT
- +2 KILL ^TMP("PXRMGEC_CK1",$JOB),DIR(0),^TMP("PXRMGEC_CK2",$JOB)
- +3 DO PAT
- +4 IF $DATA(DIRUT)
- QUIT
- +5 ;
- DISP ;Display referrals and data
- +1 NEW LOC,DIV,SSN,AGE
- +2 SET NAME=$PIECE(^DPT(DFN,0),"^",1)
- +3 SET LOC=$SELECT($DATA(^DPT(DFN,.1)):"INPATIENT",1:"OUTPATIENT")
- +4 SET DIV=$$GET1^DIQ(2,DFN,.19)
- IF DIV=""
- SET DIV="Unknown"
- +5 SET SSN=$$GET1^DIQ(2,DFN,.09)
- +6 SET AGE=$$GET1^DIQ(2,DFN,.033)
- +7 SET STATUS=$$CK1(DFN)_"^"_$$CK2(DFN)
- +8 ;
- +9 ;
- +10 WRITE !,"================================================================================"
- +11 WRITE !,NAME," (",SSN,") "," AGE:",AGE," ",LOC," ",DIV," Division",!
- +12 WRITE !,?5,"Current Open Referral::"
- +13 IF +STATUS=0
- WRITE !,?10,"< N O N E >"
- +14 IF +STATUS=1
- Begin DoDot:1
- +15 NEW I,DATE,DIALOG,USER,STAMP
- +16 SET I=0
- FOR
- SET I=$ORDER(^TMP("PXRMGEC_CK1",$JOB,I))
- if I=""
- QUIT
- Begin DoDot:2
- +17 SET J=0
- FOR
- SET J=$ORDER(^TMP("PXRMGEC_CK1",$JOB,I,J))
- if J=""
- QUIT
- Begin DoDot:3
- +18 SET STAMP=$PIECE(^TMP("PXRMGEC_CK1",$JOB,I,J),"^",2)
- IF STAMP'=""
- SET STAMP=$$FMTE^XLFDT(STAMP,"1P")
- +19 SET DIALOG=$$DIALOG($PIECE(^TMP("PXRMGEC_CK1",$JOB,I,J),"^",3))
- +20 SET USER=$PIECE(^TMP("PXRMGEC_CK1",$JOB,I,J),"^",5)
- IF USER'=""
- SET USER=$PIECE(^VA(200,USER,0),"^",1)
- +21 SET DATE=$PIECE(^TMP("PXRMGEC_CK1",$JOB,I,J),"^",6)
- IF DATE'=""
- SET DATE=$$FMTE^XLFDT(DATE,"1P")
- +22 IF J=1
- WRITE !,$ORDER(^TMP("PXRMGEC_CK1",$JOB,0)),?10,STAMP_" (start date)"
- +23 WRITE !,?15,DIALOG,?35," by: ",USER," ",?62," On: ",DATE
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +24 ;
- +25 WRITE !!,?5,"Historical Referral(s)::"
- +26 IF $PIECE(STATUS,"^",2)=0
- Begin DoDot:1
- +27 WRITE !,?10,"< N O N E >"
- End DoDot:1
- +28 IF $PIECE(STATUS,"^",2)=1
- Begin DoDot:1
- +29 NEW J,K,STAMP,STAMPB,DIALOG,USER,DATE,I,DAX,COUNT
- +30 SET STAMPB=1
- SET J=1
- SET K=0
- SET COUNT=$SELECT($DATA(LOOP):5,1:0)
- +31 SET I=1
- FOR
- SET I=$ORDER(^TMP("PXRMGEC_CK2",$JOB,I))
- SET COUNT=COUNT+1
- if I=""
- QUIT
- if COUNT=3
- QUIT
- Begin DoDot:2
- +32 WRITE !
- +33 SET K=0
- FOR
- SET K=$ORDER(^TMP("PXRMGEC_CK2",$JOB,I,K))
- if K=""
- QUIT
- Begin DoDot:3
- +34 SET DAX=0
- FOR
- SET DAX=$ORDER(^TMP("PXRMGEC_CK2",$JOB,I,K,DAX))
- if DAX=""
- QUIT
- Begin DoDot:4
- +35 SET STAMP=$PIECE(^TMP("PXRMGEC_CK2",$JOB,I,K,DAX),"^",2)
- +36 IF STAMP'=STAMPB
- SET J=J+1
- SET CNT=I
- +37 SET CNTA=$ORDER(^TMP("PXRMGEC_CK2",$JOB,0))
- SET CNTB=CNTA+2
- +38 SET STAMP=$$FMTE^XLFDT(STAMP,"1P")
- +39 SET DIALOG=$$DIALOG($PIECE(^TMP("PXRMGEC_CK2",$JOB,I,K,DAX),"^",3))
- +40 SET USER=$PIECE(^TMP("PXRMGEC_CK2",$JOB,I,K,DAX),"^",5)
- IF USER'=""
- SET USER=$PIECE(^VA(200,USER,0),"^",1)
- +41 SET DATE=$PIECE(^TMP("PXRMGEC_CK2",$JOB,I,K,DAX),"^",6)
- IF DATE'=""
- SET DATE=$$FMTE^XLFDT(DATE,"1P")
- +42 IF STAMP'=STAMPB
- WRITE !,I,?10,STAMP_" (start date)"
- +43 WRITE !,?15,DIALOG," ",?35," by: ",USER," ",?62," On: ",DATE
- +44 SET STAMPB=STAMP
- End DoDot:4
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +45 ;
- ASK ;Ask the User what they want to do.
- +1 NEW DIR,Y,X,MODE,ROPNNUM
- +2 KILL DIR(0),DIR("A")
- +3 IF STATUS="0^1"
- IF CNT=2
- IF '$DATA(LOOP)
- SET DIR(0)="S^R:Re-open 1 Referral;V:View All Historical Referrals;P:New Patient;Q:Quit"
- +4 IF STATUS="0^1"
- IF CNT=2
- IF $DATA(LOOP)
- SET DIR(0)="S^R:Re-open 1 Referral;D:Display Last 2 Referrals Only;P:New Patient;Q:Quit"
- +5 IF STATUS="0^1"
- IF CNT>2
- IF '$DATA(LOOP)
- SET DIR(0)="S^R:Re-open 1 Referral;M:Merge 2 Referrals;V:View All Historical Referrals;P:New Patient;Q:Quit"
- +6 IF STATUS="0^1"
- IF CNT>2
- IF $DATA(LOOP)
- SET DIR(0)="S^R:Re-open 1 Referral;M:Merge 2 Referrals;D:Display Last 2 Referrals Only;P:New Patient;Q:Quit"
- +7 IF STATUS="1^1"
- IF '$DATA(LOOP)
- SET DIR(0)="S^C:CLOSE Open Referral;M:Merge 2 Referrals;V:View ALL Historical Referrals;P:New Patient;Q:Quit"
- +8 IF STATUS="1^1"
- IF $DATA(LOOP)
- SET DIR(0)="S^C:CLOSE Open Referral;M:Merge 2 Referrals;D:Display Last 2 Referrals Only;P:New Patient;Q:Quit"
- +9 IF STATUS="1^0"!(STATUS="0^0")
- SET DIR(0)="S^C:CLOSE Open Referral;P:New Patient;Q:Quit"
- +10 DO ^DIR
- SET MODE=Y
- WRITE !
- +11 IF MODE="R"
- Begin DoDot:1
- +12 SET DIR(0)="NO^"_$ORDER(^TMP("PXRMGEC_CK2",$JOB,0))_":"_CNT_":0"
- +13 SET DIR("A")="Enter the number on the Left side of the screen next to the Historical Referral that you want to re-open."
- +14 DO ^DIR
- +15 SET ROPNNUM=Y
- End DoDot:1
- +16 IF MODE="M"
- Begin DoDot:1
- MRG IF STATUS="0^1"
- SET DIR(0)="NO^"_CNTA_":"_$SELECT($DATA(LOOP):CNT,1:CNTB)_":0"
- +1 IF STATUS="1^1"
- SET DIR(0)="NO^"_$ORDER(^TMP("PXRMGEC_CK1",$JOB,0))_":"_CNT_":0"
- +2 SET DIR("A")="First Referral Record"
- +3 DO ^DIR
- if $DATA(DIRUT)
- QUIT
- SET FIRST=Y
- Begin DoDot:2
- +4 IF STATUS="0^1"
- SET DIR(0)="NO^"_CNTA_":"_$SELECT($DATA(LOOP):CNT,1:CNTB)_":0"
- +5 IF STATUS="1^1"
- SET DIR(0)="NO^"_$ORDER(^TMP("PXRMGEC_CK1",$JOB,0))_":"_CNT_":0"
- +6 SET DIR("A")="Second Referral Record"
- +7 DO ^DIR
- if $DATA(DIRUT)
- QUIT
- SET SECOND=Y
- End DoDot:2
- if $DATA(DIRUT)
- QUIT
- +8 IF +FIRST>0
- IF +SECOND>0
- IF FIRST=SECOND
- WRITE !,"Try again.."
- GOTO MRG
- End DoDot:1
- IF $DATA(DIRUT)
- GOTO ASK
- +9 IF MODE="Q"
- DO EXIT
- +10 IF MODE="R"
- DO REOPEN^PXRMGECL(ROPNNUM)
- GOTO DISP
- +11 IF MODE="M"
- DO MERGE(FIRST,SECOND,DFN)
- GOTO DISP
- +12 IF MODE="V"
- SET LOOP=1
- GOTO DISP
- +13 IF MODE="D"
- KILL LOOP
- GOTO DISP
- +14 IF MODE="P"
- GOTO EN
- +15 IF MODE="C"
- DO FINISHED^PXRMGECU(DFN,1)
- GOTO DISP
- +16 QUIT
- +17 ;
- MERGE(FIR,SEC,DFN) ;Merge 2 Referrals
- +1 if FIR=""
- QUIT
- +2 if SEC=""
- QUIT
- +3 if DFN=""
- QUIT
- +4 NEW DATE1,DATE2,OLDDT,OLD,SRCHDT
- +5 WRITE !,"DO MERGE",!
- +6 ;Get Date to use for setting and to be changed.
- +7 IF $DATA(^TMP("PXRMGEC_CK1",$JOB,FIR,1))
- SET DATE(FIR)=$PIECE($GET(^TMP("PXRMGEC_CK1",$JOB,FIR,1)),"^",2)
- +8 IF $DATA(^TMP("PXRMGEC_CK1",$JOB,SEC,1))
- SET DATE(SEC)=$PIECE($GET(^TMP("PXRMGEC_CK1",$JOB,SEC,1)),"^",2)
- +9 IF $DATA(^TMP("PXRMGEC_CK2",$JOB,FIR))
- Begin DoDot:1
- +10 NEW SUB3,SUBDA
- +11 SET SUB3=$ORDER(^TMP("PXRMGEC_CK2",$JOB,FIR,0))
- +12 SET SUBDA=$ORDER(^TMP("PXRMGEC_CK2",$JOB,FIR,SUB3,0))
- +13 SET DATE(FIR)=$PIECE($GET(^TMP("PXRMGEC_CK2",$JOB,FIR,SUB3,SUBDA)),"^",2)
- End DoDot:1
- +14 IF $DATA(^TMP("PXRMGEC_CK2",$JOB,SEC))
- Begin DoDot:1
- +15 NEW SUB3,SUBDA
- +16 SET SUB3=$ORDER(^TMP("PXRMGEC_CK2",$JOB,SEC,0))
- +17 SET SUBDA=$ORDER(^TMP("PXRMGEC_CK2",$JOB,SEC,SUB3,0))
- +18 SET DATE(SEC)=$PIECE($GET(^TMP("PXRMGEC_CK2",$JOB,SEC,SUB3,SUBDA)),"^",2)
- End DoDot:1
- +19 SET OLD(DATE(FIR))=FIR
- +20 SET OLD(DATE(SEC))=SEC
- +21 SET OLDDT=$ORDER(OLD(0))
- +22 SET SRCHDT=$ORDER(OLD(OLDDT))
- +23 ;
- +24 ;List of Health Factors DA's to change
- +25 NEW DATE,ARY,GEC,DA,VISIT,ROOT,PKG,SOURCE
- +26 NEW HF0,HF12,HF801,HF812,ARY1
- +27 SET ARY="^AUPNVHF(""AED"","_SRCHDT_","_DFN_")"
- +28 SET GEC=""
- FOR
- SET GEC=$ORDER(@ARY@(GEC))
- if GEC=""
- QUIT
- Begin DoDot:1
- +29 SET DA=0
- FOR
- SET DA=$ORDER(@ARY@(GEC,DA))
- if DA=""
- QUIT
- Begin DoDot:2
- +30 SET VISIT=$PIECE($GET(^AUPNVHF(DA,0)),"^",3)
- +31 SET ^TMP("PXRMGECMRG",$JOB,VISIT,DA,SRCHDT)=""
- End DoDot:2
- End DoDot:1
- +32 ;
- +33 ;Change HF with DATA2PCE
- +34 SET I=0
- +35 SET ROOT="^TMP(""PXRMGECMRGPCE"",$J)"
- +36 SET SOURCE="Geriatric Extended Care Merge"
- +37 ;
- +38 SET ARY1="^TMP(""PXRMGECMRG"",$J)"
- +39 SET VISIT=0
- FOR
- SET VISIT=$ORDER(@ARY1@(VISIT))
- if VISIT=""
- QUIT
- Begin DoDot:1
- +40 SET DA=0
- FOR
- SET DA=$ORDER(@ARY1@(VISIT,DA))
- if DA=""
- QUIT
- Begin DoDot:2
- +41 IF $DATA(^AUPNVHF(DA))
- Begin DoDot:3
- +42 SET HF0=$GET(^AUPNVHF(DA,0))
- +43 SET HF12=$GET(^AUPNVHF(DA,12))
- +44 SET HF812=$GET(^AUPNVHF(DA,812))
- +45 ;
- +46 SET PKG=$PIECE(HF812,"^",2)
- +47 SET SOURCE=$PIECE(HF812,"^",3)
- +48 SET USER=DUZ
- +49 SET @ROOT@("HEALTH FACTOR",DA,"HEALTH FACTOR")=$PIECE(HF0,"^",1)
- +50 SET @ROOT@("HEALTH FACTOR",DA,"LEVEL/SEVERITY")=$PIECE(HF0,"^",4)
- +51 SET @ROOT@("HEALTH FACTOR",DA,"ENC PROVIDER")=$PIECE(HF12,"^",4)
- +52 SET @ROOT@("HEALTH FACTOR",DA,"EVENT D/T")=OLDDT
- End DoDot:3
- End DoDot:2
- +53 IF $DATA(^TMP("PXRMGECMRGPCE",$JOB))
- Begin DoDot:2
- +54 NEW NOEVT
- +55 SET NOEVT="PXKNOEVT"
- +56 SET @NOEVT=1
- +57 SET OK=$$DATA2PCE^PXAPI(ROOT,PKG,SOURCE,.VISIT,USER,"","","")
- End DoDot:2
- End DoDot:1
- +58 ;
- +59 ;Change 801.55
- +60 NEW GEC,DA,GECX,GECM
- +61 ;
- +62 SET GEC=""
- FOR
- SET GEC=$ORDER(^PXRMD(801.55,"AC",DFN,SRCHDT,GEC))
- if GEC=""
- QUIT
- Begin DoDot:1
- +63 SET DA=0
- FOR
- SET DA=$ORDER(^PXRMD(801.55,"AC",DFN,SRCHDT,GEC,DA))
- if DA=""
- QUIT
- Begin DoDot:2
- +64 SET GECX(1,801.55,DA_",",.02)=OLDDT
- +65 DO FILE^DIE("","GECX(1)")
- KILL GECX
- +66 ;
- +67 IF FIR=$ORDER(^TMP("PXRMGEC_CK1",$JOB,0))
- Begin DoDot:3
- +68 ;I FIR=1!(SEC=1) D
- +69 IF '$DATA(^PXRMD(801.5,"AC",DFN,SRCHDT,GEC))
- Begin DoDot:4
- +70 SET GECM(1,801.5,"+1,",.01)=$PIECE($GET(^PXRMD(801.55,DA,0)),"^",1)
- +71 SET GECM(1,801.5,"+1,",.02)=$PIECE($GET(^PXRMD(801.55,DA,0)),"^",2)
- +72 SET GECM(1,801.5,"+1,",.03)=$PIECE($GET(^PXRMD(801.55,DA,0)),"^",3)
- +73 SET GECM(1,801.5,"+1,",.04)=$PIECE($GET(^PXRMD(801.55,DA,0)),"^",4)
- +74 SET GECM(1,801.5,"+1,",.05)=$PIECE($GET(^PXRMD(801.55,DA,0)),"^",5)
- +75 SET GECM(1,801.5,"+1,",.06)=$PIECE($GET(^PXRMD(801.55,DA,0)),"^",6)
- +76 DO UPDATE^DIE("","GECM(1)")
- End DoDot:4
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +77 ;
- +78 ;
- +79 ;Change 801.5
- +80 NEW GEC,DA,GECX
- +81 ;
- +82 SET GEC=""
- FOR
- SET GEC=$ORDER(^PXRMD(801.5,"AC",DFN,SRCHDT,GEC))
- if GEC=""
- QUIT
- Begin DoDot:1
- +83 SET DA=0
- FOR
- SET DA=$ORDER(^PXRMD(801.5,"AC",DFN,SRCHDT,GEC,DA))
- if DA=""
- QUIT
- Begin DoDot:2
- +84 SET GECX(1,801.5,DA_",",.02)=OLDDT
- +85 DO FILE^DIE("","GECX(1)")
- KILL GECX
- End DoDot:2
- End DoDot:1
- +86 ;EXIT
- +87 KILL ^TMP("PXRMGECMRG",$JOB)
- +88 KILL ^TMP("PXRMGECMRGPCE",$JOB)
- +89 QUIT
- +90 ;
- +91 ;
- PAT ;LOOK UP ALL PATIENTS
- +1 WRITE @IOF,!
- +2 SET DIR(0)="801.55,.01"
- +3 DO ^DIR
- +4 SET DFN=+Y
- +5 KILL Y,Y(0),Y(0,0)
- +6 QUIT
- +7 ;
- CK1(DFN) ;Check for current open referral
- +1 if DFN'>0
- QUIT
- +2 NEW STATUS,I,Z
- +3 KILL ^TMP("PXRMGEC_CK1",$JOB)
- +4 SET STATUS=0
- SET I=1
- SET J=0
- +5 ;S Z=$$CK2(DFN) S I=$O(^TMP("PXRMGEC_CK2",$J,0))-1
- +6 IF $DATA(^PXRMD(801.5,"B",DFN))
- Begin DoDot:1
- +7 SET DA=0
- FOR
- SET DA=$ORDER(^PXRMD(801.5,"B",DFN,DA))
- if DA=""
- QUIT
- SET J=J+1
- Begin DoDot:2
- +8 SET ^TMP("PXRMGEC_CK1",$JOB,I,J)=$GET(^PXRMD(801.5,DA,0))
- End DoDot:2
- +9 SET STATUS=1
- End DoDot:1
- +10 QUIT STATUS
- +11 ;
- CK2(DFN) ;Check for entries in History file 801.55
- +1 if DFN'>0
- QUIT
- +2 NEW STATUS,I,CURRENT,DATE,DIA,DA,J
- +3 KILL ^TMP("PXRMGEC_CK2",$JOB)
- +4 SET STATUS=0
- SET I=1000
- SET J=0
- +5 IF $DATA(^TMP("PXRMGEC_CK1",$JOB))
- SET CURRENT=$PIECE($GET(^TMP("PXRMGEC_CK1",$JOB,$ORDER(^TMP("PXRMGEC_CK1",$JOB,0)),1)),"^",2)
- +6 IF $DATA(^PXRMD(801.55,"B",DFN))
- Begin DoDot:1
- +7 SET DATE=""
- FOR
- SET DATE=$ORDER(^PXRMD(801.55,"AC",DFN,DATE))
- if DATE=""
- QUIT
- Begin DoDot:2
- +8 if $GET(CURRENT)=DATE
- QUIT
- +9 SET I=I-1
- +10 SET DIA=""
- FOR
- SET DIA=$ORDER(^PXRMD(801.55,"AC",DFN,DATE,DIA))
- if DIA=""
- QUIT
- Begin DoDot:3
- +11 SET J=J+1
- +12 SET DA=0
- FOR
- SET DA=$ORDER(^PXRMD(801.55,"AC",DFN,DATE,DIA,DA))
- if DA=""
- QUIT
- Begin DoDot:4
- +13 SET ^TMP("PXRMGEC_CK2",$JOB,I,J,DA)=$GET(^PXRMD(801.55,DA,0))
- +14 SET STATUS=1
- End DoDot:4
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +15 ;RENUMBER ARRAY
- +16 IF $DATA(^TMP("PXRMGEC_CK2",$JOB))
- Begin DoDot:1
- +17 NEW OLD,NEW,J,DA,DATA
- +18 SET NEW=1
- +19 SET OLD=0
- FOR
- SET OLD=$ORDER(^TMP("PXRMGEC_CK2",$JOB,OLD))
- if OLD=""
- QUIT
- Begin DoDot:2
- +20 SET NEW=NEW+1
- +21 SET J=0
- FOR
- SET J=$ORDER(^TMP("PXRMGEC_CK2",$JOB,OLD,J))
- if J=""
- QUIT
- Begin DoDot:3
- +22 SET DA=0
- FOR
- SET DA=$ORDER(^TMP("PXRMGEC_CK2",$JOB,OLD,J,DA))
- if DA=""
- QUIT
- Begin DoDot:4
- +23 SET DATA=$GET(^TMP("PXRMGEC_CK2",$JOB,OLD,J,DA))
- +24 SET ^TMP("PXRMGEC_CK2",$JOB,NEW,J,DA)=DATA
- +25 KILL ^TMP("PXRMGEC_CK2",$JOB,OLD,J,DA)
- End DoDot:4
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +26 QUIT STATUS
- +27 ;
- DIALOG(DIA) ;Returns expanded name of dialog
- +1 NEW NAME
- +2 SET NAME=""
- +3 IF DIA="GEC1"
- SET NAME="Social Services"
- +4 IF DIA="GEC2"
- SET NAME="Nursing Assessment"
- +5 IF DIA="GEC3"
- SET NAME="Care Recommendation"
- +6 IF DIA="GECF"
- SET NAME="Care Coordination"
- +7 QUIT NAME
- +8 ;
- EXIT ;CLEAN UP
- +1 KILL CK2,LOOP,X,CNTA,CNTB,ROPNNUM
- +2 KILL ^TMP("PXRMGEC_CK1",$JOB),^TMP("PXRMGEC_CK2",$JOB)
- +3 QUIT
- +4 ;