CRHD2 ; CAIRO/CLC - GET DATA ITEMS FOR CHANGEOVER LIST ;08-Apr-2008 08:03;CLC ;;1.0;CRHD;****;Jan 28, 2008;Build 19 ;================================================================= CODESTS(CRHDRTN,CRHDSTR) ;CODE STATUS -using orders, try to find and orderable item for DNR, if not found look for a text order ; by the name of DNRTITLE, title also set up as a p ;DFN - patient internal entry number to Patient file ;DNRTITLE - DNR order title if not defined by a parameter ;DIVISION - the division user logged into ;LEN - length of text to return for each line, default:18 ;DTFLG - return the start date and stop date for order default:yes ; N CRHDDFN,CRHDDNRT,CRHDDIV,CRHDLEN,CRHDX,CRHDY,CRHDCT,CRHDMDNR,CRHDQQFG N CRHDDTFG,CRHDOCT,CRHDSR,CRHDO,CRHDT,CRHDQ,CRHDQ1,CRHDQX,CRHDTMP,CRHDQY,CRHDFLG K CRHDRTN S CRHDDFN=+CRHDSTR S CRHDDNRT=$P(CRHDSTR,U,2) S CRHDDIV=$P(CRHDSTR,U,3) S CRHDLEN=$P(CRHDSTR,U,4) I 'CRHDLEN S CRHDLEN=18 S CRHDDTFG=$P(CRHDSTR,U,5) I CRHDDTFG="" S CRHDDTFG=1 S CRHDMDNR=+$P(CRHDSTR,U,6) D ENT^CRHDDR(.CRHDO,CRHDDFN,.CRHDDNRT,.CRHDDIV,CRHDMDNR) D ENT^CRHDDNR(.CRHDT,CRHDDFN,.CRHDDNRT,.CRHDDIV,CRHDMDNR) S CRHDQ=0 F S CRHDQ=$O(CRHDO(CRHDQ)) Q:'CRHDQ I $P(CRHDO(CRHDQ),"~",1)&(CRHDO(CRHDQ)["~") S CRHDTMP($P(CRHDO(CRHDQ),"~",1),$P(CRHDO(CRHDQ),"~",2))="CRHDO^"_CRHDQ S CRHDQ=0 F S CRHDQ=$O(CRHDT(CRHDQ)) Q:'CRHDQ I $P(CRHDT(CRHDQ),"~",1)&(CRHDT(CRHDQ)["~") S CRHDTMP($P(CRHDT(CRHDQ),"~",1),$P(CRHDT(CRHDQ),"~",2))="CRHDT^"_CRHDQ S (CRHDCT,CRHDQQFG)=0 S CRHDQ=0 F CRHDI=1:1 S CRHDQ=$O(CRHDTMP(CRHDQ)) Q:'CRHDQ!(CRHDQQFG) S CRHDQ1=0 F S CRHDQ1=$O(CRHDTMP(CRHDQ,CRHDQ1)) Q:'CRHDQ1 D .S CRHDQFLG=0 .I 'CRHDMDNR S CRHDQQFG=1 .S CRHDQX=$P(CRHDTMP(CRHDQ,CRHDQ1),"^",1),CRHDQY=$P(CRHDTMP(CRHDQ,CRHDQ1),"^",2) .S CRHDQ2=CRHDQY-1,CRHDQFLG=0 F S CRHDQ2=$O(@CRHDQX@(CRHDQ2)) Q:'CRHDQ2!(CRHDQFLG) D ..I (CRHDQ2'=CRHDQY)&(@CRHDQX@(CRHDQ2)["~") S CRHDQFLG=1 S:('CRHDMDNR)&(CRHDI>1) CRHDQQFG=1 Q ..I (CRHDQ2'=CRHDQY)&(@CRHDQX@(CRHDQ2)["~") S CRHDQFLG=1 Q ..S CRHDCT=CRHDCT+1 ..I @CRHDQX@(CRHDQ2)["~" S CRHDRTN(CRHDCT)=$P(@CRHDQX@(CRHDQ2),"~",3) ..E S CRHDRTN(CRHDCT)=@CRHDQX@(CRHDQ2) I $D(CRHDRTN) D .S CRHDX=0,CRHDCT=1 .F S CRHDX=$O(CRHDRTN(CRHDX)) Q:'CRHDX D ..I $L(CRHDRTN(CRHDX))>CRHDLEN D ...F Q:$L(CRHDRTN(CRHDX))=0 S CRHDCT=CRHDCT+1,CRHDY(CRHDCT)=$E(CRHDRTN(CRHDX),1,CRHDLEN),CRHDRTN(CRHDX)=$E(CRHDRTN(CRHDX),CRHDLEN+1,9999) ..E D ...I CRHDRTN(CRHDX)["Stop Date" S CRHDY(CRHDCT)=CRHDY(CRHDCT)_" "_CRHDRTN(CRHDX) D ....I $L(CRHDY(CRHDCT))>CRHDLEN S CRHDOCT=CRHDCT,CRHDSR=CRHDY(CRHDCT) F Q:$L(CRHDSR)=0 S CRHDY(CRHDCT)=$E(CRHDSR,1,CRHDLEN),CRHDSR=$E(CRHDSR,CRHDLEN+1,9999),CRHDOCT=CRHDOCT+1 ...E S CRHDCT=CRHDCT+1,CRHDY(CRHDCT)=CRHDRTN(CRHDX) K CRHDRTN M CRHDRTN=CRHDY I CRHDCT>1 S CRHDRTN(1)=CRHDCT-1 I $G(CRHDRTN(2))="" S CRHDRTN(1)=1,CRHDRTN(2)="Code Status Not Found" Q NODETAM(CRHDY,CRHDDFN,CRHDCAT) ;GET ACTIVE MEDS WITHOUT THE DETAILS, FOR ACTIVE MEDS WITH DETAILS USE CRHDAM ;CRHDCAT :I - inpatient ; O - outpatient N CRHDP1,CRHDP2,CRHDPP1,CRHDPP2,CRHDCT,CRHDN2,CRHDN3,CRHDRTN,CRHDSORT N CRHDN S CRHDCT=0 D COVER^ORWPS(.CRHDRTN,CRHDDFN) I '$D(CRHDRTN) Q S CRHDN=0 F S CRHDN=$O(CRHDRTN(CRHDN)) Q:'CRHDN D .S CRHDP1=$P(CRHDRTN(CRHDN),"^",1) .S CRHDPP1=$P(CRHDP1,";",1) .S CRHDPP2=$P(CRHDP1,";",2) .I CRHDCAT="O"&(CRHDPP2="O") D SORT .I CRHDCAT="I"&(CRHDPP2="I") D SORT D OUTPUT Q Q SORT ; I $P(CRHDRTN(CRHDN),"^",4)'["ACTIVE" Q S CRHDSORT($E(CRHDPP1,$L(CRHDPP1)),$P(CRHDRTN(CRHDN),"^",2),CRHDPP1)="" Q OUTPUT ; S CRHDN="" F S CRHDN=$O(CRHDSORT(CRHDN)) Q:CRHDN="" D .S CRHDN2="" F S CRHDN2=$O(CRHDSORT(CRHDN,CRHDN2)) Q:CRHDN2="" D ..S CRHDN3="" F S CRHDN3=$O(CRHDSORT(CRHDN,CRHDN2,CRHDN3)) Q:CRHDN3="" D ...S CRHDCT=CRHDCT+1 ...I CRHDCAT="O"&(CRHDN="N") S CRHDY(CRHDN,CRHDCT)="NON-VA "_CRHDN2 Q ...S CRHDY(CRHDN,CRHDCT)=CRHDN2 S CRHDY(0)=CRHDCT_"^"_CRHDCAT_$S(CRHDCAT="O":"UT",1:"N")_"PATIENT" Q TEMPDATA(CRHDRTN,CRHDFLDN,CRHDUSER,CRHDDFN,CRHDTXT) ;TEMPORARY DATA, DATA ONLY USE FOR A SHORT TIME FRAME ;CRHDFLD - TEMP FIELD NAME ;CRHDUSER - AUTHOR OF THE NOTE ;if fld already has the author then this is 'WHO LAST EDITED' ;CRHDDFN - Patient ;TEXT - Text to be stored N CRHDFDA,CRHDOUT,CRHDERR,CRHDFN,CRHDUPZ,CRHDUPZZ,CRHDPZZZ K CRHDRTN,CRHDUPY S CRHDFLDN=$$UP^XLFSTR(CRHDFLDN) S CRHDUPY=$$CHK(CRHDFLDN,CRHDUSER,CRHDDFN) S CRHDUPZ=$P(CRHDUPY,"^",2) I CRHDUPZ="+1," S CRHDUPZZ="?+1,",CRHDPZZZ="?+2," E S CRHDUPZZ="?+2," I CRHDUPZ="+1," S CRHDUPZ=CRHDUPZZ,CRHDUPZZ=CRHDPZZZ D NEW E D UPDATE(CRHDFLDN,CRHDUSER,CRHDDFN,.CRHDTXT) I $D(CRHDERR) D Q .S ^CRHDER($$NOW^XLFDT,"ERROR-UPDATING DATA")=CRHDFLDN_U_CRHDUSER_U_CRHDDFN .M ^CRHDER($$NOW^XLFDT,"ERROR-UPDATING DATA")=CRHDTXT Q .K CRHDERR,CRHDOUT,CRHDFDA .S CRHDRTN(1)=0_"^ERROR SAVING DATA..." E S CRHDRTN(1)=1_"^SAVE SUCCESSFUL..." Q NEW S CRHDFDA(183.21,CRHDUPZZ_CRHDUPZ,1)=CRHDUSER S CRHDFDA(183.21,CRHDUPZZ_CRHDUPZ,2)=$$NOW^XLFDT S CRHDFDA(183.21,CRHDUPZZ_CRHDUPZ,5)=0 D UPDATE(CRHDFLDN,CRHDUSER,CRHDDFN,.CRHDTXT) I $D(CRHDERR) D .S ^CRHDER($$NOW^XLFDT,"ERROR-ADDING DATA")=CRHDFLDN_U_CRHDUSER_U_CRHDDFN .M ^CRHDER($$NOW^XLFDT,"ERROR-ADDING DATA")=CRHDTXT Q .K CRHDERR,CRHDOUT,CRHDFDA Q UPDATE(CRHDFLD,CRHDUSER,CRHDDFN,CRHDTXT) ; ;SEE NEWDATA S CRHDFDA(183.2,"?+1,",.01)=CRHDFLD S CRHDFDA(183.21,CRHDUPZZ_CRHDUPZ,.01)=CRHDDFN S CRHDFDA(183.21,CRHDUPZZ_CRHDUPZ,3)=CRHDUSER S CRHDFDA(183.21,CRHDUPZZ_CRHDUPZ,4)=$$NOW^XLFDT D UPDATE^DIE("","CRHDFDA","CRHDOUT","CRHDERR") S CRHDIEN=$G(CRHDOUT(1)),CRHDMIEN=$G(CRHDOUT(2)) L +^CRHD(183.2,CRHDIEN,1,CRHDMIEN):1 I '$T Q I '$D(CRHDERR) D STORETXT(CRHDIEN,CRHDMIEN,.CRHDTXT) L -^CRHD(183.2,CRHDIEN,1,CRHDMIEN) Q STORETXT(CRHDIEN,CRHDMIEN,CRHDTARY) ;store text to file N CRHDTRG,CRHDFG,CRHDX,CRHDCT,CRHDLINE Q:'CRHDIEN&('CRHDMIEN) S CRHDTRG="CRHDTARY" Q:'$D(@CRHDTRG) ;D SAVEOLD(CRHDIEN,CRHDMIEN) K ^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"TEXT") S ^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"TEXT",0)="^^^^"_$$DT^XLFDT S CRHDX=0 F CRHDLINE=0:1 S CRHDX=$O(@CRHDTRG@(CRHDX)) Q:'CRHDX S (CRHDFG,CRHDX,CRHDCT)=0 F S CRHDX=$O(@CRHDTRG@(CRHDX)) Q:'CRHDX!(CRHDFG) D .I $D(@CRHDTRG@(CRHDX,0)) D Q ..M ^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"TEXT")=@CRHDTRG ..S $P(^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"TEXT",0),"^",3,4)=CRHDLINE_"^"_CRHDLINE ..S CRHDFG=1 .I $G(@CRHDTRG@(CRHDX))'="" D ..S CRHDCT=CRHDCT+1 ..S ^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"TEXT",CRHDCT,0)=@CRHDTRG@(CRHDX) ..S $P(^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"TEXT",0),"^",3,4)=CRHDCT_"^"_CRHDCT Q SAVEOLD(CRHDIEN,CRHDMIEN) ; I $D(^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"TEXT")) D .K ^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"ZOLD_TEXT") .M ^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"ZOLD_TEXT")=^CRHD(183.2,CRHDIEN,1,CRHDMIEN,"TEXT") Q CHK(CRHDFLDN,CRHDUSER,CRHDDFN) ; N CRHDFLG,CRHDX,CRHDP ;FLG = 1 if record already exist S CRHDFLG=0 S CRHDFN=183.2 S CRHDFLD=$O(^CRHD(CRHDFN,"B",CRHDFLDN,0)) I $D(^CRHD(CRHDFN,"C",+CRHDDFN,+CRHDFLD)) D .S:CRHDFLD CRHDFLG=1 I CRHDFLG S CRHDFLG=CRHDFLG_"^"_CRHDFLD_"," E S CRHDFLG=CRHDFLG_"^"_"+1," Q CRHDFLG XREF(CRHDIEN,CRHDMIEN) ;SET THE XREF FOR SPECIALTY AND TEAM N CRHDTM,CRHDTSP,CRHDAUTH,CRHDPAT S CRHDAUTH=$P($G(^CRHD(183.2,CRHDIEN,1,CRHDMIEN,0)),"^",2) Q:'CRHDAUTH S CRHDPAT=$P($G(^CRHD(183.2,CRHDIEN,1,CRHDMIEN,0)),"^",1) ;do not set up reference if a private note Q:+$P($G(^CRHD(183.2,CRHDIEN,1,CRHDMIEN,0)),"^",6) S CRHDTM=$$GET^XPAR("USR.`"_CRHDAUTH,"ORLP DEFAULT TEAM",1,"I") S CRHDTSP=$$GET^XPAR("USR.`"_CRHDAUTH,"ORLP DEFAULT SPECIALTY",1,"I") S:+CRHDTM ^CRHD(183.2,"AC","TM",CRHDTM,CRHDPAT,CRHDIEN,CRHDMIEN)="" S:+CRHDTSP ^CRHD(183.2,"AC","TSP",CRHDTSP,CRHDPAT,CRHDIEN,CRHDMIEN)="" Q KILXREF(CRHDIEN,CRHDMIEN) ;KILL XREF FOR SPECIALTY AND TEAM N CRHDTM,CRHDTSP,CRHDAUTH,CRHDPAT S CRHDAUTH=$P($G(^CRHD(183.2,CRHDIEN,1,CRHDMIEN,0)),"^",2) Q:'CRHDAUTH S CRHDPAT=$P($G(^CRHD(183.2,CRHDIEN,1,CRHDMIEN,0)),"^",1) S CRHDTM=$$GET^XPAR("USR.`"_CRHDAUTH,"ORLP DEFAULT TEAM",1,"I") S CRHDTSP=$$GET^XPAR("USR.`"_CRHDAUTH,"ORLP DEFAULT SPECIALTY",1,"I") K:+CRHDTM ^CRHD(183.2,"AC","TM",CRHDTM,CRHDPAT,CRHDIEN,CRHDMIEN) K:+CRHDTSP ^CRHD(183.2,"AC","TSP",CRHDTSP,CRHDPAT,CRHDIEN,CRHDMIEN) Q ONOFFPRV(CRHDPRIV,CRHDIEN,CRHDMIEN) ;ON/OFF PRIVATE NOTE I 'CRHDPRIV D XREF(CRHDIEN,CRHDMIEN) I +CRHDPRIV D KILXREF(CRHDIEN,CRHDMIEN) Q LOCK(CRHDRTN,CRHDDFN,CRHDFLDM) ; N CRHDIEN,CRHDMIEN S CRHDRTN=0 S CRHDFLDM=$$UP^XLFSTR(CRHDFLDM) S CRHDIEN=$O(^CRHD(183.2,"B",CRHDFLDM,0)) S CRHDMIEN=$O(^CRHD(183.2,"C",+CRHDDFN,+CRHDIEN,0)) Q:'CRHDMIEN L +^CRHD(183.2,CRHDIEN,1,CRHDMIEN):10 I '$T S CRHDRTN=1 ;_"^0^Another user is editing this task" L -^CRHD(183.2,CRHDIEN,1,CRHDMIEN) Q