| 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
 | 
|---|