| 1 | SDCO0 ;ALB/RMO - Build List Area - Check Out; 11 FEB 1993 10:00 am ; 10/27/99 12:56pm | 
|---|
| 2 | ;;5.3;Scheduling;**20,44,132,180,351**;Aug 13, 1993 | 
|---|
| 3 | ; | 
|---|
| 4 | EN(SDARY,SDOE,SDSTART,SDTOT) ;Entry point Called by Ck Out & Apt Mgr Exp Dis | 
|---|
| 5 | S SDTOT=0 | 
|---|
| 6 | D CL(SDARY,SDOE,SDSTART,.SDTOT) | 
|---|
| 7 | D PR(SDARY,SDOE,SDSTART,.SDTOT) | 
|---|
| 8 | D DX(SDARY,SDOE,SDSTART,.SDTOT) | 
|---|
| 9 | I $P($G(^SCE(+SDOE,0)),"^",8)'=2 D SC(SDARY,SDOE,SDSTART,.SDTOT) | 
|---|
| 10 | Q | 
|---|
| 11 | ; | 
|---|
| 12 | CL(SDARY,SDOE,SDSTART,SDTOT) ;Build classification (Pg: 1  Row: SDSTART-SDSTART+7  Col: 1-80) | 
|---|
| 13 | N SDCLOEY,SDCNI,SDCNT,SDCTI,SDCTIS,SDCTS,SDEND,SDLINE,SDNA,SDVAL,X | 
|---|
| 14 | S SDLINE=SDSTART,SDEND=SDSTART+7 | 
|---|
| 15 | D SET(SDARY,SDLINE," CLASSIFICATION ",5,IORVON,IORVOFF,"","","",.SDTOT) | 
|---|
| 16 | D CLASK^SDCO2(SDOE,.SDCLOEY) | 
|---|
| 17 | D SET(SDARY,SDLINE,"["_$S($D(SDCLOEY):"Required",1:"Not Required")_"]",24,"","","","","",.SDTOT) | 
|---|
| 18 | S SDCNT=0,SDCTIS=$$SEQ^SDCO21 | 
|---|
| 19 | F SDCTS=1:1 S SDCTI=+$P(SDCTIS,",",SDCTS) Q:'SDCTI  D | 
|---|
| 20 | .S SDCNT=SDCNT+1,SDLINE=SDLINE+1 | 
|---|
| 21 | .S:$D(SDCLOEY(SDCTI)) SDVAL=$$VAL^SDCODD(SDCTI,$P(SDCLOEY(SDCTI),"^",2)),SDNA=+$P(SDCLOEY(SDCTI),"^",3) | 
|---|
| 22 | .S X=$S('$D(SDCLOEY(SDCTI)):"Not Applicable",$$COMDT^SDCOU(SDOE)&(SDVAL=""):"Not Applicable",SDVAL="":"Unanswered",1:SDVAL) | 
|---|
| 23 | .D SET(SDARY,SDLINE,SDCNT_"  "_$J($P($G(^SD(409.41,SDCTI,0)),"^",6)_": ",32)_X,2,"","","CL",SDCNT,+$G(SDCLOEY(SDCTI))_"^"_SDCTI,.SDTOT) | 
|---|
| 24 | F SDLINE=SDLINE+1:1:SDEND D SET(SDARY,SDLINE,"",1,"","","","","",.SDTOT) | 
|---|
| 25 | Q | 
|---|
| 26 | ; | 
|---|
| 27 | PR(SDARY,SDOE,SDSTART,SDTOT) ;Build Provider (Pg: 1  Row: SDSTART+8-END  Col: 1-40) | 
|---|
| 28 | N SDCNT,SDLINE,SDPR,SDVPRV | 
|---|
| 29 | S SDLINE=SDSTART+8 | 
|---|
| 30 | D SET(SDARY,SDLINE," PROVIDER ",5,IORVON,IORVOFF,"","","",.SDTOT) | 
|---|
| 31 | D SET(SDARY,SDLINE,"["_$S($$PRASK^SDCO3(SDOE)=1:"Required",1:"Not Required")_"]",18,"","","","","",.SDTOT) | 
|---|
| 32 | ; | 
|---|
| 33 | ; -- get provider data | 
|---|
| 34 | D GETPRV^SDOE(SDOE,"SDPR") | 
|---|
| 35 | S (SDCNT,SDVPRV)=0 | 
|---|
| 36 | F  S SDVPRV=$O(SDPR(SDVPRV)) Q:'SDVPRV  D | 
|---|
| 37 | . S SDCNT=SDCNT+1 | 
|---|
| 38 | . S SDLINE=SDLINE+1 | 
|---|
| 39 | . D SET(SDARY,SDLINE,SDCNT_"  "_$$PR^SDCO31(+SDPR(SDVPRV)),2,"","","PR",SDCNT,SDVPRV_"^"_+SDPR(SDVPRV),.SDTOT) | 
|---|
| 40 | Q | 
|---|
| 41 | ; | 
|---|
| 42 | DX(SDARY,SDOE,SDSTART,SDTOT) ;Build Diagnosis (Pg: 1  Row: SDSTART+8-END  Col: 42-80) | 
|---|
| 43 | N SDCNT,SDDXS,SDDXD,SDVPOV,SDLINE,ICDVDT | 
|---|
| 44 | S SDLINE=SDSTART+8 | 
|---|
| 45 | D SET(SDARY,SDLINE," DIAGNOSIS ",45,IORVON,IORVOFF,"","","",.SDTOT) | 
|---|
| 46 | D SET(SDARY,SDLINE,"["_$S($$DXASK^SDCO4(SDOE)=1:"Required",1:"Not Required")_"]",59,"","","","","",.SDTOT) | 
|---|
| 47 | ; | 
|---|
| 48 | ; -- get dxs data | 
|---|
| 49 | D GETDX^SDOE(SDOE,"SDDXS") | 
|---|
| 50 | S (SDCNT,SDVPOV)=0 | 
|---|
| 51 | F  S SDVPOV=$O(SDDXS(SDVPOV)) Q:'SDVPOV  D | 
|---|
| 52 | . S SDCNT=SDCNT+1 | 
|---|
| 53 | . S SDLINE=SDLINE+1 | 
|---|
| 54 | . S ICDVDT=$S($P(SDDXS(SDVPOV),"^",3)'="":$$GET1^DIQ(9000010,$P(SDDXS(SDVPOV),"^",3),.01,"I"),1:"") | 
|---|
| 55 | . S SDDXD=$$DX^SDCO41(+SDDXS(SDVPOV),ICDVDT) | 
|---|
| 56 | . D SET(SDARY,SDLINE,SDCNT_"  "_$P(SDDXD,"^"),42,"","","","","",.SDTOT) | 
|---|
| 57 | . D SET(SDARY,SDLINE,$P(SDDXD,"^",2),55,"","","DX",SDCNT,SDVPOV_"^"_+SDDXS(SDVPOV),.SDTOT) | 
|---|
| 58 | Q | 
|---|
| 59 | ; | 
|---|
| 60 | SC(SDARY,SDOEP,SDSTART,SDTOT) ;Build Stop Codes (Pg: 2  Row: SDTOT+1  Col: 1-80) | 
|---|
| 61 | N SDLINE,SDONE | 
|---|
| 62 | F SDLINE=SDTOT+1:1:SDSTART+VALM("LINES")+1 D SET(SDARY,SDLINE,"",1,"","","","","",.SDTOT) | 
|---|
| 63 | D SET(SDARY,SDLINE," STOP CODES ",5,IORVON,IORVOFF,"","","",.SDTOT) | 
|---|
| 64 | D SET(SDARY,SDLINE,"[Stop Codes Not Required / Procedures Required]",28,"","","","","",.SDTOT) | 
|---|
| 65 | D AE(SDARY,SDOEP,.SDLINE,.SDTOT,.SDONE) | 
|---|
| 66 | S SDOE=0 | 
|---|
| 67 | F  S SDOE=$O(^SCE("APAR",SDOEP,SDOE)) Q:'SDOE  D AE(SDARY,SDOE,.SDLINE,.SDTOT,.SDONE) | 
|---|
| 68 | Q | 
|---|
| 69 | ; | 
|---|
| 70 | AE(SDARY,SDOE,SDLINE,SDTOT,SDONE) ; -- add/edits | 
|---|
| 71 | N SDOE0,SDT,DFN,SDVIEN,CPTS,SDCNT,SDVCPT0,SDVCPT,SDSCD0,X | 
|---|
| 72 | S SDOE0=$G(^SCE(+SDOE,0)) | 
|---|
| 73 | S SDT=+SDOE0 | 
|---|
| 74 | S DFN=+$P(SDOE0,"^",2) | 
|---|
| 75 | S SDSC=+$P(SDOE0,U,3) | 
|---|
| 76 | S SDCL=+$P(SDOE0,U,4) | 
|---|
| 77 | S SDVIEN=+$P(SDOE0,U,5) | 
|---|
| 78 | ; | 
|---|
| 79 | ; -- quit if visit already processed | 
|---|
| 80 | G:$D(SDONE(SDVIEN)) AEQ | 
|---|
| 81 | ; | 
|---|
| 82 | S SDSCD0=$G(^DIC(40.7,SDSC,0)) | 
|---|
| 83 | S SDLINE=SDLINE+1 | 
|---|
| 84 | D SET(SDARY,SDLINE,$P(SDSCD0,"^",2)_"  "_$E($P(SDSCD0,"^"),1,30),5,"","","","","",.SDTOT) | 
|---|
| 85 | ; | 
|---|
| 86 | ; -- get cpts and loop | 
|---|
| 87 | D GETCPT^SDOE(SDOE,"CPTS") | 
|---|
| 88 | S (SDCNT,SDVCPT)=0 | 
|---|
| 89 | N MODINFO,MODPTR,MODTEXT,PTR,MODCODE,CPTINFO,ICPTVDT | 
|---|
| 90 | F  S SDVCPT=+$O(CPTS(SDVCPT)) Q:'SDVCPT  D | 
|---|
| 91 | .; S SDVCPT0=$G(CPTS(SDVCPT)) | 
|---|
| 92 | .; S SDCNT=SDCNT+1 | 
|---|
| 93 | . S SDLINE=SDLINE+1 | 
|---|
| 94 | . D SET(SDARY,SDLINE,"Procedure(s):",12,"","","","","",.SDTOT) | 
|---|
| 95 | .; | 
|---|
| 96 | .; IF $D(^ICPT(+SDVCPT0,0)) S X=^(0) D | 
|---|
| 97 | .; N CPTINFO | 
|---|
| 98 | . S ICPTVDT=$S($P(CPTS(SDVCPT),"^",3)'="":$$GET1^DIQ(9000010,$P(CPTS(SDVCPT),"^",3),.01,"I"),1:"") | 
|---|
| 99 | . S CPTINFO=$$CPT^ICPTCOD(+$G(CPTS(SDVCPT)),ICPTVDT,1) | 
|---|
| 100 | . S:CPTINFO>0 X=$P(CPTINFO,"^",2,99),X=$P(X,"^")_" x "_$P($G(CPTS(SDVCPT)),"^",16)_"  "_$P(X,"^",2) | 
|---|
| 101 | . S:CPTINFO'>0 X="Procedure not defined" | 
|---|
| 102 | . ; | 
|---|
| 103 | . D SET(SDARY,SDLINE,$E(X,1,40),27,"","","","","",.SDTOT) | 
|---|
| 104 | . ; | 
|---|
| 105 | . ;Retrieve Procedure (CPT) Codes and associated Modifiers | 
|---|
| 106 | . S PTR=0 | 
|---|
| 107 | . F  S PTR=+$O(CPTS(SDVCPT,1,PTR)) Q:'PTR  D | 
|---|
| 108 | . . S MODPTR=$G(CPTS(SDVCPT,1,PTR,0)) | 
|---|
| 109 | . . Q:'MODPTR | 
|---|
| 110 | . . S MODINFO=$$MOD^ICPTMOD(MODPTR,"I",ICPTVDT,1) | 
|---|
| 111 | . . Q:MODINFO'>0 | 
|---|
| 112 | . . S MODCODE="-"_$P(MODINFO,"^",2) | 
|---|
| 113 | . . S MODTEXT=$P(MODINFO,"^",3) | 
|---|
| 114 | . . S SDLINE=SDLINE+1 | 
|---|
| 115 | . . D SET(SDARY,SDLINE,MODCODE,29,"","","","","",.SDTOT) | 
|---|
| 116 | . . D SET(SDARY,SDLINE,MODTEXT,38,"","","","","",.SDTOT) | 
|---|
| 117 | . . Q | 
|---|
| 118 | ; | 
|---|
| 119 | ; -- set indicator that visit was processed | 
|---|
| 120 | S SDONE(SDVIEN)="" | 
|---|
| 121 | AEQ Q | 
|---|
| 122 | ; | 
|---|
| 123 | SET(SDARY,LINE,TEXT,COL,ON,OFF,SDSUB,SDCNT,SDATA,SDTOT) ; -- set display array | 
|---|
| 124 | N X | 
|---|
| 125 | S:LINE>SDTOT SDTOT=LINE | 
|---|
| 126 | S X=$S($D(^TMP(SDARY,$J,LINE,0)):^(0),1:"") | 
|---|
| 127 | S ^TMP(SDARY,$J,LINE,0)=$$SETSTR^VALM1(TEXT,X,COL,$L(TEXT)) | 
|---|
| 128 | D:$G(ON)]""!($G(OFF)]"") CNTRL^VALM10(LINE,COL,$L(TEXT),$G(ON),$G(OFF)) | 
|---|
| 129 | S:$G(SDSUB)]"" ^TMP("SDCOIDX",$J,SDSUB,SDCNT,SDLINE)=SDATA,^TMP("SDCOIDX",$J,SDSUB,0)=SDCNT | 
|---|
| 130 | Q | 
|---|