PSO53 ;BHM/DB - API FOR PATIENT STATUS FILE ;8 JUN 05
 ;;7.0;OUTPATIENT PHARMACY;**213,245**;DEC 1997;Build 20
PSO(PSOIEN,PSOTXT,LIST) ;
 N DA,DIQ,DR,X,I,DIC
 I $G(LIST)'="" K ^TMP($J,LIST)
 I $G(PSOIEN)="",$G(PSOTXT)="",$G(LIST)="" Q
 I $G(PSOIEN)="",$G(PSOTXT)="",$G(LIST)'="" S ^TMP($J,LIST,0)="-1^NO DATA FOUND" Q
 I $G(LIST)="" Q
 I $G(PSOIEN)'>0,$G(PSOTXT)'="" S DA=$O(^PS(53,"B",PSOTXT,0)) I DA'>0 S ^TMP($J,LIST,0)="-1^NO DATA FOUND" Q
 I $G(DA)'>0,$G(PSOIEN)>0 S DA=PSOIEN
 K ^UTILITY("DIQ1",$J),DIC S DIC=53,DR=".01;2;3;4;5;6;15;16",DIQ(0)="IE" D EN^DIQ1
 I '$D(^UTILITY("DIQ1",$J)) S ^TMP($J,LIST,PSOIEN,0)="-1^NO DATA FOUND" Q
 F X=.01,2,3,4,5,6,15,16 S ^TMP($J,LIST,DA,X)=^UTILITY("DIQ1",$J,53,DA,X,"I")
 S PSOTXT=$G(^UTILITY("DIQ1",$J,53,DA,.01,"E"))
 F X=5,6,15,16 S ^TMP($J,LIST,DA,X)=$S(^UTILITY("DIQ1",$J,53,DA,X,"E")'="":^TMP($J,LIST,DA,X)_"^"_^UTILITY("DIQ1",$J,53,DA,X,"E"),1:"")
 K ^UTILITY("DIQ1",$J) S ^TMP($J,LIST,"B",PSOTXT,DA)="",^TMP($J,LIST,DA,0)=$G(^TMP($J,LIST,DA,0))+1
 K DA,DIC,DIQ,DA,DR,X Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSO53   1042     printed  Sep 23, 2025@19:59:21                                                                                                                                                                                                       Page 2
PSO53     ;BHM/DB - API FOR PATIENT STATUS FILE ;8 JUN 05
 +1       ;;7.0;OUTPATIENT PHARMACY;**213,245**;DEC 1997;Build 20
PSO(PSOIEN,PSOTXT,LIST) ;
 +1        NEW DA,DIQ,DR,X,I,DIC
 +2        IF $GET(LIST)'=""
               KILL ^TMP($JOB,LIST)
 +3        IF $GET(PSOIEN)=""
               IF $GET(PSOTXT)=""
                   IF $GET(LIST)=""
                       QUIT 
 +4        IF $GET(PSOIEN)=""
               IF $GET(PSOTXT)=""
                   IF $GET(LIST)'=""
                       SET ^TMP($JOB,LIST,0)="-1^NO DATA FOUND"
                       QUIT 
 +5        IF $GET(LIST)=""
               QUIT 
 +6        IF $GET(PSOIEN)'>0
               IF $GET(PSOTXT)'=""
                   SET DA=$ORDER(^PS(53,"B",PSOTXT,0))
                   IF DA'>0
                       SET ^TMP($JOB,LIST,0)="-1^NO DATA FOUND"
                       QUIT 
 +7        IF $GET(DA)'>0
               IF $GET(PSOIEN)>0
                   SET DA=PSOIEN
 +8        KILL ^UTILITY("DIQ1",$JOB),DIC
           SET DIC=53
           SET DR=".01;2;3;4;5;6;15;16"
           SET DIQ(0)="IE"
           DO EN^DIQ1
 +9        IF '$DATA(^UTILITY("DIQ1",$JOB))
               SET ^TMP($JOB,LIST,PSOIEN,0)="-1^NO DATA FOUND"
               QUIT 
 +10       FOR X=.01,2,3,4,5,6,15,16
               SET ^TMP($JOB,LIST,DA,X)=^UTILITY("DIQ1",$JOB,53,DA,X,"I")
 +11       SET PSOTXT=$GET(^UTILITY("DIQ1",$JOB,53,DA,.01,"E"))
 +12       FOR X=5,6,15,16
               SET ^TMP($JOB,LIST,DA,X)=$SELECT(^UTILITY("DIQ1",$JOB,53,DA,X,"E")'="":^TMP($JOB,LIST,DA,X)_"^"_^UTILITY("DIQ1",$JOB,53,DA,X,"E"),1:"")
 +13       KILL ^UTILITY("DIQ1",$JOB)
           SET ^TMP($JOB,LIST,"B",PSOTXT,DA)=""
           SET ^TMP($JOB,LIST,DA,0)=$GET(^TMP($JOB,LIST,DA,0))+1
 +14       KILL DA,DIC,DIQ,DA,DR,X
           QUIT